shithub: riscv

Download patch

ref: 19b480838af1721b833f6cd7575e994a5d55071d
parent: 7d88d76bc42e2b3f3cabde82673af4107e951797
author: Jacob Moody <moody@posixcafe.org>
date: Sat May 27 19:06:42 EDT 2023

aux/kbdfs: error on invalid numerics in kbmap writes

--- a/sys/src/cmd/aux/kbdfs/kbdfs.c
+++ b/sys/src/cmd/aux/kbdfs/kbdfs.c
@@ -1252,7 +1252,7 @@
 				lp++;
 			for(e = lp; strchr("\t ", *e) == nil; e++)
 				;
-			if(e == lp)
+			if(e == lp || *e == '\0')
 				goto Badarg;
 			*e = '\0';
 			for(t = 0; t < nelem(layertab); t++){
@@ -1260,10 +1260,15 @@
 					continue;
 				break;
 			}
-			if(t == nelem(layertab))
-				t = strtoul(lp, nil, 0);
-			lp = e + 1;
-			sc = strtoul(lp, &lp, 0);
+			if(t == nelem(layertab)){
+				t = strtoul(lp, &e, 0);
+				if(e == lp)
+					goto Badarg;
+			}
+			e++;
+			sc = strtoul(e, &lp, 0);
+			if(e == lp)
+				goto Badarg;
 			while(*lp == ' ' || *lp == '\t')
 				lp++;
 			if((rp = kbmapent(t, sc)) == nil)