diff options
author | Guy Harris <gharris@sonic.net> | 2022-08-16 18:03:48 -0700 |
---|---|---|
committer | Guy Harris <gharris@sonic.net> | 2022-08-16 18:03:48 -0700 |
commit | d48808dc76d14cc98efbde53bd5552ee2df6c785 (patch) | |
tree | fbb93f3d7ffb4fd6dac28dfa61774b0d059aa797 /wiretap/5views.c | |
parent | 7411bc298b5133e9cd685d3af8ce23881bb7178f (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.c | 11 |
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); |