diff --git a/src/target_set.c b/src/target_set.c
index 5bf40fa357b6e0cf0ecfc6f1ee0ab16b8ef0fa53..a40273c0675c95d60c1b715e773feb0389848d59 100644 (file)
--- a/src/target_set.c
+++ b/src/target_set.c
REPLACE_FIELD("%{type_instance}", vl->type_instance);
if (vl->meta != NULL) {
- char **meta_toc;
+ char **meta_toc = NULL;
int meta_entries = meta_data_toc(vl->meta, &meta_toc);
+ if (meta_entries <= 0)
+ return;
+
for (int i = 0; i < meta_entries; i++) {
char meta_name[DATA_MAX_NAME_LEN];
char *value_str;
ERROR("Target `set': Unable to get replacement metadata value `%s'.",
key);
strarray_free(meta_toc, (size_t)meta_entries);
+ meta_data_destroy(new_meta);
return (status);
}
if (status) {
ERROR("Target `set': Unable to set metadata value `%s'.", key);
strarray_free(meta_toc, (size_t)meta_entries);
+ meta_data_destroy(new_meta);
return (status);
}
}