Revision: 48523
          http://brlcad.svn.sourceforge.net/brlcad/?rev=48523&view=rev
Author:   erikgreenwald
Date:     2012-01-12 16:50:36 +0000 (Thu, 12 Jan 2012)
Log Message:
-----------
fix up handling of length reading. Cov1459.

Modified Paths:
--------------
    brlcad/trunk/src/librt/db5_io.c

Modified: brlcad/trunk/src/librt/db5_io.c
===================================================================
--- brlcad/trunk/src/librt/db5_io.c     2012-01-12 16:48:41 UTC (rev 48522)
+++ brlcad/trunk/src/librt/db5_io.c     2012-01-12 16:50:36 UTC (rev 48523)
@@ -117,6 +117,7 @@
 int
 db5_decode_length(size_t *lenp, const unsigned char *cp, int format)
 {
+    *lenp = 0;
     switch (format) {
        case DB5HDR_WIDTHCODE_8BIT:
            *lenp = (*cp);
@@ -384,11 +385,12 @@
        bu_log("db5_get_raw_internal_fp(): fread lenbuf error\n");
        return -2;
     }
-    if (isdigit(*lenbuf) == 0) {
-       bu_log("db5_get_raw_internal_fp(): lenbuf is bad value: \"%s\"\n", 
lenbuf);
-       return -2;
+
+    used += db5_decode_length(&rip->object_length, lenbuf, 
rip->h_object_width);
+    if ( rip->object_length > UINTPTR_MAX>>3 ) {
+       bu_log("db5_get_raw_internal_fp() bad length read\n");
+       return -1;
     }
-    used += db5_decode_length(&rip->object_length, lenbuf, 
rip->h_object_width);
     rip->object_length <<= 3;  /* cvt 8-byte chunks to byte count */
 
     if ((size_t)rip->object_length < sizeof(struct db5_ondisk_header)) {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to