diff --git a/dongle.c b/dongle.c index db9fba9206d537e13de8415ab703ff826c554baf..cbd7f869d26f235986d2a481b818171c3d6afb02 100644 --- a/dongle.c +++ b/dongle.c @@ -269,6 +269,7 @@ char *lexer(char **input, char *delimiter) if (token) { *token = '\0'; + substr = strdup(*input); if (!substr) { perror("strdup"); @@ -344,6 +345,7 @@ char *get_device_name(char *dir_name) while (!list_empty(&stack) && !name) { dr = pop(&stack); + dir = opendir(dr->path); if (!dir) { free(dr->path); @@ -434,7 +436,6 @@ int get_devices_from_path(char *input_path) continue; } snprintf(path, PATH_MAX, "%s/", input_path); - name = get_device_name(path); if (!name) continue; diff --git a/dongle_infrastructure.c b/dongle_infrastructure.c index 295ee0252dfcdb3eab7c0da52337a75ffa4f7620..76d9c5dc06070f593952b19c75e776c05554901c 100644 --- a/dongle_infrastructure.c +++ b/dongle_infrastructure.c @@ -684,11 +684,13 @@ void dongle_destroy_dynamic_object(struct ubus_object **obj) { if (!(*obj)) return; + if ((*obj)->name) { free((*obj)->name); (*obj)->name = NULL; } if (*obj) free(*obj); + *obj = NULL; } diff --git a/stack_operations.c b/stack_operations.c index 25add585e55abc29c1a6a2b54db9da095b6c067b..8ba8ab05674516f5f115cbcfaca314b90d5aece0 100644 --- a/stack_operations.c +++ b/stack_operations.c @@ -55,4 +55,4 @@ void print_list_dfs(struct list_head *list) list_for_each_entry(dr, list, list) { printf("path: %s\n", dr->path); } -} \ No newline at end of file +}