Skip to content

Commit 59e1a0f

Browse files
authored
Merge pull request #1183 from mildass/fix_defects_detected_by_static_analysis_1.2
Add some missing free calls to prevent possible memory leaks
2 parents 618b9e3 + 69e7d7c commit 59e1a0f

File tree

6 files changed

+9
-4
lines changed

6 files changed

+9
-4
lines changed

src/CVRF/cvrf_priv.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1980,6 +1980,7 @@ struct cvrf_product_tree *cvrf_product_tree_parse(xmlTextReaderPtr reader) {
19801980
struct cvrf_product_tree *tree = cvrf_product_tree_new();
19811981
if (xmlTextReaderIsEmptyElement(reader) == 1) {
19821982
cvrf_set_parsing_error("ProductTree");
1983+
cvrf_product_tree_free(tree);
19831984
return NULL;
19841985
}
19851986
xmlTextReaderNextElementWE(reader, TAG_PRODUCT_TREE);
@@ -2085,6 +2086,7 @@ struct cvrf_note *cvrf_note_parse(xmlTextReaderPtr reader) {
20852086
struct cvrf_note *note = cvrf_note_new();
20862087
if (xmlTextReaderIsEmptyElement(reader) == 1) {
20872088
cvrf_set_parsing_error("Note");
2089+
cvrf_note_free(note);
20882090
return NULL;
20892091
}
20902092

@@ -2143,6 +2145,7 @@ struct cvrf_doc_tracking *cvrf_doc_tracking_parse(xmlTextReaderPtr reader) {
21432145
struct cvrf_doc_tracking *tracking = cvrf_doc_tracking_new();
21442146
if (xmlTextReaderIsEmptyElement(reader) == 1) {
21452147
cvrf_set_parsing_error("DocumentTracking");
2148+
cvrf_doc_tracking_free(tracking);
21462149
return NULL;
21472150
}
21482151

@@ -2214,6 +2217,7 @@ struct cvrf_doc_publisher *cvrf_doc_publisher_parse(xmlTextReaderPtr reader) {
22142217
publisher->type = cvrf_doc_publisher_type_parse(reader);
22152218
if (publisher->type == CVRF_DOC_PUBLISHER_UNKNOWN && xmlTextReaderIsEmptyElement(reader) == 1) {
22162219
cvrf_set_parsing_error("DocumentPublisher");
2220+
cvrf_doc_publisher_free(publisher);
22172221
return NULL;
22182222
}
22192223
publisher->vendor_id = (char *)xmlTextReaderGetAttribute(reader, ATTR_VENDOR_ID);

src/OVAL/oval_message.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ struct oval_message *oval_message_clone(struct oval_message *old_message)
6565
oval_message_level_t level = oval_message_get_level(old_message);
6666
oval_message_set_level(new_message, level);
6767
char *text = oval_message_get_text(old_message);
68-
oval_message_set_text(new_message, oscap_strdup(text));
68+
oval_message_set_text(new_message, text);
6969
return new_message;
7070
}
7171

src/OVAL/oval_sysEnt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ struct oval_sysent *oval_sysent_clone(struct oval_syschar_model *new_model, stru
7777

7878
char *old_value = oval_sysent_get_value(old_item);
7979
if (old_value) {
80-
oval_sysent_set_value(new_item, oscap_strdup(old_value));
80+
oval_sysent_set_value(new_item, old_value);
8181
}
8282

8383
char *old_name = oval_sysent_get_name(old_item);

src/OVAL/probes/fsdev.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,7 @@ fsdev_t *fsdev_strinit(const char *fs_names)
408408
e = errno;
409409
free(fs_arr);
410410
errno = e;
411+
free(pstr);
411412

412413
return (lfs);
413414
}

src/OVAL/probes/independent/textfilecontent.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,8 @@ int probe_main(probe_ctx *ctx, void *arg)
373373
SEXP_t *ent_val;
374374
ent_val = probe_ent_getval(line_ent);
375375
pattern = SEXP_string_cstr(ent_val);
376-
assume_d(pattern != NULL, -1);
377376
SEXP_vfree(line_ent, ent_val, NULL);
377+
assume_d(pattern != NULL, -1);
378378

379379
/* behaviours are not important if filepath is used */
380380
if(filepath_ent != NULL && behaviors_ent != NULL) {

src/OVAL/probes/independent/textfilecontent54.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,9 +406,9 @@ int probe_main(probe_ctx *ctx, void *arg)
406406
SEXP_t *ent_val;
407407
ent_val = probe_ent_getval(patt_ent);
408408
pfd.pattern = SEXP_string_cstr(ent_val);
409-
assume_d(pfd.pattern != NULL, -1);
410409
SEXP_free(patt_ent);
411410
SEXP_free(ent_val);
411+
assume_d(pfd.pattern != NULL, -1);
412412

413413
/* wtf?
414414
i_val = s_val = "0";

0 commit comments

Comments
 (0)