diff options
-rw-r--r-- | epan/dissectors/dcerpc/CMakeLists.txt | 2 | ||||
-rw-r--r-- | epan/dissectors/dcerpc/Makefile.am | 2 | ||||
-rw-r--r-- | epan/dissectors/dcerpc/idl2wrs.c | 8 |
3 files changed, 8 insertions, 4 deletions
diff --git a/epan/dissectors/dcerpc/CMakeLists.txt b/epan/dissectors/dcerpc/CMakeLists.txt index 53450fdfc8..91ea454bf9 100644 --- a/epan/dissectors/dcerpc/CMakeLists.txt +++ b/epan/dissectors/dcerpc/CMakeLists.txt @@ -44,7 +44,7 @@ endif() add_executable(idl2wrs ${IDL2WRS_FILES}) set_target_properties(idl2wrs PROPERTIES FOLDER "Executables") -target_link_libraries(idl2wrs ${GLIB2_LIBRARIES}) +target_link_libraries(idl2wrs ${GLIB2_LIBRARIES} wsutil) foreach(PROTOCOL_NAME IN LISTS PIDL_DISSECTOR_NAMES) # Use a stamp file instead of OUTPUT to packet-dcerpc-X.c to diff --git a/epan/dissectors/dcerpc/Makefile.am b/epan/dissectors/dcerpc/Makefile.am index a15169a8f7..0c0abfdf6a 100644 --- a/epan/dissectors/dcerpc/Makefile.am +++ b/epan/dissectors/dcerpc/Makefile.am @@ -49,7 +49,7 @@ bin_PROGRAMS = idl2wrs idl2wrs_SOURCES = idl2wrs.c -idl2wrs_LDADD = $(GLIB_LIBS) +idl2wrs_LDADD = $(GLIB_LIBS) ../../../wsutil/libwsutil.la # # Editor modelines - https://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/dcerpc/idl2wrs.c b/epan/dissectors/dcerpc/idl2wrs.c index 6dbab6e8cc..b33c0d558f 100644 --- a/epan/dissectors/dcerpc/idl2wrs.c +++ b/epan/dissectors/dcerpc/idl2wrs.c @@ -92,6 +92,7 @@ TODO #include <string.h> #include <stdlib.h> #include <stdarg.h> +#include <wsutil/strtoi.h> #undef IDL2WRS_DEBUG @@ -1489,7 +1490,7 @@ static void parsetypedefstruct(int pass) pointer_item_t *pi; const char *pointer_type; char *field_name; - int fixed_array_size; + guint32 fixed_array_size; int is_array_of_pointers; int empty_struct = 0; @@ -1675,7 +1676,10 @@ static void parsetypedefstruct(int pass) /* this might be a fixed array */ ti=ti->next; - fixed_array_size=atoi(ti->str); + if (!ws_strtou32(ti->str, NULL, &fixed_array_size)) { + FPRINTF(stderr, "ERROR: invalid integer: %s\n", ti->str); + Exit(10); + } g_snprintf(fss, BASE_BUFFER_SIZE, "%d", fixed_array_size); if(!g_strcmp0("]", ti->str)){ |