On (05/08/16 11:56), Pavel Březina wrote:
>On 07/27/2016 11:17 AM, Petr Cech wrote:
>> On 07/27/2016 10:57 AM, Pavel Březina wrote:
>> > On 07/27/2016 10:26 AM, Petr Cech wrote:
>> > > Hi list,
>> > > 
>> > > there is patch for [1] attached.
>> > > 
>> > > [1] https://fedorahosted.org/sssd/ticket/3084
>> > > 
>> > > If you prefer two commits--one for reverting and second with the
>> > > patch--don't hesitate to tell me it. :-)
>> > > 
>> > > Regards
>> > > 
>> > > --
>> > > Petr^4 Čech
>> > > 
>> > > 0001-PROVIDER-Conversion-empty-string-from-D-Bus-to-NULL.patch
>> > > 
>> > > 
>> > >  From d3942580b3eb1d48a761a91b4c9c68c15cfb8c33 Mon Sep 17 00:00:00 2001
>> > > From: Petr Cech<pc...@redhat.com>
>> > > Date: Wed, 27 Jul 2016 09:38:25 +0200
>> > > Subject: [PATCH] PROVIDER: Conversion empty string from D-Bus to NULL
>> > > 
>> > > This patch fixes the issue with empty string recieving from D-Bus.
>> > > Data providers obtains NULL. So this is simple conversin.
>> > > 
>> > > It also revert "LDAP: Lookup services by all protocols unless
>> > > a protocol is specified". This reverts
>> > > commit aa58e216c1f794bd335151f19e79adbb3ddf4c73.
>> > > 
>> > > Resolves:
>> > > https://fedorahosted.org/sssd/ticket/3084
>> > > ---
>> > >   src/providers/data_provider/dp_target_id.c | 4 ++--
>> > >   src/providers/ldap/ldap_id_services.c      | 7 ++-----
>> > >   2 files changed, 4 insertions(+), 7 deletions(-)
>> > > 
>> > > diff --git a/src/providers/data_provider/dp_target_id.c
>> > > b/src/providers/data_provider/dp_target_id.c
>> > > index
>> > > f24b2ccb62c07eb900b5c057a1a3dbf824c553a9..593e2e83e43d9c5ff24a63597fe5bf658252e5c2
>> > > 
>> > > 100644
>> > > --- a/src/providers/data_provider/dp_target_id.c
>> > > +++ b/src/providers/data_provider/dp_target_id.c
>> > > @@ -62,7 +62,7 @@ static bool check_and_parse_filter(struct dp_id_data
>> > > *data,
>> > >                    {0, 0, 0}};
>> > >       int i;
>> > > 
>> > > -    if (filter == NULL) {
>> > > +    if (filter == NULL && filter[0] != '\0') {
>> > 
>> > SBUS_IS_STRING_EMPTY is a better choice IMHO.
>> 
>> Addressed.
>> 
>> > >           return false;
>> > >       }
>> > > 
>> > > @@ -70,7 +70,7 @@ static bool check_and_parse_filter(struct dp_id_data
>> > > *data,
>> > >           if (strncmp(filter, types[i].name, types[i].lenght) == 0) {
>> > >               data->filter_type = types[i].type;
>> > >               data->filter_value = &filter[types[i].lenght];
>> > 
>> > I think we should call SBUS_SET_STRING even in the line above. I know
>> > filter can't be NULL but in theory you can pass filter="key=" with empty
>> > value and than data->filter_value would be an empty string instead of
>> > NULL. I don't think we use an empty value in filter anywhere though.
>> 
>> Addressed.
>> 
>> > 
>> > > -            data->extra_value = extra;
>> > > +            data->extra_value = SBUS_SET_STRING(extra);
>> > >               return true;
>> > >           }
>> > >       }
>> > > diff --git a/src/providers/ldap/ldap_id_services.c
>> > > b/src/providers/ldap/ldap_id_services.c
>> > > index
>> > > 401228c20af31ae2df9bb3d35ed25fb6f06b1839..77215127b53297d840eaa4d2f35a75eedb085e43
>> > > 
>> > > 100644
>> > > --- a/src/providers/ldap/ldap_id_services.c
>> > > +++ b/src/providers/ldap/ldap_id_services.c
>> > > @@ -89,9 +89,6 @@ services_get_send(TALLOC_CTX *mem_ctx,
>> > >       state->sysdb = sdom->dom->sysdb;
>> > >       state->name = name;
>> > >       state->protocol = protocol;
>> > > -    if (state->protocol != NULL && state->protocol[0] == '\0') {
>> > > -        state->protocol = NULL;
>> > > -    }
>> > >       state->filter_type = filter_type;
>> > >       state->noexist_delete = noexist_delete;
>> > > 
>> > > @@ -117,8 +114,8 @@ services_get_send(TALLOC_CTX *mem_ctx,
>> > >       ret = sss_filter_sanitize(state, name, &clean_name);
>> > >       if (ret != EOK)  goto error;
>> > > 
>> > > -    if (state->protocol != NULL) {
>> > > -        ret = sss_filter_sanitize(state, state->protocol,
>> > > &clean_protocol);
>> > > +    if (protocol) {
>> > 
>> > Please use if (protocol == NULL)
>> 
>> Addressed.
>> 
>> This last is changing original code before commit reverting.
>> Reverted commit used the opposite condition.
>> 
>> Is it right this way?
>> 
>> > > +        ret = sss_filter_sanitize(state, protocol, &clean_protocol);
>> > >           if (ret != EOK)  goto error;
>> > >       }
>> > 
>> > I checked other dp targets and this place is the only one that needs
>> > changing.
>> 
>> Thank you, Jakub and Pavel, for comments.
>> Fixed patch set is attached.
>
>Ack.
master:
* dc30c60f166ad9adc63a47a1013508a71624ac87
* e4ba22c165be4b0ccd0e1b9fc92f2f1e35f78a82

LS
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org

Reply via email to