diff --git a/libbbfdm-api/legacy/dmcommon.c b/libbbfdm-api/legacy/dmcommon.c index ff1bd07b..e4e4dd24 100644 --- a/libbbfdm-api/legacy/dmcommon.c +++ b/libbbfdm-api/legacy/dmcommon.c @@ -317,13 +317,18 @@ void free_dmmap_config_dup_list(struct list_head *dup_list) struct uci_section *get_config_section_from_dmmap_section_name(const char *config_sec_name) { - if (DM_STRLEN(config_sec_name) == 0) + int len = DM_STRLEN(config_sec_name); + + if (len == 0) return NULL; - char *p = strchr(config_sec_name, '.'); + char tmp[len + 1]; + snprintf(tmp, sizeof(tmp), "%s", config_sec_name); + + char *p = strchr(tmp, '.'); if (p) *p = 0; - return dmuci_get_section(config_sec_name, p ? p + 1 : ""); + return dmuci_get_section(tmp, p ? p + 1 : ""); } struct uci_section *get_origin_section_from_config(const char *package, const char *section_type, const char *orig_section_name)