aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/vwr.c
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2013-11-21 15:42:22 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2013-11-21 15:42:22 +0000
commitd5433fd9b65d2b176721c440d445310f9868f6ea (patch)
tree78d0ba4f65c7cf32ea56ae3c7b011ce7d100104c /wiretap/vwr.c
parent2e983ba89f9c9be17ca6ed89c83a9e32457626ce (diff)
Cope with empty VWR files (bug 9428)
svn path=/trunk/; revision=53475
Diffstat (limited to 'wiretap/vwr.c')
-rw-r--r--wiretap/vwr.c11
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]);
}