aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap
diff options
context:
space:
mode:
authorMichael Tüxen <tuexen@fh-muenster.de>2009-06-22 11:45:28 +0000
committerMichael Tüxen <tuexen@fh-muenster.de>2009-06-22 11:45:28 +0000
commit2f2c22c0c013d637d35c0a802004a45affad8167 (patch)
treebbac427f1b73756ee187632a5eb13a1bf0c3fae6 /wiretap
parent6270137b07f84d1ef5a45c8446fbae52149449fd (diff)
Add protection code to avoid crashed when .erf files
are wrongly identified as packetlogger ones. Will be scheduled for 1.2.1. svn path=/trunk/; revision=28808
Diffstat (limited to 'wiretap')
-rw-r--r--wiretap/packetlogger.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/wiretap/packetlogger.c b/wiretap/packetlogger.c
index e589db76dd..20b175a89a 100644
--- a/wiretap/packetlogger.c
+++ b/wiretap/packetlogger.c
@@ -93,7 +93,7 @@ int packetlogger_open(wtap *wth, int *err, gchar **err_info _U_)
}
static gboolean
-packetlogger_read(wtap *wth, int *err, gchar **err_info _U_, gint64 *data_offset)
+packetlogger_read(wtap *wth, int *err, gchar **err_info, gint64 *data_offset)
{
packetlogger_header_t pl_hdr;
guint bytes_read;
@@ -103,6 +103,12 @@ packetlogger_read(wtap *wth, int *err, gchar **err_info _U_, gint64 *data_offset
if(!packetlogger_read_header(&pl_hdr, wth->fh, err))
return FALSE;
+ if (pl_hdr.len < 8) {
+ *err_info = g_strdup_printf("packetlogger: record length %u is too small", pl_hdr.len);
+ *err = WTAP_ERR_BAD_RECORD;
+ return FALSE;
+ }
+
buffer_assure_space(wth->frame_buffer, pl_hdr.len - 8);
bytes_read = file_read(buffer_start_ptr(wth->frame_buffer), 1,
pl_hdr.len - 8,