Skip to content

Commit 1322792

Browse files
authored
Merge pull request #2290 from Mab879/fix_2288
Fix name space nulls in OVAL
2 parents 09a58ce + 508944c commit 1322792

13 files changed

+70
-16
lines changed

src/OVAL/oval_directives.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,10 @@ int oval_directives_model_import_source(struct oval_directives_model *model, str
123123
/* make sure this is a right schema and tag */
124124
tagname = (char *)xmlTextReaderLocalName(context.reader);
125125
namespace = (char *)xmlTextReaderNamespaceUri(context.reader);
126-
int is_ovaldir = strcmp((const char *)OVAL_DIRECTIVES_NAMESPACE, namespace) == 0;
126+
int is_ovaldir = 0;
127+
if (namespace != NULL) {
128+
is_ovaldir = strcmp((const char *)OVAL_DIRECTIVES_NAMESPACE, namespace) == 0;
129+
}
127130
/* start parsing */
128131
if (is_ovaldir && (strcmp(tagname, OVAL_ROOT_ELM_DIRECTIVES) == 0)) {
129132
ret = oval_directives_model_parse(context.reader, &context);
@@ -300,7 +303,10 @@ static int oval_directives_model_parse(xmlTextReaderPtr reader, struct oval_pars
300303
char *tagname = (char *)xmlTextReaderLocalName(reader);
301304
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
302305

303-
int is_ovaldir = strcmp((const char*)OVAL_DIRECTIVES_NAMESPACE, namespace) == 0;
306+
int is_ovaldir = 0;
307+
if (namespace != NULL) {
308+
is_ovaldir = strcmp((const char*)OVAL_DIRECTIVES_NAMESPACE, namespace) == 0;
309+
}
304310
if (is_ovaldir && (strcmp(tagname, "generator") == 0)) {
305311
struct oval_generator *gen;
306312
gen = oval_directives_model_get_generator(context->directives_model);

src/OVAL/oval_parser.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,10 @@ int oval_definition_model_parse(xmlTextReaderPtr reader, struct oval_parser_cont
154154
char *tagname = (char *)xmlTextReaderLocalName(reader);
155155
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
156156

157-
int is_oval = strcmp((const char *)OVAL_DEFINITIONS_NAMESPACE, namespace) == 0;
157+
int is_oval = 0;
158+
if (namespace != NULL) {
159+
is_oval = strcmp((const char *)OVAL_DEFINITIONS_NAMESPACE, namespace) == 0;
160+
}
158161
if (is_oval && (strcmp(tagname, tagname_definitions) == 0)) {
159162
ret = oval_parser_parse_tag(reader, context, &oval_definition_parse_tag, NULL);
160163
} else if (is_oval && strcmp(tagname, tagname_tests) == 0) {

src/OVAL/oval_sysInfo.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,10 @@ static int _oval_sysinfo_parse_tag(xmlTextReaderPtr reader, struct oval_parser_c
251251
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
252252
int return_code = 0;
253253

254-
int is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
254+
int is_ovalsys = 0;
255+
if (namespace != NULL) {
256+
is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
257+
}
255258
if (is_ovalsys && (strcmp(tagname, "os_name") == 0)) {
256259
return_code = oscap_parser_text_value(reader, &_oval_sysinfo_parse_tag_consume_os_name, sysinfo);
257260
} else if (is_ovalsys && (strcmp(tagname, "os_version") == 0)) {
@@ -282,7 +285,10 @@ int oval_sysinfo_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *
282285
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
283286
int return_code=0;
284287

285-
int is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
288+
int is_ovalsys = 0;
289+
if (namespace != NULL) {
290+
is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
291+
}
286292
if (is_ovalsys) {
287293
return_code = oval_parser_parse_tag(reader, context, &_oval_sysinfo_parse_tag, sysinfo);
288294
} else {

src/OVAL/oval_sysInterface.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,10 @@ static int _oval_sysint_parse_tag(xmlTextReaderPtr reader, struct oval_parser_co
181181
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
182182
int return_code = 0;
183183

184-
int is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
184+
int is_ovalsys = 0;
185+
if (namespace != NULL) {
186+
is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
187+
}
185188
if (is_ovalsys && (strcmp(tagname, "interface_name") == 0)) {
186189
return_code = oscap_parser_text_value(reader, &oval_consume_interface_name, sysint);
187190
} else if (is_ovalsys && (strcmp(tagname, "ip_address") == 0)) {
@@ -209,7 +212,10 @@ int oval_sysint_parse_tag(xmlTextReaderPtr reader,
209212
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
210213
int return_code = 0;
211214

212-
int is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
215+
int is_ovalsys = 0;
216+
if (namespace != NULL) {
217+
is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
218+
}
213219
if (is_ovalsys && (strcmp(tagname, "interface") == 0)) {
214220
return_code = oval_parser_parse_tag(reader, context, &_oval_sysint_parse_tag, sysint);
215221
} else {

src/OVAL/oval_sysItem.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ static int _oval_sysitem_parse_subtag(xmlTextReaderPtr reader, struct oval_parse
205205
char *tagname = (char *)xmlTextReaderLocalName(reader);
206206
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
207207
int return_code = 0;
208-
if (strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0) {
208+
if (oscap_strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0) {
209209
/* This is a message */
210210
return_code = oval_message_parse_tag(reader, context, (oscap_consumer_func) _oval_sysitem_parse_subtag_message_consumer, sysitem);
211211
} else {

src/OVAL/oval_sysModel.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,11 @@ int oval_syschar_model_import_source(struct oval_syschar_model *model, struct os
248248
/* make sure this is syschar */
249249
char *tagname = (char *)xmlTextReaderLocalName(context.reader);
250250
char *namespace = (char *)xmlTextReaderNamespaceUri(context.reader);
251-
int is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
251+
252+
int is_ovalsys = 0;
253+
if (namespace != NULL) {
254+
is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
255+
}
252256
/* start parsing */
253257
if (is_ovalsys && (strcmp(tagname, OVAL_ROOT_ELM_SYSCHARS) == 0)) {
254258
ret = oval_syschar_model_parse(context.reader, &context);

src/OVAL/oval_sys_parser.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ int oval_syschar_model_parse(xmlTextReaderPtr reader, struct oval_parser_context
5757
char *tagname = (char *)xmlTextReaderLocalName(reader);
5858
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
5959

60-
int is_ovalsys = strcmp((const char*)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
60+
int is_ovalsys = 0;
61+
if (namespace != NULL) {
62+
is_ovalsys = strcmp((const char*)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
63+
}
6164
if (is_ovalsys && (strcmp(tagname, "generator") == 0)) {
6265
struct oval_generator *gen;
6366
gen = oval_syschar_model_get_generator(context->syschar_model);

src/OVAL/oval_syschar.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,10 @@ int oval_syschar_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *
292292
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
293293
int return_code = 0;
294294

295-
int is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
295+
int is_ovalsys = 0;
296+
if (namespace != NULL) {
297+
is_ovalsys = strcmp((const char *)OVAL_SYSCHAR_NAMESPACE, namespace) == 0;
298+
}
296299
if (is_ovalsys && (strcmp(tagname, "object") == 0)) {
297300
char *object_id = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "id");
298301
struct oval_object *object = oval_definition_model_get_new_object(context->definition_model, object_id);

src/OVAL/oval_variable.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1082,7 +1082,7 @@ static int _oval_variable_parse_constant_tag(xmlTextReaderPtr reader, struct ova
10821082
xmlChar *namespace = xmlTextReaderNamespaceUri(reader);
10831083
struct oval_variable *variable = (struct oval_variable *)user;
10841084

1085-
if (strcmp("value", (char *) tagname) || strcmp(DEFINITION_NAMESPACE, (char *) namespace)) {
1085+
if (oscap_strcmp("value", (char *) tagname) || oscap_strcmp(DEFINITION_NAMESPACE, (char *) namespace)) {
10861086
dW("Invalid element <%s:%s> in constant variable %s on line %d.",
10871087
namespace, tagname, variable->id, xmlTextReaderGetParserLineNumber(reader));
10881088
goto out;

src/OVAL/results/oval_resModel.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,11 @@ int oval_results_model_import_source(struct oval_results_model *model, struct os
213213
/* make sure these are results */
214214
tagname = (char *)xmlTextReaderLocalName(context.reader);
215215
namespace = (char *)xmlTextReaderNamespaceUri(context.reader);
216-
int is_ovalres = strcmp((const char *)OVAL_RESULTS_NAMESPACE, namespace) == 0;
216+
217+
int is_ovalres = 0;
218+
if (namespace != NULL) {
219+
is_ovalres = strcmp((const char *)OVAL_RESULTS_NAMESPACE, namespace) == 0;
220+
}
217221
/* star parsing */
218222
if (is_ovalres && (strcmp(tagname, OVAL_ROOT_ELM_RESULTS) == 0)) {
219223
ret = oval_results_model_parse(context.reader, &context);
@@ -333,8 +337,12 @@ int oval_results_model_parse(xmlTextReaderPtr reader, struct oval_parser_context
333337
char *tagname = (char *)xmlTextReaderLocalName(reader);
334338
char *namespace = (char *)xmlTextReaderNamespaceUri(reader);
335339

336-
int is_ovalres = strcmp((const char *)OVAL_RESULTS_NAMESPACE, namespace) == 0;
337-
int is_ovaldef = (is_ovalres) ? false : (strcmp((const char *)OVAL_DEFINITIONS_NAMESPACE, namespace) == 0);
340+
int is_ovalres = 0;
341+
int is_ovaldef = 0;
342+
if (namespace != NULL) {
343+
is_ovalres = strcmp((const char *)OVAL_RESULTS_NAMESPACE, namespace) == 0;
344+
is_ovaldef = (is_ovalres) ? false : (strcmp((const char *)OVAL_DEFINITIONS_NAMESPACE, namespace) == 0);
345+
}
338346
if (is_ovalres && (strcmp(tagname, "generator") == 0)) {
339347
struct oval_generator *gen;
340348
gen = oval_results_model_get_generator(context->results_model);

0 commit comments

Comments
 (0)