diff options
author | Ralf Habacker <ralf.habacker@freenet.de> | 2021-12-04 13:53:10 +0100 |
---|---|---|
committer | Ralf Habacker <ralf.habacker@freenet.de> | 2021-12-06 10:09:20 +0000 |
commit | b9a77443100dd06faa37ba495da70ae37700f9f2 (patch) | |
tree | 0c96097584d492fa3be08001a1906b2b6141e435 /dbus | |
parent | 649f46642bfbdd5bf2999041f2576737a961a24b (diff) | |
download | dbus-b9a77443100dd06faa37ba495da70ae37700f9f2.tar.gz |
protect_argv(): Only set return variable in success case
This avoids overwriting the variable even if there is no result.
Diffstat (limited to 'dbus')
-rw-r--r-- | dbus/dbus-spawn-win.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/dbus/dbus-spawn-win.c b/dbus/dbus-spawn-win.c index 86e5324c..6037b9d1 100644 --- a/dbus/dbus-spawn-win.c +++ b/dbus/dbus-spawn-win.c @@ -368,15 +368,16 @@ protect_argv (char * const *argv, { int i; int argc = 0; + char **args = NULL; while (argv[argc]) ++argc; - *new_argv = dbus_malloc ((argc + 1) * sizeof (char *)); - if (*new_argv == NULL) + args = dbus_malloc ((argc + 1) * sizeof (char *)); + if (args == NULL) return -1; for (i = 0; i < argc; i++) - (*new_argv)[i] = NULL; + (args)[i] = NULL; /* Quote each argv element if necessary, so that it will get * reconstructed correctly in the C runtime startup code. Note that @@ -413,7 +414,7 @@ protect_argv (char * const *argv, p++; } - q = (*new_argv)[i] = dbus_malloc (len + need_dblquotes*2 + 1); + q = args[i] = dbus_malloc (len + need_dblquotes*2 + 1); if (q == NULL) return -1; @@ -443,9 +444,10 @@ protect_argv (char * const *argv, if (need_dblquotes) *q++ = '"'; *q++ = '\0'; - /* printf ("argv[%d]:%s, need_dblquotes:%s len:%d => %s\n", i, argv[i], need_dblquotes?"TRUE":"FALSE", len, (*new_argv)[i]); */ + /* printf ("argv[%d]:%s, need_dblquotes:%s len:%d => %s\n", i, argv[i], need_dblquotes?"TRUE":"FALSE", len, (args)[i]); */ } - (*new_argv)[argc] = NULL; + args[argc] = NULL; + *new_argv = args; return argc; } |