From 4aae321f11e3087d4e4bf65f945e5800f1d4f2c5 Mon Sep 17 00:00:00 2001
From: Dimitri Staessens <dimitri@ouroboros.rocks>
Date: Tue, 15 Feb 2022 20:23:50 +0100
Subject: irmd: Fix argvdup util function

The argvdup function didn't handle the case where argc is 0.
Small refactor that also handles this case correctly.

Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
---
 src/irmd/utils.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/irmd/utils.c b/src/irmd/utils.c
index 976dcfa2..fade2bee 100644
--- a/src/irmd/utils.c
+++ b/src/irmd/utils.c
@@ -39,9 +39,9 @@ void argvfree(char ** argv)
 
 char ** argvdup(char ** argv)
 {
-        int argc = 0;
+        int     argc = 0;
         char ** argv_dup = argv;
-        int i;
+        int     i;
 
         if (argv == NULL)
                 return NULL;
@@ -49,16 +49,18 @@ char ** argvdup(char ** argv)
         while (*(argv_dup++) != NULL)
                 argc++;
 
-        if (argc != 0) {
-                argv_dup = malloc((argc + 1) * sizeof(*argv_dup));
-                for (i = 0; i < argc; ++i) {
-                        argv_dup[i] = strdup(argv[i]);
-                        if (argv_dup[i] == NULL) {
-                                argvfree(argv_dup);
-                                return NULL;
-                        }
+        argv_dup = malloc((argc + 1) * sizeof(*argv_dup));
+        if (argv_dup == NULL)
+                return NULL;
+
+        for (i = 0; i < argc; ++i) {
+                argv_dup[i] = strdup(argv[i]);
+                if (argv_dup[i] == NULL) {
+                        argvfree(argv_dup);
+                        return NULL;
                 }
         }
+
         argv_dup[argc] = NULL;
         return argv_dup;
 }
-- 
cgit v1.2.3