SHA256
1
0
forked from pool/openscap
openscap/openscap-productid-cvrf.patch

71 lines
2.5 KiB
Diff
Raw Normal View History

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 {