On Tue, Feb 23, 2016 at 09:39:34AM +0100, Lukas Slebodnik wrote:
> On (22/02/16 10:44), Jakub Hrozek wrote:
> >On Mon, Feb 22, 2016 at 10:35:21AM +0100, Lukas Slebodnik wrote:
> >> On (22/02/16 10:28), Jakub Hrozek wrote:
> >> >On Mon, Feb 22, 2016 at 10:19:31AM +0100, Lukas Slebodnik wrote:
> >> >> On (22/02/16 10:01), Jakub Hrozek wrote:
> >> >> >Hi,
> >> >> >
> >> >> >during my work on pam_hbac I ran into some issues in libipa_hbac that I
> >> >> >would like to fix. And before doing the work I wanted to check if 
> >> >> >anyone
> >> >> >is opposed to these changes.
> >> >> >
> >> >> >I would like to:
> >> >> >    1) Stop using C99 in libipa_hbac. pam_hbac can run on old and/or
> >> >> >    strange platforms that don't support C99 compilers.
> >> >> >
> >> >> >    2) Stop using sss_utf8_case_eq unconditionally and rather use an
> >> >> >    externally-provided function, a bit like we already set the debug
> >> >> >    function. I was thinking even about creating hbac_init() that
> >> >> >    would accept these functions and return a context which would then
> >> >> >    be passed to other libipa_hbac functions, but this would be an API
> >> >> >    break. Alternatively, we could just use a function setter, I just 
> >> >> > think
> >> >> >    the context might be clearer..and IIRC the C libipa_hbac API is 
> >> >> > used
> >> >> >    only by the python bindings at the moment.
> >> >> >
> >> >> what about ifdef?
> >> >
> >> >How would I solve this with ifdef? I mean, the consumer of the library
> >> >has to provide the UTF8 case-matching function one way or another.
> >> The same way as in src/util/sss_utf8.c.
> >> or which (external) function would you like to use on other platforms?
> >
> >I think this is fine for whoever is implementing the functions, but I'm
> >not sure I like ifdefs in the libipa_hbac itself..
> >
> >If we don't want to change the API, what about adding
> >"hbac_set_utf8_case_eq_fn()" that SSSD would call with
> >sss_utf8_case_eq() and pam_hbac would call it with something like
> >ph_utf8_case_eq() ?
> >
> >(I didn't like the global function pointer inside libipa_hbac, that's
> >why the context seemed nicer to me..)
> 
> src/util/sss_utf8.c is part of libipa_hbac

thanks, I missed that.

> 
> libipa_hbac_la_SOURCES = \
>     src/providers/ipa/hbac_evaluator.c \
>     src/util/sss_utf8.c
> 
> Function is not exported and therefore not visible in objdump output
> sh$ objdump -T /usr/lib64/libipa_hbac.so.0 | grep sss
> sh$ echo $?
> 1
> 
> But you can see that library depends on libglib
> sh$ objdump -p /usr/lib64/libipa_hbac.so.0 | grep NEEDED
>   NEEDED               libglib-2.0.so.0
>   NEEDED               libc.so.6
> 
> IMHO it's better if utf8 string comparision is part of library.
> 
> Could you explain benefit of your approach?

There is none -- I thought for some reason that the hbac evaluator depended
on libsss_util, but you're right that we actually use:
    825 libipa_hbac_la_SOURCES = \
    826     src/providers/ipa/hbac_evaluator.c \
    827     src/util/sss_utf8.c

Which makes sense for pam_hbac, too, so I'm just going to borrow
sss_utf8 as well in pam_hbac.

Sorry about the confusion.
_______________________________________________
sssd-devel mailing list
[email protected]
https://lists.fedorahosted.org/admin/lists/[email protected]

Reply via email to