Sophie

Sophie

distrib > Mandriva > 2007.0 > x86_64 > by-pkgid > bc717b9e96f4070e178e261ab5007579 > files > 18

cups-1.2.4-1.8mdv2007.0.src.rpm

diff -urNad cupsys-1.2.8~/backend/snmp.c cupsys-1.2.8/backend/snmp.c
--- cupsys-1.2.8~/backend/snmp.c	2007-01-03 10:51:27.000000000 -0800
+++ cupsys-1.2.8/backend/snmp.c	2008-01-07 16:16:20.000000000 -0800
@@ -972,10 +972,24 @@
     char          *string,		/* I  - String buffer */
     int           strsize)		/* I  - String buffer size */
 {
-  if (length < strsize)
+  if (length < 0)
   {
-    memcpy(string, *buffer, length);
-    string[length] = '\0';
+   /*
+    * Disallow negative lengths!
+    */
+
+    fprintf(stderr, "ERROR: Bad ASN1 string length %d!\n", length);
+    *string = '\0';
+  }
+  else if (length < strsize)
+  {
+   /*
+    * String is smaller than the buffer...
+    */
+
+    if (length > 0)
+      memcpy(string, *buffer, length);
+  string[length] = '\0';
   }
   else
   {
@@ -983,7 +997,8 @@
     string[strsize - 1] = '\0';
   }
 
-  (*buffer) += length;
+  if (length > 0)
+    (*buffer) += length;
 
   return (string);
 }