]> granicus.if.org Git - sudo/commitdiff
Quiet a bogus compiler warning.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 13 Sep 2010 15:37:29 +0000 (11:37 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 13 Sep 2010 15:37:29 +0000 (11:37 -0400)
plugins/sudoers/group_plugin.c

index 163f43d99685928ee0e77bc7f135fcb87970fdcc..effaad0a2ea73c506542912e896234314be03ed3 100644 (file)
@@ -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;
     }