[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 for-4.15] tools/libxl: Work around unintialised variable libxl__domain_get_device_model_uid()
Various version of gcc, when compiling with -Og, complain: libxl_dm.c: In function 'libxl__domain_get_device_model_uid': libxl_dm.c:256:12: error: 'kill_by_uid' may be used uninitialized in this function [-Werror=maybe-uninitialized] 256 | if (kill_by_uid) | ^ The logic is very tangled. Set kill_by_uid on every path. No funcational change. Requested-by: Ian Jackson <iwj@xxxxxxxxxxxxxx> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Not-acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Ian Jackson <iwj@xxxxxxxxxxxxxx> CC: Wei Liu <wl@xxxxxxx> CC: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- tools/libs/light/libxl_dm.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c index db4cec6a76..5309496c58 100644 --- a/tools/libs/light/libxl_dm.c +++ b/tools/libs/light/libxl_dm.c @@ -152,13 +152,16 @@ static int libxl__domain_get_device_model_uid(libxl__gc *gc, user = b_info->device_model_user; if (user) { rc = userlookup_helper_getpwnam(gc, user, &user_pwbuf, &user_base); - if (rc) + if (rc) { + kill_by_uid = false; goto out; + } if (!user_base) { LOGD(ERROR, guest_domid, "Couldn't find device_model_user %s", user); rc = ERROR_INVAL; + kill_by_uid = false; goto out; } @@ -187,22 +190,29 @@ static int libxl__domain_get_device_model_uid(libxl__gc *gc, */ rc = userlookup_helper_getpwnam(gc, LIBXL_QEMU_USER_RANGE_BASE, &user_pwbuf, &user_base); - if (rc) + if (rc) { + kill_by_uid = false; goto out; + } + if (user_base) { struct passwd *user_clash, user_clash_pwbuf; intended_uid = user_base->pw_uid + guest_domid; rc = userlookup_helper_getpwuid(gc, intended_uid, &user_clash_pwbuf, &user_clash); - if (rc) + if (rc) { + kill_by_uid = false; goto out; + } + if (user_clash) { LOGD(ERROR, guest_domid, "wanted to use uid %ld (%s + %d) but that is user %s !", (long)intended_uid, LIBXL_QEMU_USER_RANGE_BASE, guest_domid, user_clash->pw_name); rc = ERROR_INVAL; + kill_by_uid = false; goto out; } @@ -221,8 +231,11 @@ static int libxl__domain_get_device_model_uid(libxl__gc *gc, */ user = LIBXL_QEMU_USER_SHARED; rc = userlookup_helper_getpwnam(gc, user, &user_pwbuf, &user_base); - if (rc) + if (rc) { + kill_by_uid = false; goto out; + } + if (user_base) { LOGD(WARN, guest_domid, "Could not find user %s, falling back to %s", LIBXL_QEMU_USER_RANGE_BASE, LIBXL_QEMU_USER_SHARED); @@ -240,6 +253,7 @@ static int libxl__domain_get_device_model_uid(libxl__gc *gc, "Could not find user %s or range base pseudo-user %s, cannot restrict", LIBXL_QEMU_USER_SHARED, LIBXL_QEMU_USER_RANGE_BASE); rc = ERROR_INVAL; + kill_by_uid = false; out: /* First, do a root check if appropriate */ -- 2.11.0
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |