in abuf_rgetblk() the ``start'' pointer may take a value beyond the
authorratchov <ratchov@openbsd.org>
Thu, 14 Aug 2008 10:02:10 +0000 (10:02 +0000)
committerratchov <ratchov@openbsd.org>
Thu, 14 Aug 2008 10:02:10 +0000 (10:02 +0000)
end of the buffer because periodic boundary conditions of the FIFO are
not met

ok jakemsr

usr.bin/aucat/abuf.c

index e6f4803..574b802 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: abuf.c,v 1.5 2008/08/14 09:46:36 ratchov Exp $        */
+/*     $OpenBSD: abuf.c,v 1.6 2008/08/14 10:02:10 ratchov Exp $        */
 /*
  * Copyright (c) 2008 Alexandre Ratchov <alex@caoua.org>
  *
@@ -97,6 +97,8 @@ abuf_rgetblk(struct abuf *buf, unsigned *rsize, unsigned ofs)
 
        start = buf->start + ofs;
        used = buf->used - ofs;
+       if (start >= buf->len)
+               start -= buf->len;
        count = buf->len - start;
        if (count > used)
                count = used;