forked from pool/openscap
Marcus Meissner
128a9a554b
for "oscap cvrf" as upstream does not detect the system yet. (might go away) OBS-URL: https://build.opensuse.org/package/show/security/openscap?expand=0&rev=189
71 lines
2.5 KiB
Diff
71 lines
2.5 KiB
Diff
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 {
|