cutils: replace strdup with g_strdup

Memory returned by get_relocated_path must be freed with
free or g_free depending on the path that the function
took; Coverity takes exception to this practice.  The
fix lets caller use g_free as is standard in QEMU.

While at it, mention the requirements on the caller in
the doc comment.

Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2020-11-02 13:19:53 -05:00
parent 83851c7c60
commit 090afdc5e6
2 changed files with 2 additions and 1 deletions

View File

@ -205,6 +205,7 @@ int qemu_pstrcmp0(const char **str1, const char **str2);
* as the prefix. For example, if `bindir` is `/usr/bin` and @dir is * as the prefix. For example, if `bindir` is `/usr/bin` and @dir is
* `/usr/share/qemu`, the function will append `../share/qemu` to the * `/usr/share/qemu`, the function will append `../share/qemu` to the
* directory that contains the running executable and return the result. * directory that contains the running executable and return the result.
* The returned string should be freed by the caller.
*/ */
char *get_relocated_path(const char *dir); char *get_relocated_path(const char *dir);

View File

@ -937,7 +937,7 @@ char *get_relocated_path(const char *dir)
/* Fail if qemu_init_exec_dir was not called. */ /* Fail if qemu_init_exec_dir was not called. */
assert(exec_dir[0]); assert(exec_dir[0]);
if (!starts_with_prefix(dir) || !starts_with_prefix(bindir)) { if (!starts_with_prefix(dir) || !starts_with_prefix(bindir)) {
return strdup(dir); return g_strdup(dir);
} }
result = g_string_new(exec_dir); result = g_string_new(exec_dir);