From 568698b07fe7e9466348bf9a050bbc0e827cdf15 Mon Sep 17 00:00:00 2001 From: Bo Yang Date: Sun, 7 Feb 2010 14:45:42 +0800 Subject: [PATCH] s3: Fix malformed require_membership_of_sid. Signed-off-by: Bo Yang (cherry picked from commit 913a9f4e420c7a4177e6a7874e8ec2703f447918) --- nsswitch/pam_winbind.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/nsswitch/pam_winbind.c b/nsswitch/pam_winbind.c index 3e13517..b802036 100644 --- a/nsswitch/pam_winbind.c +++ b/nsswitch/pam_winbind.c @@ -1137,6 +1137,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; @@ -1192,6 +1193,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; -- 1.5.3