From 10bd2bb48a2291f3d7edc33fc3985c8cb4f7fd41 Mon Sep 17 00:00:00 2001 From: Alexandre Ratchov Date: Tue, 16 Oct 2012 09:47:48 +0200 Subject: [PATCH] panic() if read buffer overruns --- sndiod/sock.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sndiod/sock.c b/sndiod/sock.c index 52b1617..7945b93 100644 --- a/sndiod/sock.c +++ b/sndiod/sock.c @@ -499,6 +499,17 @@ sock_rdata(struct sock *f) buf = &f->midi->ibuf; data = abuf_wgetblk(buf, &count) + f->rsize - f->rtodo; +#ifdef DEBUG + /* + * XXX: this can happen in MIDIOUT mode, since we dont + * have flow control + */ + if (count < f->rtodo) { + sock_log(f); + log_puts(": data read buffer overrun\n"); + panic(); + } +#endif n = read(f->fd, data, f->rtodo); if (n < 0) { if (errno == EFAULT) {