This defect was found by the coccinelle script "unchecked-strdup.cocci".
It can be backported to all supported branches.
---
 addons/51degrees/51d.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/addons/51degrees/51d.c b/addons/51degrees/51d.c
index a23b468d6..4f0f9f88f 100644
--- a/addons/51degrees/51d.c
+++ b/addons/51degrees/51d.c
@@ -107,6 +107,10 @@ static int _51d_data_file(char **args, int section_type, 
struct proxy *curpx,
        if (global_51degrees.data_file_path)
                free(global_51degrees.data_file_path);
        global_51degrees.data_file_path = strdup(args[1]);
+       if (global_51degrees.data_file_path == NULL) {
+               memprintf(err,"Out of memory.");
+               return -1;
+       }
 
        return 0;
 }
@@ -122,17 +126,26 @@ static int _51d_property_name_list(char **args, int 
section_type, struct proxy *
                memprintf(err,
                          "'%s' expects at least one 51Degrees property name.",
                          args[0]);
-               return -1;
+               goto fail;
        }
 
        while (*(args[cur_arg])) {
                name = calloc(1, sizeof(*name));
                name->name = strdup(args[cur_arg]);
+               if (name->name == NULL) {
+                       memprintf(err,"Out of memory.");
+                       goto fail_free_name;
+               }
                LIST_APPEND(&global_51degrees.property_names, &name->list);
                ++cur_arg;
        }
 
        return 0;
+
+fail_free_name:
+       free(name);
+fail:
+       return -1;
 }
 
 static int _51d_property_separator(char **args, int section_type, struct proxy 
*curpx,
-- 
2.46.0.windows.1



Reply via email to