aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/dcerpc/CMakeLists.txt2
-rw-r--r--epan/dissectors/dcerpc/Makefile.am2
-rw-r--r--epan/dissectors/dcerpc/idl2wrs.c8
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)){