DragonFlyBSD Kernel Audit
DF-1494 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/sound/midi/midi.c b/sys/dev/sound/midi/midi.c
--- a/sys/dev/sound/midi/midi.c
+++ b/sys/dev/sound/midi/midi.c
@@ -1035,6 +1035,11 @@
 		lockmgr(&midistat_lock, LK_RELEASE);
 		return EBADF;
 	}
+	if (uio->uio_offset < 0 ||
+	    uio->uio_offset >= sbuf_len(&midistat_sbuf)) {
+		lockmgr(&midistat_lock, LK_RELEASE);
+		return 0;
+	}
 	l = min(uio->uio_resid, sbuf_len(&midistat_sbuf) - uio->uio_offset);
 	err = 0;
 	if (l > 0) {