summaryrefslogtreecommitdiffstats
path: root/sys/dev/audio.c
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2007-01-07 13:35:51 +0000
committermiod <miod@openbsd.org>2007-01-07 13:35:51 +0000
commit2f1d7e94f80a8b9abab986d04c2f1e15f928dfdc (patch)
treed12473b5beac1a1fcc312431e6334b89ff7f6607 /sys/dev/audio.c
parentmake the output when interrupting writing the log message consistent. (diff)
downloadwireguard-openbsd-2f1d7e94f80a8b9abab986d04c2f1e15f928dfdc.tar.xz
wireguard-openbsd-2f1d7e94f80a8b9abab986d04c2f1e15f928dfdc.zip
Protect against zero blocksize (causing a divide by zero) in audiogetinfo().
Diffstat (limited to 'sys/dev/audio.c')
-rw-r--r--sys/dev/audio.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/audio.c b/sys/dev/audio.c
index 45c3c903b6f..629b728de44 100644
--- a/sys/dev/audio.c
+++ b/sys/dev/audio.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: audio.c,v 1.53 2006/11/29 13:34:31 miod Exp $ */
+/* $OpenBSD: audio.c,v 1.54 2007/01/07 13:35:51 miod Exp $ */
/* $NetBSD: audio.c,v 1.119 1999/11/09 16:50:47 augustss Exp $ */
/*
@@ -2894,9 +2894,12 @@ audiogetinfo(sc, ai)
p->buffer_size = sc->sc_pr.bufsize;
r->buffer_size = sc->sc_rr.bufsize;
- ai->blocksize = sc->sc_pr.blksize;
- ai->hiwat = sc->sc_pr.usedhigh / sc->sc_pr.blksize;
- ai->lowat = sc->sc_pr.usedlow / sc->sc_pr.blksize;
+ if ((ai->blocksize = sc->sc_pr.blksize) != 0) {
+ ai->hiwat = sc->sc_pr.usedhigh / sc->sc_pr.blksize;
+ ai->lowat = sc->sc_pr.usedlow / sc->sc_pr.blksize;
+ } else {
+ ai->hiwat = ai->lowat = 0;
+ }
ai->mode = sc->sc_mode;
return (0);