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