s3: Fix malformed require_membership_of_sid.
authorBo Yang <boyang@samba.org>
Sun, 7 Feb 2010 06:45:42 +0000 (14:45 +0800)
committerKarolin Seeger <kseeger@samba.org>
Mon, 15 Feb 2010 13:46:51 +0000 (14:46 +0100)
Signed-off-by: Bo Yang <boyang@samba.org>
(cherry picked from commit 913a9f4e420c7a4177e6a7874e8ec2703f447918)

Fix bug #7106.
(cherry picked from commit 7e965f545b6f4d5f1ad12f4177eb477248c895c8)

nsswitch/pam_winbind.c

index ec05f7569759bfe55ca9542fd323acdeb4c22d33..b411eb7f77b539be58c5e272291a8e2f669a54bd 100644 (file)
@@ -1036,6 +1036,7 @@ static bool winbind_name_list_to_sid_string_list(struct pwb_context *ctx,
        char *current_name = NULL;
        const char *search_location;
        const char *comma;
+       int len;
 
        if (sid_list_buffer_size > 0) {
                sid_list_buffer[0] = 0;
@@ -1091,6 +1092,17 @@ static bool winbind_name_list_to_sid_string_list(struct pwb_context *ctx,
                _make_remark_format(ctx, PAM_TEXT_INFO, _("Cannot convert group %s "
                                "to sid, please contact your administrator to see "
                                "if group %s is valid."), search_location, search_location);
+               /*
+                * The lookup of the last name failed..
+                * It results in require_member_of_sid ends with ','
+                * It is malformated parameter here, overwrite the last ','.
+                */
+               len = strlen(sid_list_buffer);
+               if (len) {
+                       if (sid_list_buffer[len - 1] == ',') {
+                               sid_list_buffer[len - 1] = '\0';
+                       }
+               }
        }
 
        result = true;