From b13257e4535ff88885265fe9f6ad4696121c997a Mon Sep 17 00:00:00 2001 From: hxy7yx <1595670487@qq.com> Date: Wed, 14 Aug 2024 14:23:30 +0800 Subject: [PATCH] guard against empty mqtt subscription topic --- src/core/manager_internal.c | 8 +++++--- tests/ft/neuron/api.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/manager_internal.c b/src/core/manager_internal.c index 997461bf..c06967a4 100644 --- a/src/core/manager_internal.c +++ b/src/core/manager_internal.c @@ -697,9 +697,11 @@ int neu_manager_subscribe(neu_manager_t *manager, const char *app, // guard against empty mqtt topic parameter // this is not an elegant solution due to the current architecture if (params && 0 == strcmp(adapter->module->module_name, "MQTT")) { - neu_json_elem_t elem = { .name = "topic", .t = NEU_JSON_STR }; - neu_parse_param(params, NULL, 1, &elem); - if (elem.v.val_str && 0 == strlen(elem.v.val_str)) { + neu_json_elem_t elem = { .name = "topic", + .t = NEU_JSON_STR, + .v.val_str = NULL }; + int ret = neu_parse_param(params, NULL, 1, &elem); + if (ret != 0 || (elem.v.val_str && 0 == strlen(elem.v.val_str))) { free(elem.v.val_str); return NEU_ERR_MQTT_SUBSCRIBE_FAILURE; } diff --git a/tests/ft/neuron/api.py b/tests/ft/neuron/api.py index c5b39ba0..d54b7e53 100644 --- a/tests/ft/neuron/api.py +++ b/tests/ft/neuron/api.py @@ -307,7 +307,7 @@ def get_template_tags(tmpl, group, name): @gen_check -def subscribe_group(app, driver, group, params={}): +def subscribe_group(app, driver, group, params={"topic": "/neuron/mqtt/test"}): return requests.post(url=config.BASE_URL + "/api/v2/subscribe", headers={"Authorization": config.default_jwt}, json={"app": app, "driver": driver, "group": group, "params": params})