Blob Blame History Raw
diff -ur chntpw-080526/ntreg.c chntpw-080526.novalue/ntreg.c
--- chntpw-080526/ntreg.c	2009-06-08 14:44:09.000000000 +0100
+++ chntpw-080526.novalue/ntreg.c	2009-06-08 14:43:48.000000000 +0100
@@ -2667,21 +2667,23 @@
 	      value = (char *)get_val_data(hdesc, nkofs, vex.name, vex.type, TPF_VK_EXACT);
 	      len = get_val_len(hdesc, nkofs, vex.name, TPF_VK_EXACT);
 
-	      if (vex.type == REG_BINARY) {
-		fprintf(file, "\"%s\"=hex:", vex.name);
-	      } else {
-		fprintf(file, "\"%s\"=hex(%x):", vex.name, vex.type);
-	      }
-	      byte = 0;
-	      while (byte < len) { /* go byte by byte.. probably slow.. */
-		fprintf(file, "%02x,", (unsigned char)value[byte]);
-		byte++;
-		if (!(byte % 20)) fprintf(file, "\\\r\n  ");
-	      }
-	      fprintf(file, "%02x\r\n", (unsigned char)value[byte]);
-            }
+	      if (value && len >= 0) {
+		if (vex.type == REG_BINARY) {
+		  fprintf(file, "\"%s\"=hex:", vex.name);
+		} else {
+		  fprintf(file, "\"%s\"=hex(%x):", vex.name, vex.type);
+		}
+		byte = 0;
+		while (byte < len) { /* go byte by byte.. probably slow.. */
+		  fprintf(file, "%02x,", (unsigned char)value[byte]);
+		  byte++;
+		  if (!(byte % 20)) fprintf(file, "\\\r\n  ");
+		}
+		fprintf(file, "%02x\r\n", (unsigned char)value[byte]);
 
-            FREE(vex.name);
+		FREE(vex.name);
+	      }
+	    }
         }
     }