From 249aae0c2ffa685008c03f5d06e05c2989b1ec99 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 16 Oct 2014 08:36:33 +0200 Subject: [PATCH] handle: Process empty LIBGUESTFS_* environment variables correctly (RHBZ#1153515). Ignore an environment variable: - if an environment variable is an empty string, AND - if an empty string would have no meaning for that environment variable (eg. LIBGUESTFS_BACKEND can only take on certain values, and an empty string is not one of them). Note that LIBGUESTFS_BACKEND_SETTINGS is meaningful as an empty string, and for this case I have removed the STRNEQ (str, "") test. Previously: $ LIBGUESTFS_BACKEND="" guestfish -a /dev/null run libguestfs: error: invalid backend: After this commit: $ LIBGUESTFS_BACKEND="" guestfish -a /dev/null run (no error message is printed) --- src/handle.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/handle.c b/src/handle.c index 0200528ae..141ba7de9 100644 --- a/src/handle.c +++ b/src/handle.c @@ -192,13 +192,13 @@ parse_environment (guestfs_h *g, guestfs_set_verbose (g, 1); str = do_getenv (data, "LIBGUESTFS_TMPDIR"); - if (str) { + if (str && STRNEQ (str, "")) { if (guestfs_set_tmpdir (g, str) == -1) return -1; } str = do_getenv (data, "LIBGUESTFS_CACHEDIR"); - if (str) { + if (str && STRNEQ (str, "")) { if (guestfs_set_cachedir (g, str) == -1) return -1; } @@ -208,15 +208,15 @@ parse_environment (guestfs_h *g, return -1; str = do_getenv (data, "LIBGUESTFS_PATH"); - if (str) + if (str && STRNEQ (str, "")) guestfs_set_path (g, str); str = do_getenv (data, "LIBGUESTFS_HV"); - if (str) + if (str && STRNEQ (str, "")) guestfs_set_hv (g, str); else { str = do_getenv (data, "LIBGUESTFS_QEMU"); - if (str) + if (str && STRNEQ (str, "")) guestfs_set_hv (g, str); } @@ -225,7 +225,7 @@ parse_environment (guestfs_h *g, guestfs_set_append (g, str); str = do_getenv (data, "LIBGUESTFS_MEMSIZE"); - if (str) { + if (str && STRNEQ (str, "")) { if (sscanf (str, "%d", &memsize) != 1) { error (g, _("non-numeric value for LIBGUESTFS_MEMSIZE")); return -1; @@ -237,20 +237,20 @@ parse_environment (guestfs_h *g, } str = do_getenv (data, "LIBGUESTFS_BACKEND"); - if (str) { + if (str && STRNEQ (str, "")) { if (guestfs_set_backend (g, str) == -1) return -1; } else { str = do_getenv (data, "LIBGUESTFS_ATTACH_METHOD"); - if (str) { + if (str && STRNEQ (str, "")) { if (guestfs_set_backend (g, str) == -1) return -1; } } str = do_getenv (data, "LIBGUESTFS_BACKEND_SETTINGS"); - if (str && STRNEQ (str, "")) { + if (str) { CLEANUP_FREE_STRING_LIST char **settings = guestfs___split_string (':', str); if (settings == NULL) {