diff --git a/openscap-productid-cvrf.patch b/openscap-productid-cvrf.patch new file mode 100644 index 0000000..5bf41f3 --- /dev/null +++ b/openscap-productid-cvrf.patch @@ -0,0 +1,70 @@ +diff -ru openscap-1.2.16/utils/oscap-cvrf.c openscap-1.2.16.xx/utils/oscap-cvrf.c +--- openscap-1.2.16/utils/oscap-cvrf.c 2017-11-14 12:48:32.000000000 +0100 ++++ openscap-1.2.16.xx/utils/oscap-cvrf.c 2017-11-14 14:59:57.353065728 +0100 +@@ -60,6 +60,7 @@ + .help = "Options:\n" + " --index\r\t\t\t\t - Use index file to evaluate a directory of CVRF files.\n" + " --results\r\t\t\t\t - Filename to which evaluation results will be saved.\n", ++ " --productid\r\t\t\t\t - Product ID to use (currently not yet auto-detected).\n", + }; + + static struct oscap_module CVRF_EXPORT_MODULE = { +@@ -98,10 +99,18 @@ + // Temporary hardcoded CPE until CPE name can be found without input by CVRF functions + // themselves + const char *os_name = "Red Hat Enterprise Linux Desktop Supplementary (v. 6)"; +- struct oscap_source *import_source = oscap_source_new_from_file(action->cvrf_action->f_cvrf); +- struct oscap_source *export_source = cvrf_model_get_results_source(import_source, os_name); +- if (export_source == NULL) ++ struct oscap_source *import_source; ++ struct oscap_source *export_source; ++ ++ if (action->cvrf_action->f_productid) ++ os_name = action->cvrf_action->f_productid; ++ ++ import_source = oscap_source_new_from_file(action->cvrf_action->f_cvrf); ++ export_source = cvrf_model_get_results_source(import_source, os_name); ++ if (export_source == NULL) { ++ fprintf(stderr, "Could not find results for product %s\n", os_name); + return -1; ++ } + + if (oscap_source_save_as(export_source, action->cvrf_action->f_results) == -1) { + result = OSCAP_ERROR; +@@ -180,6 +189,7 @@ + CVRF_OPT_INDEX, + CVRF_OPT_RESULT_FILE, + CVRF_OPT_OUTPUT_FILE, ++ CVRF_OPT_PRODUCT_ID, + }; + + bool getopt_cvrf(int argc, char **argv, struct oscap_action *action) { +@@ -191,6 +201,7 @@ + {"index", 0, NULL, CVRF_OPT_INDEX}, + {"results", 1, NULL, CVRF_OPT_RESULT_FILE}, + {"output", 1, NULL, CVRF_OPT_OUTPUT_FILE}, ++ {"productid", 1, NULL, CVRF_OPT_PRODUCT_ID}, + {0, 0, 0, 0} + }; + +@@ -206,6 +217,9 @@ + case CVRF_OPT_OUTPUT_FILE: + cvrf_action->f_output = optarg; + break; ++ case CVRF_OPT_PRODUCT_ID: ++ cvrf_action->f_productid = optarg; ++ break; + default: + return oscap_module_usage(action->module, stderr, NULL); + } +diff -ru openscap-1.2.16/utils/oscap-tool.h openscap-1.2.16.xx/utils/oscap-tool.h +--- openscap-1.2.16/utils/oscap-tool.h 2017-11-14 12:48:32.000000000 +0100 ++++ openscap-1.2.16.xx/utils/oscap-tool.h 2017-11-14 14:58:35.981147877 +0100 +@@ -104,6 +104,7 @@ + char *f_cvrf; + char *f_results; + char *f_output; ++ char *f_productid; + }; + + struct oscap_action { diff --git a/openscap.changes b/openscap.changes index bdbda6b..7b2155d 100644 --- a/openscap.changes +++ b/openscap.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Nov 14 14:17:28 UTC 2017 - meissner@suse.com + +- openscap-productid-cvrf.patch: add a --productid selector + for "oscap cvrf" as upstream does not detect the system yet. + (might go away) + ------------------------------------------------------------------- Tue Nov 14 12:14:41 UTC 2017 - meissner@suse.com diff --git a/openscap.spec b/openscap.spec index 29c50eb..ac9008c 100644 --- a/openscap.spec +++ b/openscap.spec @@ -30,6 +30,7 @@ Source2: sysconfig.oscap-scan # Generated from http://gitorious.org/test-suite/scap Source3: scap-yast2sec-xccdf.xml Source4: scap-yast2sec-oval.xml +Patch0: openscap-productid-cvrf.patch Url: http://www.open-scap.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: doxygen @@ -166,6 +167,7 @@ commonly used and require additional dependencies. %prep %setup -q +%patch0 -p1 %build