summaryrefslogtreecommitdiff
path: root/fw
diff options
context:
space:
mode:
Diffstat (limited to 'fw')
-rw-r--r--fw/app/src/http.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/fw/app/src/http.c b/fw/app/src/http.c
index eb3d695..1c24490 100644
--- a/fw/app/src/http.c
+++ b/fw/app/src/http.c
@@ -5,6 +5,7 @@
*/
+#include <errno.h>
#include <stdint.h>
#include <zephyr/init.h>
@@ -101,16 +102,24 @@ static int settings_handler(
) {
static char buffer[100];
- int ret = settings_to_json(buffer, sizeof(buffer));
+ int ret = settings_to_json(buffer, sizeof(buffer) - 1);
if (ret < 0) {
LOG_ERR("Could not serialize payload for settings request");
return ret;
}
- LOG_INF("Encoded: '%s'", buffer);
+ size_t len = strnlen(buffer, sizeof(buffer));
+ if (len + 2 > sizeof(buffer)) {
+ LOG_ERR("Settings JSON requires %d octets but buffer has only %d",
+ len + 2, sizeof(buffer));
+ return -ENOMEM;
+ }
+
+ buffer[len] = '\n';
+ buffer[len + 1] = '\0';
response_ctx->body = (const uint8_t *)buffer;
- response_ctx->body_len = ret;
+ response_ctx->body_len = len + 1;
response_ctx->final_chunk = true;
response_ctx->status = HTTP_200_OK;