diff options
author | Guy Harris <guy@alum.mit.edu> | 2014-08-04 15:26:00 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2014-08-04 22:26:26 +0000 |
commit | 01361a92cbb53d229fe927b9765dcd6c7999efb4 (patch) | |
tree | a587e817b09ba05b992ab20ca8dcee9060707f6a | |
parent | 7c72f70f598071c1f7d073cd51ae4c8f80822496 (diff) | |
download | wireshark-01361a92cbb53d229fe927b9765dcd6c7999efb4.tar.gz wireshark-01361a92cbb53d229fe927b9765dcd6c7999efb4.tar.bz2 wireshark-01361a92cbb53d229fe927b9765dcd6c7999efb4.zip |
Support both decimal and hex values for uint dissectors.
And, while we're at it, reject entries with invalid numbers.
Change-Id: Ifefe28396cfe391d2d5c7f7ff335d0f041e35a03
Reviewed-on: https://code.wireshark.org/review/3417
Reviewed-by: Guy Harris <guy@alum.mit.edu>
-rw-r--r-- | ui/decode_as_utils.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/ui/decode_as_utils.c b/ui/decode_as_utils.c index 7f5405a403..4a7c216240 100644 --- a/ui/decode_as_utils.c +++ b/ui/decode_as_utils.c @@ -133,8 +133,19 @@ read_set_decode_as_entries(gchar *key, const gchar *value, if (IS_FT_STRING(selector_type)) { dissector_change_string(values[0], values[1], lookup.handle); } else { - dissector_change_uint(values[0], atoi(values[1]), lookup.handle); + char *p; + long long_value; + + long_value = strtol(values[1], &p, 0); + if (p == values[0] || *p != '\0' || + long_value < 0 || long_value > UINT_MAX) { + retval = PREFS_SET_SYNTAX_ERR; + is_valid = FALSE; + } else + dissector_change_uint(values[0], (guint)long_value, lookup.handle); } + } + if (is_valid) { decode_build_reset_list(g_strdup(values[0]), selector_type, g_strdup(values[1]), NULL, NULL); } |