{"record":{"id":"a0ee1e0423830cf5","repo":"NationalSecurityAgency/ghidra","slug":"invalid-option-use-with-config-option-commit","errorCode":null,"errorMessage":"Invalid option use with --config option: --commit","messagePattern":"Invalid option use with --config option: --commit","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BSimLaunchable.java","lineNumber":600,"sourceCode":"\t\tSystem.out.println(\"Database NOT dropped\");\n\t\treturn false;\n\t}\n\n\tprivate void doGenerateSigs(List<String> params, TaskMonitor monitor)\n\t\t\tthrows Exception, CancelledException {\n\t\t// concurrent --bsim and --config option use already checked\n\t\tif (params.size() > 1) {\n\t\t\tthrow new IllegalArgumentException(\"Invalid generatesigs parameter use!\");\n\t\t}\n\t\tboolean commitOption = booleanOptions.contains(COMMIT_OPTION);\n\t\tboolean overwriteOption = booleanOptions.contains(OVERWRITE_OPTION);\n\t\tString configOption = optionValueMap.get(CONFIG_OPTION);\n\n\t\tString xmlDirectory = null;\n\t\tif (params.size() == 1) {\n\t\t\txmlDirectory = params.get(0);\n\t\t\tif (configOption != null && commitOption) {\n\t\t\t\tthrow new IllegalArgumentException(\n\t\t\t\t\t\"Invalid option use with \" + CONFIG_OPTION + \" option: \" + COMMIT_OPTION);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (overwriteOption) {\n\t\t\t\tthrow new IllegalArgumentException(\"Invalid option use: \" + OVERWRITE_OPTION);\n\t\t\t}\n\t\t\tcommitOption = true; // assume DB commit using temp XML directory\n\t\t}\n\n\t\ttry (BulkSignatures bsim = getBulkSignatures()) {\n\t\t\tif (commitOption) {\n\t\t\t\t// Generate and commit signatures to BSim database\n\t\t\t\tbsim.signatureRepo(ghidraURL, xmlDirectory, overwriteOption, monitor);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Generate sig XML files only\n\t\t\t\tbsim.generateSignaturesFromServer(ghidraURL, xmlDirectory, overwriteOption,","sourceCodeStart":582,"sourceCodeEnd":618,"githubUrl":"https://github.com/NationalSecurityAgency/ghidra/blob/d5f144c24d6bc53c9cbf4448c6d11143e7696206/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BSimLaunchable.java#L582-L618","documentation":"Thrown by doGenerateSigs() when the user supplies an XML output directory (params.size()==1) together with both --config and --commit. The --commit flag tells BSim to commit signatures directly to the database, but --config mode is for generating standalone XML files only (no DB commit). These are mutually exclusive: --commit only applies when --bsim points at a live database.","triggerScenarios":"Command: generatesigs <ghidraURL> <xmldir> --config <template> --commit. At line 599, configOption is non-null AND commitOption is true, triggering the throw at line 600.","commonSituations":"Mixing the two valid modes (XML-generation mode vs. direct-commit mode) in one invocation; assuming --commit is harmless when writing XML; upgrading and not noticing the option semantics changed.","solutions":["Remove --commit when using --config (XML generation does not commit to a DB).","Or switch to --bsim <bsimURL> mode if you want direct commit: generatesigs <ghidraURL> <xmldir> --bsim <url> --commit.","Re-read the usage: line 1033 (--config, no commit) vs line 1034 (--bsim, optional --commit)."],"exampleFix":"// before\nbsim generatesigs ghidra://myhost/Repo /tmp/xml --config medium_64 --commit\n// after (XML only)\nbsim generatesigs ghidra://myhost/Repo /tmp/xml --config medium_64\n// after (direct commit)\nbsim generatesigs ghidra://myhost/Repo /tmp/xml --bsim postgresql://myhost/BsimDB --commit","handlingStrategy":"validation","validationCode":"// Mutually exclusive: --config and --commit cannot coexist when a directory is given\nString config = optionValueMap.get(\"--config\");\nboolean commit = booleanOptions.contains(\"--commit\");\nif (config != null && commit) {\n    throw new IllegalArgumentException(\"--commit is not valid with --config; use --bsim for direct commit\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Document that --config = XML-only (no commit) and --bsim = direct commit.","Add a CI check or wrapper script that rejects the --config+--commit combination."],"tags":["cli","argument-validation","bsim","generatesigs","conflicting-options"],"backgroundTag":null,"analyzedSha":"d5f144c24d6bc53c9cbf4448c6d11143e7696206","analyzedAt":"2026-08-14T01:00:57.564Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}