diff options
author | Guy Harris <guy@alum.mit.edu> | 2012-05-14 23:19:13 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2012-05-14 23:19:13 +0000 |
commit | 1ec0629c1bf276c851c920c7c1af4e1eacaba6f8 (patch) | |
tree | 6a147a01c8e5c9df0df789af5301bc1830e7bb1a /epan/dissectors/dcerpc | |
parent | 953a5c3fff1183651f071733ddf097f76a5eee6d (diff) |
Make the "idl-light"-to-dissector generator handle hex (and octal)
values in enums (and, while we're at it, add some error checking for
valid values). (The regenerated dissectors don't differ usefully from
the fixed dissectors, so we don't check them in.)
svn path=/trunk/; revision=42626
Diffstat (limited to 'epan/dissectors/dcerpc')
-rw-r--r-- | epan/dissectors/dcerpc/idl2wrs.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/epan/dissectors/dcerpc/idl2wrs.c b/epan/dissectors/dcerpc/idl2wrs.c index 174adc31c5..cda1ea1e84 100644 --- a/epan/dissectors/dcerpc/idl2wrs.c +++ b/epan/dissectors/dcerpc/idl2wrs.c @@ -2769,6 +2769,8 @@ static void parsetypedefenum(void) { token_item_t *ti; enum_list_t *enum_list, *el, *lastel; + char *p; + long val; int eval, enumsize; char dissectorname[256], valsstring[256], hfvalsstring[256]; @@ -2847,7 +2849,12 @@ static void parsetypedefenum(void) if(!strcmp(ti->str,"=")){ ti=ti->next; /* grab value */ - el->val=atoi(ti->str); + val=strtol(ti->str,&p,0); + if (p==ti->str||*p) { + fprintf(stderr, "ERROR: typedefenum value is not a number\n"); + Exit(10); + } + el->val=val; ti=ti->next; } else { el->val=eval; |