s3: Fix malformed require_membership_of_sid.
authorBo Yang <boyang@samba.org>
Sun, 7 Feb 2010 07:04:51 +0000 (15:04 +0800)
committerKarolin Seeger <kseeger@samba.org>
Wed, 24 Feb 2010 15:25:09 +0000 (16:25 +0100)
Signed-off-by: Bo Yang <boyang@samba.org>
Fix bug #7106.
(cherry picked from commit 0ee0ba83dcd9726244b07c1747e0676a74e1d82f)

source/nsswitch/pam_winbind.c

index 74540817af0d6574d35e7b4691de84ab3ce68398..5dccba1d3106a55a0f5355551df0f665b762fafc 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;