]> granicus.if.org Git - sudo/commitdiff
Fix off by one error when allocating user_groups.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 23 Mar 2010 09:21:38 +0000 (05:21 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 23 Mar 2010 09:21:38 +0000 (05:21 -0400)
plugins/sudoers/sudoers.c

index e957f8aba23225b9fcb4bf37ae52a8cebeebe101..2e3743ed2081372d89c3ea4443a000c73133a485 100644 (file)
@@ -1237,12 +1237,14 @@ deserialize_info(char * const settings[], char * const user_info[])
            /* Count number of groups */
            const char *val = *cur + sizeof("groups=") - 1;
            const char *cp;
-           for (cp = val; *cp != '\0'; cp++) {
-               if (*cp == ',')
-                   user_ngroups++;
-           }
-           if (user_ngroups) {
-               user_groups = emalloc2(user_ngroups, sizeof(gid_t));
+           if (val[0] != '\0') {
+               user_ngroups = 1;
+               for (cp = val; *cp != '\0'; cp++) {
+                   if (*cp == ',')
+                       user_ngroups++;
+               }
+
+               user_groups = emalloc2(user_ngroups, sizeof(GETGROUPS_T));
                user_ngroups = 0;
                cp = val;
                for (;;) {