Browse Source

Fix some logging on failed apply_ed_diff

Nick Mathewson 7 years ago
parent
commit
06017f35e8
1 changed files with 8 additions and 2 deletions
  1. 8 2
      src/or/consdiff.c

+ 8 - 2
src/or/consdiff.c

@@ -670,15 +670,15 @@ apply_ed_diff(smartlist_t *cons1, smartlist_t *diff)
     if (*endptr1 == ',') {
         end = (int)strtol(endptr1+1, &endptr2, 10);
         if (endptr2 == endptr1+1) {
-          goto error_cleanup;
           log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
               "an ed command was missing a range end line number.");
+          goto error_cleanup;
         }
         /* Incoherent range. */
         if (end <= start) {
-          goto error_cleanup;
           log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
               "an invalid range was found in an ed command.");
+          goto error_cleanup;
         }
 
     /* We'll take <n1> as <n1>,<n1> for simplicity. */
@@ -693,6 +693,12 @@ apply_ed_diff(smartlist_t *cons1, smartlist_t *diff)
       goto error_cleanup;
     }
 
+    if (*endptr2 == '\0') {
+      log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
+               "a line with no ed command was found");
+      goto error_cleanup;
+    }
+
     if (*(endptr2+1) != '\0') {
       log_warn(LD_CONSDIFF, "Could not apply consensus diff because "
           "an ed command longer than one char was found.");