diff options
Diffstat (limited to 'capchild')
-rw-r--r-- | capchild/capture_sync.c | 27 | ||||
-rw-r--r-- | capchild/capture_sync.h | 2 |
2 files changed, 19 insertions, 10 deletions
diff --git a/capchild/capture_sync.c b/capchild/capture_sync.c index 6da5f63f4b..c3bd19cc5e 100644 --- a/capchild/capture_sync.c +++ b/capchild/capture_sync.c @@ -1703,21 +1703,30 @@ sync_pipe_input_cb(gint source, gpointer user_data) /* (an error message doesn't mean we have to stop capturing) */ break; case SP_BAD_FILTER: { - char *ch=NULL; - int indx=0; + const char *message=NULL; + guint32 indx = 0; + const gchar* end; - ch = strtok(buffer, ":"); - if (ch) { - indx = (int)strtol(ch, NULL, 10); - ch = strtok(NULL, ":"); + if (ws_strtou32(buffer, &end, &indx) && end[0] == ':') { + message = end + 1; } - capture_input_cfilter_error_message(cap_session, indx, ch); + + capture_input_cfilter_error_message(cap_session, indx, (char*)message); /* the capture child will close the sync_pipe, nothing to do for now */ break; } - case SP_DROPS: - capture_input_drops(cap_session, (guint32)strtoul(buffer, NULL, 10)); + case SP_DROPS: { + const char *name = NULL; + const gchar* end; + guint32 num = 0; + + if (ws_strtou32(buffer, &end, &num) && end[0] == ':') { + name = end + 1; + } + + capture_input_drops(cap_session, num, (char*)name); break; + } default: g_assert_not_reached(); } diff --git a/capchild/capture_sync.h b/capchild/capture_sync.h index 2da20e4864..c0fdc1d72f 100644 --- a/capchild/capture_sync.h +++ b/capchild/capture_sync.h @@ -121,7 +121,7 @@ capture_input_new_packets(capture_session *cap_session, int to_read); * Capture child told us how many dropped packets it counted. */ extern void -capture_input_drops(capture_session *cap_session, guint32 dropped); +capture_input_drops(capture_session *cap_session, guint32 dropped, char* interface_name); /** * Capture child told us that an error has occurred while starting the capture. |