Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
sudo.4837
sudo-1.8.10p3-fqdn_for_hostname.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File sudo-1.8.10p3-fqdn_for_hostname.patch of Package sudo.4837
From b4435725d108f34e5bb8726adf2cfe2d0adf3f8a Mon Sep 17 00:00:00 2001 Message-Id: <b4435725d108f34e5bb8726adf2cfe2d0adf3f8a.1486728148.git.npajkovsky@suse.cz> From: Nikola Pajkovsky <npajkovsky@suse.cz> Date: Fri, 10 Feb 2017 13:01:34 +0100 Subject: [PATCH] bsc1024145:: FQDN for hostname does not work anymore [upstream commit 832a4dee6b3cd4faac50fd5d070a643543482b3a] In set_fqdn() we neeed to set user_runhost/user_srunhost at the same time we set user_host/user_shost since that is what hostlist_matches() uses. Bug #678 Signed-off-by: Nikola Pajkovsky <npajkovsky@suse.cz> --- plugins/sudoers/sudoers.c | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) Index: sudo-1.8.10p3/plugins/sudoers/sudoers.c =================================================================== --- sudo-1.8.10p3.orig/plugins/sudoers/sudoers.c +++ sudo-1.8.10p3/plugins/sudoers/sudoers.c @@ -799,32 +799,69 @@ set_loginclass(struct passwd *pw) #endif /* - * Look up the fully qualified domain name and set user_host and user_shost. + * Look up the fully qualified domain name of user_host and user_runhost. + * Sets user_host, user_shost, user_runhost and user_srunhost. * Use AI_FQDN if available since "canonical" is not always the same as fqdn. */ static void set_fqdn(void) { struct addrinfo *res0, hint; + bool remote; char *p; debug_decl(set_fqdn, SUDO_DEBUG_PLUGIN) + /* If the -h flag was given we need to resolve both host and runhost. */ + remote = strcmp(user_runhost, user_host) != 0; + memset(&hint, 0, sizeof(hint)); hint.ai_family = PF_UNSPEC; hint.ai_flags = AI_FQDN; + + /* First resolve user_host, sets user_host and user_shost. */ if (getaddrinfo(user_host, NULL, &hint, &res0) != 0) { log_warning(MSG_ONLY, N_("unable to resolve host %s"), user_host); } else { if (user_shost != user_host) efree(user_shost); efree(user_host); - user_host = estrdup(res0->ai_canonname); + user_host = user_shost = estrdup(res0->ai_canonname); freeaddrinfo(res0); if ((p = strchr(user_host, '.')) != NULL) user_shost = estrndup(user_host, (size_t)(p - user_host)); - else - user_shost = user_host; } + + /* Next resolve user_runhost, sets user_runhost and user_srunhost. */ + if (remote) { + if (getaddrinfo(user_runhost, NULL, &hint, &res0) != 0) { + log_warning(MSG_ONLY, + N_("unable to resolve host %s"), user_runhost); + } else { + if (user_srunhost != user_runhost) + efree(user_srunhost); + efree(user_runhost); + user_runhost = user_srunhost = estrdup(res0->ai_canonname); + freeaddrinfo(res0); + if ((p = strchr(user_runhost, '.'))) { + user_srunhost = + estrndup(user_runhost, (size_t)(p - user_runhost)); + } + } + } else { + /* Not remote, just use user_host. */ + if (user_srunhost != user_runhost) + efree(user_srunhost); + efree(user_runhost); + user_runhost = user_srunhost = estrdup(user_host); + if ((p = strchr(user_runhost, '.'))) { + user_srunhost = + estrndup(user_runhost, (size_t)(p - user_runhost)); + } + } + + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "host %s, shost %s, runhost %s, srunhost %s", + user_host, user_shost, user_runhost, user_srunhost); debug_return; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor