mirror of https://github.com/ericonr/sndio.git
tighter boundary checks
This commit is contained in:
parent
766895ba25
commit
0b0ca8995d
|
@ -376,18 +376,18 @@ siofile_run(void *arg)
|
|||
if (!siofile_rec(f))
|
||||
return;
|
||||
#ifdef DEBUG
|
||||
if (f->rused < d->round) {
|
||||
f->rused -= d->round;
|
||||
if (f->rused >= d->round) {
|
||||
siofile_log(f);
|
||||
log_puts(": missed clock tick, rused = ");
|
||||
log_puts(": rec hw xrun, rused = ");
|
||||
log_puti(f->rused);
|
||||
log_puts("/");
|
||||
log_puti(d->bufsz);
|
||||
log_puts("\n");
|
||||
panic();
|
||||
}
|
||||
f->rused -= d->round;
|
||||
if (f->rused < 0) {
|
||||
/* rec buffer size is not known */
|
||||
if (f->rused < 0 || f->rused >= d->bufsz) {
|
||||
/* device driver or libsndio bug */
|
||||
siofile_log(f);
|
||||
log_puts(": out of bounds rused = ");
|
||||
log_puti(f->rused);
|
||||
|
@ -415,7 +415,7 @@ siofile_run(void *arg)
|
|||
return;
|
||||
#ifdef DEBUG
|
||||
f->pused += d->round;
|
||||
if (d->prime == 0 && f->pused < d->bufsz - d->round) {
|
||||
if (d->prime == 0 && f->pused <= d->bufsz - d->round) {
|
||||
siofile_log(f);
|
||||
log_puts(": play hw xrun, pused = ");
|
||||
log_puti(f->pused);
|
||||
|
@ -424,7 +424,7 @@ siofile_run(void *arg)
|
|||
log_puts("\n");
|
||||
}
|
||||
if (f->pused < 0 || f->pused > d->bufsz) {
|
||||
/* this is a device drivers or libsndio bug */
|
||||
/* device driver or libsndio bug */
|
||||
siofile_log(f);
|
||||
log_puts(": out of bounds pused = ");
|
||||
log_puti(f->pused);
|
||||
|
|
Loading…
Reference in New Issue