wiretap: add a parameter to wtap_init() indicating whether plugins must be loaded
authorPascal Quantin <pascal.quantin@gmail.com>
Tue, 9 Jan 2018 08:55:37 +0000 (09:55 +0100)
committerAnders Broman <a.broman58@gmail.com>
Tue, 9 Jan 2018 21:25:06 +0000 (21:25 +0000)
g995812c5f1 moved wiretap plugins registration from applications to
wiretap library init function.
As we do not want to load plugins for all users of libwiretap, let's
make it configurable.

Bug: 14314
Change-Id: Id8fdcc484e2d0d31d3ab0bd357d3a6678570f700
Reviewed-on: https://code.wireshark.org/review/25194
Reviewed-by: Dario Lombardo <lomato@gmail.com>
Petri-Dish: Dario Lombardo <lomato@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
19 files changed:
capinfos.c
captype.c
dftest.c
editcap.c
extcap/androiddump.c
extcap/randpktdump.c
mergecap.c
randpkt.c
randpkt_core/randpkt_core.c
rawshark.c
reordercap.c
sharkd.c
tfshark.c
tools/oss-fuzzshark/fuzzshark.c
tshark.c
ui/gtk/main.c
wireshark-qt.cpp
wiretap/wtap.c
wiretap/wtap.h

index e51d6eaf150c469b24bb85d96d506ae3d4bf19c1..c3b0a7e50123d22e1cf30c2279587f8fa51499fd 100644 (file)
@@ -1467,7 +1467,7 @@ main(int argc, char *argv[])
   init_report_message(failure_warning_message, failure_warning_message,
                       NULL, NULL, NULL);
 
-  wtap_init();
+  wtap_init(TRUE);
 
   /* Process the options */
   while ((opt = getopt_long(argc, argv, "abcdehiklmoqrstuvxyzABCEFHIKLMNQRST", long_options, NULL)) !=-1) {
index 8cf0469e7bac00d06f8d2890f5c027d429b671e2..c5e5a933341f1dd37b0d4168d209448acc7f54cb 100644 (file)
--- a/captype.c
+++ b/captype.c
@@ -145,7 +145,7 @@ main(int argc, char *argv[])
   init_report_message(failure_warning_message, failure_warning_message,
                       NULL, NULL, NULL);
 
-  wtap_init();
+  wtap_init(TRUE);
 
   /* Process the options */
   while ((opt = getopt_long(argc, argv, "hv", long_options, NULL)) !=-1) {
index 8ab101f604b1a732eb963f4b8725fecb738ef400..4de107b04cff3396e47b2e15fefcf0b08b3cdc33 100644 (file)
--- a/dftest.c
+++ b/dftest.c
@@ -72,7 +72,7 @@ main(int argc, char **argv)
        timestamp_set_type(TS_RELATIVE);
        timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
 
-       wtap_init();
+       wtap_init(TRUE);
 
        /* Register all dissectors; we must do this before checking for the
           "-g" flag, as the "-g" flag dumps a list of fields registered
index 1aaa13619062f7998dd8dba1b60dbc6e4aac7799..8eb414c60a094141db4d0223b3a47389c5b1ec02 100644 (file)
--- a/editcap.c
+++ b/editcap.c
@@ -1030,7 +1030,7 @@ main(int argc, char *argv[])
     init_report_message(failure_warning_message, failure_warning_message,
                         NULL, NULL, NULL);
 
-    wtap_init();
+    wtap_init(TRUE);
 
     /* Process the options */
     while ((opt = getopt_long(argc, argv, ":a:A:B:c:C:dD:E:F:hi:I:Lo:rs:S:t:T:vVw:", long_options, NULL)) != -1) {
index dd5617d081e6e15f5c82bc10997d74e5a14314fe..04c838f6ad895d75991035508851cfede5a79b32 100644 (file)
@@ -432,7 +432,7 @@ static struct extcap_dumper extcap_dumper_open(char *fifo, int encap) {
 #else
     int err = 0;
 
-    wtap_init();
+    wtap_init(FALSE);
 
     extcap_dumper.dumper.wtap = wtap_dump_open(fifo, WTAP_FILE_TYPE_SUBTYPE_PCAP_NSEC, encap, PACKET_LENGTH, FALSE, &err);
     if (!extcap_dumper.dumper.wtap) {
index cbcab16170b9e6d075451e9a6107edd2104974df..b45ea75645a15c9680090f27ca910b61249bbd82 100644 (file)
@@ -272,6 +272,8 @@ int main(int argc, char *argv[])
                        goto end;
                }
 
+               wtap_init(FALSE);
+
                if (!all_random) {
                        produce_type = randpkt_parse_type(type);
 
index e59a16d364121c3ffa272015b7f80f108512c316..ba95059d17ddb6540b0e70c435f6fba37faf1f47 100644 (file)
@@ -299,7 +299,7 @@ main(int argc, char *argv[])
   init_report_message(failure_warning_message, failure_warning_message,
                       NULL, NULL, NULL);
 
-  wtap_init();
+  wtap_init(TRUE);
 
   /* Process the options first */
   while ((opt = getopt_long(argc, argv, "aF:hI:s:vVw:", long_options, NULL)) != -1) {
index b904bc30c2e1372c93d463a6ca8c9d147b5343cd..7fe34c6e91e8ec82a3264de215dc698856a02cd9 100644 (file)
--- a/randpkt.c
+++ b/randpkt.c
@@ -138,7 +138,7 @@ main(int argc, char **argv)
        init_report_message(failure_warning_message, failure_warning_message,
                                NULL, NULL, NULL);
 
-       wtap_init();
+       wtap_init(TRUE);
 
        cmdarg_err_init(failure_warning_message, failure_message_cont);
 
index f35077b7b41fcb5816f96cbd035b1ef278b52ffc..04cf8a14e6b79d0c9a6cc2fa6699f15dd9a5cdae 100644 (file)
@@ -661,8 +661,6 @@ int randpkt_example_init(randpkt_example* example, char* produce_filename, int p
                pkt_rand = g_rand_new();
        }
 
-       wtap_init();
-
        if (strcmp(produce_filename, "-") == 0) {
                /* Write to the standard output. */
                example->dump = wtap_dump_open_stdout(WTAP_FILE_TYPE_SUBTYPE_PCAP,
index 19982787c517b67aa1c591b9e8f557dce3843a99..d8a1d1917cef79ec626677c67abd8af9d0e0e5b5 100644 (file)
@@ -514,7 +514,7 @@ main(int argc, char *argv[])
     timestamp_set_precision(TS_PREC_AUTO);
     timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
 
-    wtap_init();
+    wtap_init(FALSE);
 
     /* Register all dissectors; we must do this before checking for the
        "-G" flag, as the "-G" flag dumps information registered by the
index f1207b8e3e7a74bbf3432cd1fb21030a8f599bcd..8570726cfc5f7e443f082fd2b0f84debe6a2e1a9 100644 (file)
@@ -233,7 +233,7 @@ main(int argc, char *argv[])
     init_report_message(failure_warning_message, failure_warning_message,
                         NULL, NULL, NULL);
 
-    wtap_init();
+    wtap_init(TRUE);
 
     /* Process the options first */
     while ((opt = getopt_long(argc, argv, "hnv", long_options, NULL)) != -1) {
index 733937b5484cd583c51daeef7f46be82c70151d1..65971718620d4eb46a60e4e77942df56876fb384 100644 (file)
--- a/sharkd.c
+++ b/sharkd.c
@@ -161,7 +161,7 @@ main(int argc, char *argv[])
   timestamp_set_precision(TS_PREC_AUTO);
   timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
 
-  wtap_init();
+  wtap_init(TRUE);
 
   /* Register all dissectors; we must do this before checking for the
      "-G" flag, as the "-G" flag dumps information registered by the
index 2b4f9e9785b5b9768f113a419e1c0d1450eb9a7a..bb522b04b82c75e92d30bd84a2db01e76a72a4bd 100644 (file)
--- a/tfshark.c
+++ b/tfshark.c
@@ -487,7 +487,7 @@ main(int argc, char *argv[])
   timestamp_set_precision(TS_PREC_AUTO);
   timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
 
-  wtap_init();
+  wtap_init(TRUE);
 
   /* Register all dissectors; we must do this before checking for the
      "-G" flag, as the "-G" flag dumps information registered by the
index 53560d9ef9fde91dba7a6ea5c8ec956c882aa216..a700d5f03937bfe833c1a99a4a4d74f1e6e346b8 100644 (file)
@@ -219,7 +219,7 @@ fuzz_init(int argc _U_, char **argv)
        timestamp_set_precision(TS_PREC_AUTO);
        timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
 
-       wtap_init();
+       wtap_init(TRUE);
 
        /* Register all dissectors; we must do this before checking for the
           "-G" flag, as the "-G" flag dumps information registered by the
index 9527f7baa6c91a628fadb8793d39732b58a5263f..bfccd59aa69f6ea69b36462735e9e9b46d27f406 100644 (file)
--- a/tshark.c
+++ b/tshark.c
@@ -893,7 +893,7 @@ main(int argc, char *argv[])
   timestamp_set_precision(TS_PREC_AUTO);
   timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
 
-  wtap_init();
+  wtap_init(TRUE);
 
   /* Register all dissectors; we must do this before checking for the
      "-G" flag, as the "-G" flag dumps information registered by the
index 872f4effa4c5a9434da340f9a2367e3a34a47346..e76fa72100324b03682e1493bbde94311989a7e9 100644 (file)
@@ -2192,7 +2192,7 @@ main(int argc, char *argv[])
         g_free(init_progfile_dir_error);
     }
 
-    wtap_init();
+    wtap_init(TRUE);
 
     splash_update(RA_DISSECTORS, NULL, (gpointer)splash_win);
 
index f8fb41becba735829011a0bdf2f905c73b858321..05d940056555f9044fa92fce17e19699db1fe086 100644 (file)
@@ -625,7 +625,7 @@ int main(int argc, char *qt_argv[])
                         open_failure_alert_box, read_failure_alert_box,
                         write_failure_alert_box);
 
-    wtap_init();
+    wtap_init(TRUE);
 
     splash_update(RA_DISSECTORS, NULL, NULL);
 #ifdef DEBUG_STARTUP_TIME
index 58fd2c1d7bcdd98a7ca440b27315b200970b9754..bfff86786c5f1d8a1db0c5f56b8e2337f1ecdcb6 100644 (file)
@@ -38,7 +38,7 @@
 #ifdef HAVE_PLUGINS
 
 
-static plugins_t *libwiretap_plugins;
+static plugins_t *libwiretap_plugins = NULL;
 static GSList *wtap_plugins = NULL;
 
 void
@@ -1427,14 +1427,16 @@ wtap_seek_read(wtap *wth, gint64 seek_off,
  * Initialize the library.
  */
 void
-wtap_init(void)
+wtap_init(gboolean load_wiretap_plugins)
 {
        init_open_routines();
        wtap_opttypes_initialize();
        wtap_init_encap_types();
 #ifdef HAVE_PLUGINS
-       libwiretap_plugins = plugins_init("wiretap");
-       g_slist_foreach(wtap_plugins, call_plugin_register_wtap_module, NULL);
+       if (load_wiretap_plugins) {
+               libwiretap_plugins = plugins_init("wiretap");
+               g_slist_foreach(wtap_plugins, call_plugin_register_wtap_module, NULL);
+       }
 #endif
 }
 
index 8fd101d09868a1d82ae398f809cf61414d3a4314..29f1527d60cd25f3370c92e0738281ae3f18408b 100644 (file)
@@ -1562,9 +1562,13 @@ struct file_type_subtype_info {
 
 #define WTAP_TYPE_AUTO 0
 
-/** Initialize the Wiretap library. */
+/**
+ * @brief Initialize the Wiretap library.
+ *
+ * @param load_wiretap_plugins Load Wiretap plugins when initializing library.
+*/
 WS_DLL_PUBLIC
-void wtap_init(void);
+void wtap_init(gboolean load_wiretap_plugins);
 
 /** On failure, "wtap_open_offline()" returns NULL, and puts into the
  * "int" pointed to by its second argument: