Fix the wiretap fuzz failure reported in https://bugs.wireshark.org/bugzilla/show_bug...
authorJeff Morriss <jeff.morriss.ws@gmail.com>
Tue, 4 Jun 2013 00:50:05 +0000 (00:50 -0000)
committerJeff Morriss <jeff.morriss.ws@gmail.com>
Tue, 4 Jun 2013 00:50:05 +0000 (00:50 -0000)
Check that the record length we got out of the file is at least as big as
stats block trailer; if not, declare the file bad.

svn path=/trunk/; revision=49739

wiretap/vwr.c

index 564f4f15b0f680c7894ee526225bde57b4aac00f..2617466df2bc175976a2b392a6e4ba51a2ed64bd 100644 (file)
@@ -711,8 +711,14 @@ static gboolean vwr_read(wtap *wth, int *err, gchar **err_info, gint64 *data_off
         return(FALSE);
     }
 
+    if (rec_size < (int)vwr->STATS_LEN) {
+        *err = file_error(wth->fh, err_info);
+        if (*err == 0)
+            *err_info = g_strdup_printf("vwr: Invalid record length %d (must be at least %u)", rec_size, vwr->STATS_LEN);
+            *err = WTAP_ERR_BAD_FILE;
+        return(FALSE);
+    }
     
-
     /* before writing anything out, make sure the buffer has enough space for everything */
     if ((vwr->FPGA_VERSION == vVW510021_W_FPGA) || (vwr->FPGA_VERSION == vVW510006_W_FPGA) )
     /* frames are always 802.11 with an extended radiotap header */