Print informations even on short reads. Bug 9310 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9310)

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
This commit is contained in:
Michael Mann 2013-10-22 14:52:28 +00:00
parent a7fbfd70cf
commit ab78bb54c4
1 changed files with 13 additions and 4 deletions

View File

@ -826,6 +826,7 @@ print_stats_table(const gchar *filename, capture_info *cf_info)
static int static int
process_cap_file(wtap *wth, const char *filename) process_cap_file(wtap *wth, const char *filename)
{ {
int status = 0;
int err; int err;
gchar *err_info; gchar *err_info;
gint64 size; gint64 size;
@ -907,16 +908,24 @@ process_cap_file(wtap *wth, const char *filename)
packet, filename, wtap_strerror(err)); packet, filename, wtap_strerror(err));
switch (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:
case WTAP_ERR_UNSUPPORTED_ENCAP: case WTAP_ERR_UNSUPPORTED_ENCAP:
case WTAP_ERR_BAD_FILE: case WTAP_ERR_BAD_FILE:
case WTAP_ERR_DECOMPRESS: case WTAP_ERR_DECOMPRESS:
fprintf(stderr, "(%s)\n", err_info); fprintf(stderr, "(%s)\n", err_info);
g_free(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 */ /* File size */
@ -1001,7 +1010,7 @@ process_cap_file(wtap *wth, const char *filename)
g_free(cf_info.encap_counts); g_free(cf_info.encap_counts);
g_free(cf_info.comment); g_free(cf_info.comment);
return 0; return status;
} }
static void static void