Skip to content

Commit b4ada9f

Browse files
committed
Fix other occurences of oscap_htable_add
If the hash table owns its elements, its responsible for freeing them. The callers of oscap_htable_add rely on the fact that the elements will be later freed by oscap_htable_free. However, if oscap_htable_add fails to insert the elements to the table, then the caller needs to free them.
1 parent 1c2863c commit b4ada9f

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

src/DS/rds.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -888,7 +888,10 @@ int ds_rds_create(const char* sds_file, const char* xccdf_result_file, const cha
888888
result = -1;
889889
oscap_source_free(oval_source);
890890
} else {
891-
oscap_htable_add(oval_result_sources, *oval_result_files, oval_source);
891+
if (!oscap_htable_add(oval_result_sources, *oval_result_files, oval_source)) {
892+
result = -1;
893+
oscap_source_free(oval_source);
894+
}
892895
}
893896
oval_result_files++;
894897
}

src/OVAL/oval_generator.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,10 @@ void oval_generator_update_timestamp(struct oval_generator *generator)
171171

172172
void oval_generator_add_platform_schema_version(struct oval_generator *generator, const char *platform, const char *schema_version)
173173
{
174-
oscap_htable_add(generator->platform_schema_versions, platform, oscap_strdup(schema_version));
174+
char *schema_version_dup = oscap_strdup(schema_version);
175+
if (!oscap_htable_add(generator->platform_schema_versions, platform, schema_version_dup)) {
176+
free(schema_version_dup);
177+
}
175178
}
176179

177180

0 commit comments

Comments
 (0)