aboutsummaryrefslogtreecommitdiffstats
path: root/reordercap.c
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2016-03-21 15:51:12 -0700
committerMichael Mann <mmann78@netscape.net>2016-03-22 03:19:10 +0000
commitc362dc7a52c595237223938c0ad20304a5528017 (patch)
tree2ac8e6e6f2b8c65ab467d6d7a31cc2f7a79d5707 /reordercap.c
parent51984de040b804ca6614830acc62c641cd6d8959 (diff)
Fix randpkt and reordercap.
Copy over recent wiretap plugin changes from mergecap, otherwise randpkt and reordercap will crash. Change-Id: I70111ded3d9a5c4380b964b2c5b626599eebc327 Reviewed-on: https://code.wireshark.org/review/14546 Reviewed-by: Gerald Combs <gerald@wireshark.org> Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'reordercap.c')
-rw-r--r--reordercap.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/reordercap.c b/reordercap.c
index 0c29ea59c8..5b531db7c1 100644
--- a/reordercap.c
+++ b/reordercap.c
@@ -43,11 +43,19 @@
#endif
#include <wsutil/crash_info.h>
+#include <wsutil/filesystem.h>
#include <wsutil/file_util.h>
+#include <wsutil/privileges.h>
#include <wsutil/ws_diag_control.h>
#include <wsutil/ws_version_info.h>
#include <wiretap/wtap_opttypes.h>
+#ifdef HAVE_PLUGINS
+#include <wsutil/plugins.h>
+#endif
+
+#include <wsutil/report_err.h>
+
/* Show command-line usage */
static void
print_usage(FILE *output)
@@ -169,6 +177,19 @@ get_reordercap_runtime_info(GString *str)
#endif
}
+#ifdef HAVE_PLUGINS
+/*
+ * Don't report failures to load plugins because most (non-wiretap) plugins
+ * *should* fail to load (because we're not linked against libwireshark and
+ * dissector plugins need libwireshark).
+ */
+static void
+failure_message(const char *msg_format _U_, va_list ap _U_)
+{
+ return;
+}
+#endif
+
/********************************************************************/
/* Main function. */
/********************************************************************/
@@ -205,6 +226,10 @@ main(int argc, char *argv[])
char *infile;
const char *outfile;
+#ifdef HAVE_PLUGINS
+ char *init_progfile_dir_error;
+#endif
+
/* Get the compile-time version information string */
comp_info_str = get_compiled_version_info(NULL, get_reordercap_compiled_info);
@@ -219,6 +244,32 @@ main(int argc, char *argv[])
"%s",
get_ws_vcs_version_info(), comp_info_str->str, runtime_info_str->str);
+ /*
+ * Get credential information for later use.
+ */
+ init_process_policies();
+ init_open_routines();
+
+#ifdef HAVE_PLUGINS
+ /* Register wiretap plugins */
+ if ((init_progfile_dir_error = init_progfile_dir(argv[0], main))) {
+ g_warning("reordercap: init_progfile_dir(): %s", init_progfile_dir_error);
+ g_free(init_progfile_dir_error);
+ } else {
+ /* Register all the plugin types we have. */
+ wtap_register_plugin_types(); /* Types known to libwiretap */
+
+ init_report_err(failure_message,NULL,NULL,NULL);
+
+ /* Scan for plugins. This does *not* call their registration routines;
+ that's done later. */
+ scan_plugins();
+
+ /* Register all libwiretap plugin modules. */
+ register_all_wiretap_modules();
+ }
+#endif
+
/* Process the options first */
while ((opt = getopt_long(argc, argv, "hnv", long_options, NULL)) != -1) {
switch (opt) {