Author: chromatic
Date: Wed Nov 26 17:16:05 2008
New Revision: 33248

Modified:
   trunk/src/io/buffer.c

Log:
[IO] Ensured that buffered reads into a STRING never set a negative string
length.  See CID #148 from Coverity Scan.

Modified: trunk/src/io/buffer.c
==============================================================================
--- trunk/src/io/buffer.c       (original)
+++ trunk/src/io/buffer.c       Wed Nov 26 17:16:05 2008
@@ -226,14 +226,16 @@
 size_t
 Parrot_io_fill_readbuf(PARROT_INTERP, ARGMOD(PMC *filehandle))
 {
-    size_t got;
-    PIOOFF_T pos = Parrot_io_get_file_position(interp, filehandle);
-    STRING fake, *s;
+    size_t   got;
+    STRING   fake;
+    STRING  *s    = &fake;
+    PIOOFF_T pos  = Parrot_io_get_file_position(interp, filehandle);
+
     fake.strstart = (char *)Parrot_io_get_buffer_start(interp, filehandle);
     fake.bufused  = Parrot_io_get_buffer_size(interp, filehandle);
-    s = &fake;
 
-    got = PIO_READ(interp, filehandle, &s);
+    got           = PIO_READ(interp, filehandle, &s);
+
     /* buffer-filling does not change fileposition */
     Parrot_io_set_file_position(interp, filehandle, pos);
 
@@ -380,8 +382,8 @@
 Parrot_io_peek_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle),
         ARGOUT(STRING **buf))
 {
-    size_t len = 1;
-    size_t avail = 0;
+    UINTVAL len   = 1;
+    size_t  avail = 0;
 
     INTVAL         buffer_flags = Parrot_io_get_buffer_flags(interp, 
filehandle);
     unsigned char *buffer_next  = Parrot_io_get_buffer_next(interp, 
filehandle);

Reply via email to