aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2006-04-19 18:57:25 +0000
committerAnders Broman <anders.broman@ericsson.com>2006-04-19 18:57:25 +0000
commitb99bf25795bee8d5e44affed8c02aa18e4bae2d7 (patch)
treebc6c1a9a737e407e47df1585d8cbdb9c0715a153
parenta7852884e8d00939d3bcf4847bae5f3fec56fbeb (diff)
From Martin Mathieson:
Fix coverity bugs. svn path=/trunk/; revision=17909
-rw-r--r--wiretap/catapult_dct2000.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/wiretap/catapult_dct2000.c b/wiretap/catapult_dct2000.c
index 0bb50a3c33..69c0265d3e 100644
--- a/wiretap/catapult_dct2000.c
+++ b/wiretap/catapult_dct2000.c
@@ -840,6 +840,11 @@ gboolean parse_line(gint length, gint *seconds, gint *useconds,
}
protocol_name[protocol_chars] = linebuff[n];
}
+ if (protocol_chars == MAX_PROTOCOL_NAME)
+ {
+ /* If doesn't fit, fail rather than truncate */
+ return FALSE;
+ }
protocol_name[protocol_chars] = '\0';
/* Slash char must follow protocol name */
@@ -984,10 +989,17 @@ gboolean parse_line(gint length, gint *seconds, gint *useconds,
{
if (!isdigit(linebuff[n]))
{
+ /* Found a non-digit before decimal point. Fail */
return FALSE;
}
seconds_buff[seconds_chars] = linebuff[n];
}
+ if (seconds_chars > MAX_SECONDS_CHARS)
+ {
+ /* Didn't fit in buffer. Fail rather than use truncated */
+ return FALSE;
+ }
+
/* Convert found value into number */
seconds_buff[seconds_chars] = '\0';
*seconds = atoi(seconds_buff);
@@ -1013,6 +1025,11 @@ gboolean parse_line(gint length, gint *seconds, gint *useconds,
}
subsecond_decimals_buff[subsecond_decimals_chars] = linebuff[n];
}
+ if (subsecond_decimals_chars > MAX_SUBSECOND_DECIMALS)
+ {
+ /* More numbers than expected - give up */
+ return FALSE;
+ }
/* Convert found value into microseconds */
subsecond_decimals_buff[subsecond_decimals_chars] = '\0';
*useconds = atoi(subsecond_decimals_buff) * 100;