Print informations even on short reads. Bug 9310 (https://bugs.wireshark.org/bugzill...
authorMichael Mann <mmann78@netscape.net>
Tue, 22 Oct 2013 14:52:28 +0000 (14:52 -0000)
committerMichael Mann <mmann78@netscape.net>
Tue, 22 Oct 2013 14:52:28 +0000 (14:52 -0000)
Before this patch, an error message would be printed when the file
appears to be truncated. After this patch, a warning will be printed,
but the information is still displayed. In both cases, capinfos exits
with status code 1.

From Peter Wu

svn path=/trunk/; revision=52762

capinfos.c

index 976ec63ab10efb2845deaf17cc98dd526f8dad0f..6dfb994d0e864ea6e8d80b2b14f6c60e2a4fdfce 100644 (file)
@@ -826,6 +826,7 @@ print_stats_table(const gchar *filename, capture_info *cf_info)
 static int
 process_cap_file(wtap *wth, const char *filename)
 {
+  int                   status = 0;
   int                   err;
   gchar                *err_info;
   gint64                size;
@@ -907,16 +908,24 @@ process_cap_file(wtap *wth, const char *filename)
         packet, filename, wtap_strerror(err));
     switch (err) {
 
+      case WTAP_ERR_SHORT_READ:
+        status = 1;
+        fprintf(stderr,
+          "  (will continue anyway, checksums might be incorrect)\n");
+        break;
+
       case WTAP_ERR_UNSUPPORTED:
       case WTAP_ERR_UNSUPPORTED_ENCAP:
       case WTAP_ERR_BAD_FILE:
       case WTAP_ERR_DECOMPRESS:
         fprintf(stderr, "(%s)\n", err_info);
         g_free(err_info);
-        break;
+        /* fallthrough */
+
+      default:
+        g_free(cf_info.encap_counts);
+        return 1;
     }
-    g_free(cf_info.encap_counts);
-    return 1;
   }
 
   /* File size */
@@ -1001,7 +1010,7 @@ process_cap_file(wtap *wth, const char *filename)
   g_free(cf_info.encap_counts);
   g_free(cf_info.comment);
 
-  return 0;
+  return status;
 }
 
 static void