From 4101f2eef0a839ea1eee4a37247343073f16777a Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" <Todd.Miller@courtesan.com> Date: Mon, 13 Sep 2010 11:37:29 -0400 Subject: [PATCH] Quiet a bogus compiler warning. --- plugins/sudoers/group_plugin.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/plugins/sudoers/group_plugin.c b/plugins/sudoers/group_plugin.c index 163f43d99..effaad0a2 100644 --- a/plugins/sudoers/group_plugin.c +++ b/plugins/sudoers/group_plugin.c @@ -60,26 +60,26 @@ int group_plugin_load(char *plugin_info) { struct stat sb; - char *args, path[PATH_MAX], savedch; + char *args, path[PATH_MAX]; char **argv = NULL; - size_t len; - int rc; + int len, rc; /* * Fill in .so path and split out args (if any). */ - path[0] = '\0'; - if (plugin_info[0] != '/') - strlcpy(path, _PATH_SUDO_PLUGIN_DIR, sizeof(path)); + args = strpbrk(plugin_info, " \t"); if ((args = strpbrk(plugin_info, " \t")) != NULL) { - savedch = *args; - *args = '\0'; + len = snprintf(path, sizeof(path), "%s%.*s", + (*plugin_info != '/') ? _PATH_SUDO_PLUGIN_DIR : "", + (int)(args - plugin_info), plugin_info); + args++; + } else { + len = snprintf(path, sizeof(path), "%s%s", + (*plugin_info != '/') ? _PATH_SUDO_PLUGIN_DIR : "", plugin_info); } - len = strlcat(path, plugin_info, sizeof(path)); - if (args != NULL) - *args++ = savedch; - if (len >= sizeof(path)) { - warningx("%s%s: %s", _PATH_SUDO_PLUGIN_DIR, plugin_info, + if (len <= 0 || len >= sizeof(path)) { + warningx("%s%s: %s", + (*plugin_info != '/') ? _PATH_SUDO_PLUGIN_DIR : "", plugin_info, strerror(ENAMETOOLONG)); return -1; } -- 2.40.0