diff options
author | Guy Harris <guy@alum.mit.edu> | 2011-11-11 19:07:11 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2011-11-11 19:07:11 +0000 |
commit | ac507aa5e739cd49e09940b6041ac6e25631a084 (patch) | |
tree | efc9ca8842b844ea5caff764840526d30d15514a /epan/dissectors/packet-sip.c | |
parent | a0cbfab6bf634c86d3135bb5936b3fb8522c3338 (diff) |
Add some checks for "character not found"; this should fix some
fuzz-testing failures we're seeing.
svn path=/trunk/; revision=39795
Diffstat (limited to 'epan/dissectors/packet-sip.c')
-rw-r--r-- | epan/dissectors/packet-sip.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c index 177c4b27df..910f5120ae 100644 --- a/epan/dissectors/packet-sip.c +++ b/epan/dissectors/packet-sip.c @@ -1452,7 +1452,7 @@ dissect_sip_authorization_item(tvbuff_t *tvb, proto_tree *tree, gint start_offse current_offset = start_offset; equals_offset = tvb_find_guint8(tvb, current_offset + 1, line_end_offset - (current_offset + 1), '='); - if(current_offset == -1){ + if(equals_offset == -1){ /* malformed parameter */ return -1; } @@ -1484,6 +1484,10 @@ found: }else if(c=='"'){ /* Do we have a quoted string ? */ queried_offset = tvb_find_guint8(tvb, queried_offset+1, line_end_offset - queried_offset, '"'); + if(queried_offset==-1){ + /* We have an opening quote but no closing quote. */ + queried_offset = line_end_offset; + } current_offset = tvb_find_guint8(tvb, queried_offset+1, line_end_offset - queried_offset, ','); if(current_offset==-1){ /* Last parameter, line end */ |