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))
|
if (!siofile_rec(f))
|
||||||
return;
|
return;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (f->rused < d->round) {
|
f->rused -= d->round;
|
||||||
|
if (f->rused >= d->round) {
|
||||||
siofile_log(f);
|
siofile_log(f);
|
||||||
log_puts(": missed clock tick, rused = ");
|
log_puts(": rec hw xrun, rused = ");
|
||||||
log_puti(f->rused);
|
log_puti(f->rused);
|
||||||
log_puts("/");
|
log_puts("/");
|
||||||
log_puti(d->bufsz);
|
log_puti(d->bufsz);
|
||||||
log_puts("\n");
|
log_puts("\n");
|
||||||
panic();
|
panic();
|
||||||
}
|
}
|
||||||
f->rused -= d->round;
|
if (f->rused < 0 || f->rused >= d->bufsz) {
|
||||||
if (f->rused < 0) {
|
/* device driver or libsndio bug */
|
||||||
/* rec buffer size is not known */
|
|
||||||
siofile_log(f);
|
siofile_log(f);
|
||||||
log_puts(": out of bounds rused = ");
|
log_puts(": out of bounds rused = ");
|
||||||
log_puti(f->rused);
|
log_puti(f->rused);
|
||||||
|
@ -415,7 +415,7 @@ siofile_run(void *arg)
|
||||||
return;
|
return;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
f->pused += d->round;
|
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);
|
siofile_log(f);
|
||||||
log_puts(": play hw xrun, pused = ");
|
log_puts(": play hw xrun, pused = ");
|
||||||
log_puti(f->pused);
|
log_puti(f->pused);
|
||||||
|
@ -424,7 +424,7 @@ siofile_run(void *arg)
|
||||||
log_puts("\n");
|
log_puts("\n");
|
||||||
}
|
}
|
||||||
if (f->pused < 0 || f->pused > d->bufsz) {
|
if (f->pused < 0 || f->pused > d->bufsz) {
|
||||||
/* this is a device drivers or libsndio bug */
|
/* device driver or libsndio bug */
|
||||||
siofile_log(f);
|
siofile_log(f);
|
||||||
log_puts(": out of bounds pused = ");
|
log_puts(": out of bounds pused = ");
|
||||||
log_puti(f->pused);
|
log_puti(f->pused);
|
||||||
|
|
Loading…
Reference in New Issue