libuci: fix false positive warning on older gcc versions master
authorFelix Fietkau <nbd@nbd.name>
Tue, 28 Jan 2025 18:55:25 +0000 (19:55 +0100)
committerFelix Fietkau <nbd@nbd.name>
Tue, 28 Jan 2025 18:56:34 +0000 (19:56 +0100)
Fixes the following warning:

  libuci.c: In function 'uci_set_conf2dir':
  libuci.c:97:59: error: argument 'dir' might be clobbered by 'longjmp' or 'vfork' [-Werror=clobbered]
     97 | int uci_set_conf2dir(struct uci_context *ctx, const char *dir)
        |                                               ~~~~~~~~~~~~^~~
  cc1: all warnings being treated as errors

Reported-by: Matthias Franck <matthias.franck@softathome.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
libuci.c

index cffb916d6715eb87987cdacecd8541bf0fb5d05d..d8545496c70fa1555d5b757edb25d3c7ac5f78e7 100644 (file)
--- a/libuci.c
+++ b/libuci.c
@@ -98,11 +98,11 @@ int uci_set_conf2dir(struct uci_context *ctx, const char *dir)
 {
        char *cdir;
 
-       UCI_HANDLE_ERR(ctx);
-       if (dir && !dir[0])
-               dir = NULL;
+       if (!dir || !dir[0])
+               cdir = NULL;
+       else if ((cdir = strdup(dir)) == NULL)
+               return UCI_ERR_MEM;
 
-       cdir = dir ? uci_strdup(ctx, dir) : NULL;
        if (ctx->conf2dir != uci_conf2dir)
                free(ctx->conf2dir);
        ctx->conf2dir = cdir;