[SSSD] [PATCH] IFP: Return group names with the right case
Pavel Březina
pbrezina at redhat.com
Wed Dec 3 15:33:33 UTC 2014
On 12/01/2014 11:07 PM, Jakub Hrozek wrote:
> Hi,
>
> the attached patch fixes an issue found by Jan P. in the IFP code.
>
>
> 0001-IFP-Return-group-names-with-the-right-case.patch
>
>
> From fa7fdf4df1c29bd066fa32b98b079a2ae24ab3fc Mon Sep 17 00:00:00 2001
> From: Jakub Hrozek<jhrozek at redhat.com>
> Date: Mon, 1 Dec 2014 23:00:06 +0100
> Subject: [PATCH] IFP: Return group names with the right case
>
> The IFP code wasn't honoring the case settings of the domain.
> ---
> src/responder/ifp/ifpsrv_cmd.c | 17 +++++++++++++----
> 1 file changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/src/responder/ifp/ifpsrv_cmd.c b/src/responder/ifp/ifpsrv_cmd.c
> index 3b7442233a5b4d01f430c9ffdbcdc949637d6db9..5e2be20e8ad81e2b651f1e02ce58974bfaa56984 100644
> --- a/src/responder/ifp/ifpsrv_cmd.c
> +++ b/src/responder/ifp/ifpsrv_cmd.c
> @@ -370,6 +370,7 @@ ifp_user_get_groups_reply(struct sss_domain_info *domain,
> int i, num;
> const char *name;
> const char **groupnames;
> + const char *tmpstr;
>
> /* one less, the first one is the user entry */
> num = res->count - 1;
> @@ -388,15 +389,23 @@ ifp_user_get_groups_reply(struct sss_domain_info *domain,
> }
>
> if (ireq->ifp_ctx->rctx->override_space != '\0') {
> - groupnames[i] = sss_replace_space(groupnames, name,
> - ireq->ifp_ctx->rctx->override_space);
> - if (groupnames[i] == NULL) {
> + tmpstr = sss_replace_space(groupnames, name,
> + ireq->ifp_ctx->rctx->override_space);
Sure, you can allocate tmpstr on groupnames, I think ireq or tmp_ctx
would be better choice.
> + if (tmpstr == NULL) {
> DEBUG(SSSDBG_MINOR_FAILURE, "Cannot normalize %s\n", name);
> continue;
> }
> } else {
> - groupnames[i] = name;
> + tmpstr = name;
> }
> +
> + groupnames[i] = sss_get_cased_name(ireq, tmpstr, domain->case_preserve);
Here, groupnames should be used as talloc context instead of ireq.
sss_get_cased_names duplicates the string so tmpstr should be freed.
> + if (groupnames[i] == NULL) {
> + DEBUG(SSSDBG_CRIT_FAILURE,
> + "sss_get_cased_name failed, skipping\n");
> + continue;
> + }
> +
> DEBUG(SSSDBG_TRACE_FUNC, "Adding group %s\n", groupnames[i]);
> }
More information about the sssd-devel
mailing list