shithub: riscv

Download patch

ref: b75e549126641108880a24a4ff0b38171eb1a856
parent: 01a6de812c2fd38c9a28036300e3c2c7dc8441f5
author: Jacob Moody <moody@posixcafe.org>
date: Sat May 28 13:23:41 EDT 2022

kernel: be more careful about argc for /dev/drivers writes

Not crashing on 'chdev &' is important.

--- a/sys/src/9/port/devcons.c
+++ b/sys/src/9/port/devcons.c
@@ -705,18 +705,22 @@
 			error(Ebadarg);
 		if(ct->index != CMchdev)
 			error(Ebadarg);
-		if(cb->nf < 2 || cb->nf > 3)
+		if(cb->nf == 1)
 			error(Ebadarg);
 
 		invert = 1;
-		a = cb->f[2];
+		a = "";
 		switch(cb->f[1][0]){
 		case '&':
+			if(cb->nf != 3)
+				error(Ebadarg);
+			a = cb->f[2];
 			if(cb->f[1][1] == '~')
 				invert--;
 			break;
 		case '~':
-			a = "";
+			if(cb->nf != 2)
+				error(Ebadarg);
 			break;
 		default:
 			error(Ebadarg);