aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/5views.c
diff options
context:
space:
mode:
authorGuy Harris <gharris@sonic.net>2022-08-16 18:03:48 -0700
committerGuy Harris <gharris@sonic.net>2022-08-16 18:03:48 -0700
commitd48808dc76d14cc98efbde53bd5552ee2df6c785 (patch)
treefbb93f3d7ffb4fd6dac28dfa61774b0d059aa797 /wiretap/5views.c
parent7411bc298b5133e9cd685d3af8ce23881bb7178f (diff)
5views: don't allow out-of-range time stamps.
This should squelch Coverity CID 1509355.
Diffstat (limited to 'wiretap/5views.c')
-rw-r--r--wiretap/5views.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/wiretap/5views.c b/wiretap/5views.c
index 42881c9146..9478f88cd3 100644
--- a/wiretap/5views.c
+++ b/wiretap/5views.c
@@ -386,7 +386,16 @@ static gboolean _5views_dump(wtap_dumper *wdh,
HeaderFrame.RecNb = GUINT32_TO_LE(1);
/* record-dependent fields */
- HeaderFrame.Utc = GUINT32_TO_LE(rec->ts.secs);
+ /*
+ * XXX - is the frame time signed, or unsigned? If it's signed,
+ * we should check against G_MININT32 and G_MAXINT32 and make
+ * Utc a gint32.
+ */
+ if (rec->ts.secs < 0 || rec->ts.secs > G_MAXUINT32) {
+ *err = WTAP_ERR_TIME_STAMP_NOT_SUPPORTED;
+ return FALSE;
+ }
+ HeaderFrame.Utc = GUINT32_TO_LE((guint32)rec->ts.secs);
HeaderFrame.NanoSecondes = GUINT32_TO_LE(rec->ts.nsecs);
HeaderFrame.RecSize = GUINT32_TO_LE(rec->rec_header.packet_header.len);
HeaderFrame.RecInfo = GUINT32_TO_LE(0);