aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/dcerpc
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2012-05-14 23:19:13 +0000
committerGuy Harris <guy@alum.mit.edu>2012-05-14 23:19:13 +0000
commit1ec0629c1bf276c851c920c7c1af4e1eacaba6f8 (patch)
tree6a147a01c8e5c9df0df789af5301bc1830e7bb1a /epan/dissectors/dcerpc
parent953a5c3fff1183651f071733ddf097f76a5eee6d (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.c9
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;