Closing CBOR containers on error situations before returning.
diff --git a/cmd/log_mgmt/src/log_mgmt.c b/cmd/log_mgmt/src/log_mgmt.c
index 9af2548..dc7731a 100644
--- a/cmd/log_mgmt/src/log_mgmt.c
+++ b/cmd/log_mgmt/src/log_mgmt.c
@@ -89,6 +89,7 @@
err |= cbor_encode_text_stringz(&rsp, "str");
break;
default:
+ cbor_encoder_close_container(&rsp, &str_encoder);
return MGMT_ERR_ECORRUPT;
}
@@ -213,6 +214,7 @@
rc = log_mgmt_impl_foreach_entry(log->name, &filter,
log_mgmt_cb_encode, &ctxt);
if (rc != 0 && rc != MGMT_ERR_EMSGSIZE) {
+ cbor_encoder_close_container(enc, &entries);
return rc;
}
@@ -242,6 +244,7 @@
rc = log_encode_entries(log, &logs, timestamp, index);
if (rc != 0) {
+ cbor_encoder_close_container(ctxt, &logs);
return rc;
}
@@ -327,6 +330,7 @@
break;
}
} else if (rc != 0) {
+ cbor_encoder_close_container(&ctxt->encoder, &logs);
return rc;
}
@@ -335,6 +339,7 @@
if (name_len == 0 || strcmp(name, log.name) == 0) {
rc = log_encode(&log, &logs, timestamp, index);
if (rc != 0) {
+ cbor_encoder_close_container(&ctxt->encoder, &logs);
return rc;
}
@@ -384,6 +389,7 @@
break;
}
if (rc != 0) {
+ cbor_encoder_close_container(&ctxt->encoder, &modules);
return rc;
}
@@ -427,6 +433,7 @@
break;
}
if (rc != 0) {
+ cbor_encoder_close_container(&ctxt->encoder, &log_list);
return rc;
}
@@ -469,6 +476,7 @@
break;
}
if (rc != 0) {
+ cbor_encoder_close_container(&ctxt->encoder, &level_map);
return rc;
}
diff --git a/cmd/os_mgmt/src/os_mgmt.c b/cmd/os_mgmt/src/os_mgmt.c
index 9a0db2a..03d3dab 100644
--- a/cmd/os_mgmt/src/os_mgmt.c
+++ b/cmd/os_mgmt/src/os_mgmt.c
@@ -175,6 +175,7 @@
rc = os_mgmt_taskstat_encode_one(&tasks_map, &task_info);
if (rc != 0) {
+ cbor_encoder_close_container(&ctxt->encoder, &tasks_map);
return rc;
}
}
diff --git a/cmd/stat_mgmt/src/stat_mgmt.c b/cmd/stat_mgmt/src/stat_mgmt.c
index 2f03a74..994d7c8 100644
--- a/cmd/stat_mgmt/src/stat_mgmt.c
+++ b/cmd/stat_mgmt/src/stat_mgmt.c
@@ -138,6 +138,7 @@
break;
} else if (rc != 0) {
/* Error. */
+ cbor_encoder_close_container(&ctxt->encoder, &arr_enc);
return rc;
}