Tim Waugh 11315e
diff -up cups-1.4.2/backend/network.c.negative-snmp-string-length cups-1.4.2/backend/network.c
Tim Waugh 11315e
--- cups-1.4.2/backend/network.c.negative-snmp-string-length	2009-08-31 19:45:43.000000000 +0100
Tim Waugh f0ab92
+++ cups-1.4.2/backend/network.c	2009-12-08 11:14:45.010363459 +0000
Tim Waugh 11315e
@@ -170,9 +170,13 @@ backendNetworkSideCB(
Tim Waugh 11315e
 
Tim Waugh 11315e
 	        case CUPS_ASN1_BIT_STRING :
Tim Waugh 11315e
 	        case CUPS_ASN1_OCTET_STRING :
Tim Waugh 11315e
-		    i = (int)(sizeof(data) - (dataptr - data));
Tim Waugh 11315e
-		    if (packet.object_value.string.num_bytes < i)
Tim Waugh 11315e
+		    if (packet.object_value.string.num_bytes < 0)
Tim Waugh 11315e
+		      i = 0;
Tim Waugh 11315e
+		    else if (packet.object_value.string.num_bytes < 
Tim Waugh 11315e
+			     (sizeof(data) - (dataptr - data)))
Tim Waugh 11315e
 		      i = packet.object_value.string.num_bytes;
Tim Waugh 11315e
+		    else
Tim Waugh 11315e
+		      i = (int)(sizeof(data) - (dataptr - data));
Tim Waugh 11315e
 
Tim Waugh 11315e
 		    memcpy(dataptr, packet.object_value.string.bytes, i);
Tim Waugh 11315e
 
Tim Waugh f0ab92
diff -up cups-1.4.2/backend/snmp-supplies.c.negative-snmp-string-length cups-1.4.2/backend/snmp-supplies.c
Tim Waugh f0ab92
--- cups-1.4.2/backend/snmp-supplies.c.negative-snmp-string-length	2009-08-31 17:34:06.000000000 +0100
Tim Waugh f0ab92
+++ cups-1.4.2/backend/snmp-supplies.c	2009-12-08 11:15:05.505362685 +0000
Tim Waugh f0ab92
@@ -232,6 +232,8 @@ backendSNMPSupplies(
Tim Waugh f0ab92
     if (packet.object_value.string.num_bytes == 2)
Tim Waugh f0ab92
       new_state = (packet.object_value.string.bytes[0] << 8) |
Tim Waugh f0ab92
 		  packet.object_value.string.bytes[1];
Tim Waugh f0ab92
+    else if (packet.object_value.string.num_bytes == 1)
Tim Waugh f0ab92
+      new_state = (packet.object_value.string.bytes[0] << 8);
Tim Waugh f0ab92
     else
Tim Waugh f0ab92
       new_state = 0;
Tim Waugh f0ab92