diff options
author | Luis Ontanon <luis.ontanon@gmail.com> | 2007-02-07 20:45:14 +0000 |
---|---|---|
committer | Luis Ontanon <luis.ontanon@gmail.com> | 2007-02-07 20:45:14 +0000 |
commit | 9422dfd0849a130d03812a5712ae54f6f350a6dd (patch) | |
tree | a07b25c2e10bbeb88d2f10e54310cdc5d56ea2fb /epan/uat.c | |
parent | 8144684c113165ec937efdc094f520e5510ff8d2 (diff) |
UAT: filed definitions for proto (a dissector hanlde obtained by name)
UATify user-DLTs
svn path=/trunk/; revision=20740
Diffstat (limited to 'epan/uat.c')
-rw-r--r-- | epan/uat.c | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/epan/uat.c b/epan/uat.c index bda15e7613..e911163c6b 100644 --- a/epan/uat.c +++ b/epan/uat.c @@ -302,16 +302,48 @@ gboolean uat_fld_chk_str(void* u1 _U_, const char* strptr, unsigned len _U_, voi } gboolean uat_fld_chk_proto(void* u1 _U_, const char* strptr, unsigned len, void* u2 _U_, void* u3 _U_, char** err) { - char* name = ep_strndup(strptr,len); - g_strdown(name); - g_strchug(name); - if (find_dissector(name)) { - *err = NULL; - return TRUE; + if (len) { + char* name = ep_strndup(strptr,len); + g_strdown(name); + g_strchug(name); + + if (find_dissector(name)) { + *err = NULL; + return TRUE; + } else { + *err = "dissector not found"; + return FALSE; + } } else { - *err = "dissector not found"; + *err = NULL; + return TRUE; + } +} + +gboolean uat_fld_chk_num_dec(void* u1 _U_, const char* strptr, unsigned len, void* u2 _U_, void* u3 _U_, char** err) { + char* str = ep_strndup(strptr,len); + long i = strtol(str,&str,10); + + if ( ( i == 0) && (errno == ERANGE || errno == EINVAL) ) { + *err = strerror(errno); return FALSE; } + + *err = NULL; + return TRUE; +} + +gboolean uat_fld_chk_num_hex(void* u1 _U_, const char* strptr, unsigned len, void* u2 _U_, void* u3 _U_, char** err) { + char* str = ep_strndup(strptr,len); + long i = strtol(str,&str,16); + + if ( ( i == 0) && (errno == ERANGE || errno == EINVAL) ) { + *err = strerror(errno); + return FALSE; + } + + *err = NULL; + return TRUE; } gboolean uat_fld_chk_enum(void* u1 _U_, const char* strptr, unsigned len, void* v, void* u3 _U_, char** err) { |