summaryrefslogtreecommitdiff
path: root/ui/decode_as_utils.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2014-08-04 15:26:00 -0700
committerGuy Harris <guy@alum.mit.edu>2014-08-04 22:26:26 +0000
commit01361a92cbb53d229fe927b9765dcd6c7999efb4 (patch)
treea587e817b09ba05b992ab20ca8dcee9060707f6a /ui/decode_as_utils.c
parent7c72f70f598071c1f7d073cd51ae4c8f80822496 (diff)
downloadwireshark-01361a92cbb53d229fe927b9765dcd6c7999efb4.tar.gz
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>
Diffstat (limited to 'ui/decode_as_utils.c')
-rw-r--r--ui/decode_as_utils.c13
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);
}