diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-12-11 21:02:14 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-12-11 21:02:14 +0100 |
commit | bedfd8f3617c47460c29907abb675e8fe1d842b2 (patch) | |
tree | 3daf356e4c765aee19a1d82daf51f0f26c197aec | |
parent | 45a5074b10266b82a03c9fd7a636672c34eb1f39 (diff) |
audio/pcmconv: check number of input channels
-rw-r--r-- | sys/src/cmd/audio/pcmconv/pcmconv.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/src/cmd/audio/pcmconv/pcmconv.c b/sys/src/cmd/audio/pcmconv/pcmconv.c index 188dd93c7..e2cbddb09 100644 --- a/sys/src/cmd/audio/pcmconv/pcmconv.c +++ b/sys/src/cmd/audio/pcmconv/pcmconv.c @@ -421,6 +421,9 @@ main(int argc, char *argv[]) exits(0); } + if(i.channels > nelem(ch)) + sysfatal("too many input channels %d", i.channels); + switch(i.fmt){ case 's': iconv = siconv; break; case 'u': iconv = uiconv; break; @@ -444,14 +447,14 @@ main(int argc, char *argv[]) obuf = sbrk(o.framesz * m); memset(ch, 0, sizeof(ch)); - for(k=0; k < i.channels && k < nelem(ch); k++) + for(k=0; k < i.channels; k++) chaninit(&ch[k], i.rate, o.rate, n); for(;;){ if(l >= 0 && l < r) r = l; n = cread(0, ibuf, r, i.framesz); - if(n < 0 || n > sizeof(ibuf)) + if(n < 0) sysfatal("read: %r"); if(l > 0) l -= n; |