diff options
author | Jacob Moody <moody@posixcafe.org> | 2022-05-28 17:23:41 +0000 |
---|---|---|
committer | Jacob Moody <moody@posixcafe.org> | 2022-05-28 17:23:41 +0000 |
commit | b75e549126641108880a24a4ff0b38171eb1a856 (patch) | |
tree | aa08f278aaa596fe7172c1894751b50bdc6b4d9b /sys/src/9/port | |
parent | 01a6de812c2fd38c9a28036300e3c2c7dc8441f5 (diff) |
kernel: be more careful about argc for /dev/drivers writes
Not crashing on 'chdev &' is important.
Diffstat (limited to 'sys/src/9/port')
-rw-r--r-- | sys/src/9/port/devcons.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/src/9/port/devcons.c b/sys/src/9/port/devcons.c index 756a47936..62387dbbb 100644 --- a/sys/src/9/port/devcons.c +++ b/sys/src/9/port/devcons.c @@ -705,18 +705,22 @@ conswrite(Chan *c, void *va, long n, vlong off) 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); |