diff options
author | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2013-11-21 15:42:22 +0000 |
---|---|---|
committer | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2013-11-21 15:42:22 +0000 |
commit | d5433fd9b65d2b176721c440d445310f9868f6ea (patch) | |
tree | 78d0ba4f65c7cf32ea56ae3c7b011ce7d100104c /wiretap/vwr.c | |
parent | 2e983ba89f9c9be17ca6ed89c83a9e32457626ce (diff) |
Cope with empty VWR files (bug 9428)
svn path=/trunk/; revision=53475
Diffstat (limited to 'wiretap/vwr.c')
-rw-r--r-- | wiretap/vwr.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/wiretap/vwr.c b/wiretap/vwr.c index 54203f2774..4786ae03e6 100644 --- a/wiretap/vwr.c +++ b/wiretap/vwr.c @@ -97,7 +97,6 @@ typedef struct { gint8 signalb; /* transmit power, +/- dBm */ gint8 signalc; /* transmit power, +/- dBm */ gint8 signald; /* transmit power, +/- dBm */ - guint8 pad; guint16 vw_flags; /* VeriWave-specific packet flags */ guint16 vw_ht_length; /* ht length (in plcp header)*/ guint16 vw_info; /* VeriWave-specific information */ @@ -809,7 +808,8 @@ static int vwr_get_fpga_version(wtap *wth, int *err, gchar **err_info) int f_len, v_type; guint16 data_length = 0; guint16 fpga_version; - + int valid_but_empty_file = -1; + filePos = file_tell(wth->fh); if (filePos == -1) { *err = file_error(wth->fh, err_info); @@ -838,6 +838,8 @@ static int vwr_get_fpga_version(wtap *wth, int *err, gchar **err_info) else if (v_type != VT_FRAME) { if (file_seek(wth->fh, f_len, SEEK_CUR, err) < 0) return -1; + else if (v_type == VT_CPMSG) + valid_but_empty_file = 1; } else { rec_size = f_len; @@ -938,6 +940,10 @@ static int vwr_get_fpga_version(wtap *wth, int *err, gchar **err_info) } } + // An empty file that + if (valid_but_empty_file > 0) + return(S3_W_FPGA); + *err = file_error(wth->fh, err_info); if (*err != 0 && *err != WTAP_ERR_SHORT_READ) return -1; @@ -1305,6 +1311,7 @@ static int parse_s2_W_stats(wtap *wth, guint8 *rec, int rec_size, ext_rtap_field rssi[i] = (s_start_ptr[4+i] >= 128) ? (s_start_ptr[4+i] - 256) : s_start_ptr[4+i]; } } + plcp_ptr = &(rec[16]); } |