diff options
author | Haru <haru@dotalux.com> | 2017-01-22 14:53:15 +0100 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2017-01-22 15:06:41 +0100 |
commit | 092ad77f47102a1342a68482713e41822a790b30 (patch) | |
tree | 383bec20956dc7cc0906489ceff637dbef2ae3e5 | |
parent | 7d7b08b52250951da969e2680d10719a686dcd3c (diff) | |
download | hercules-092ad77f47102a1342a68482713e41822a790b30.tar.gz hercules-092ad77f47102a1342a68482713e41822a790b30.tar.bz2 hercules-092ad77f47102a1342a68482713e41822a790b30.tar.xz hercules-092ad77f47102a1342a68482713e41822a790b30.zip |
Fix CMDLINE_OPT_PARAM arguments in plugins failing to load
When the server is called with a plugin-defined argument expecting
additional values, in the form '--foo bar', the parser is unable to
skip the additional value until the plugin is fully loaded.
The issue was caused by the first scans of the argument list to find
CMDLINE_OPT_PREINIT or CMDLINE_OPT_SILENT arguments, which happen before
plugins are loaded, and would cause the parser to choke on the
additional values, interpreting them as separate arguments.
This is related to PR #1552, where we attempted to use this option for
the first time.
Signed-off-by: Haru <haru@dotalux.com>
-rw-r--r-- | src/common/core.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/common/core.c b/src/common/core.c index 74c63a6d6..9a131d042 100644 --- a/src/common/core.c +++ b/src/common/core.c @@ -404,6 +404,8 @@ int cmdline_exec(int argc, char **argv, unsigned int options) struct CmdlineArgData *data = NULL; const char *arg = argv[i]; if (arg[0] != '-') { // All arguments must begin with '-' + if ((options&(CMDLINE_OPT_SILENT|CMDLINE_OPT_PREINIT)) != 0) + continue; ShowError("Invalid option '%s'.\n", argv[i]); exit(EXIT_FAILURE); } |