diff mbox series

[1/1] libtirpc: Add detection for new rpc_gss_sec members

Message ID 20231025180141.416189-1-pvorel@suse.cz (mailing list archive)
State New, archived
Headers show
Series [1/1] libtirpc: Add detection for new rpc_gss_sec members | expand

Commit Message

Petr Vorel Oct. 25, 2023, 6:01 p.m. UTC
From: Petr Vorel <petr.vorel@gmail.com>

4b272471 started to use struct rpc_gss_sec member minor_status, which
was added in new libtirpc 1.3.4. Add check for the member to prevent
failure on older libtirpc headers.

Fixes: 4b272471 ("gssd: handle KRB5_AP_ERR_BAD_INTEGRITY for machine credentials")
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 aclocal/libtirpc.m4 | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Steve Dickson Nov. 13, 2023, 5:05 p.m. UTC | #1
Hello,

On 10/25/23 2:01 PM, Petr Vorel wrote:
> From: Petr Vorel<petr.vorel@gmail.com>
> 
> 4b272471 started to use struct rpc_gss_sec member minor_status, which
> was added in new libtirpc 1.3.4. Add check for the member to prevent
> failure on older libtirpc headers.
> 
> Fixes: 4b272471 ("gssd: handle KRB5_AP_ERR_BAD_INTEGRITY for machine credentials")
> Signed-off-by: Petr Vorel<pvorel@suse.cz>
> ---
>   aclocal/libtirpc.m4 | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/aclocal/libtirpc.m4 b/aclocal/libtirpc.m4
> index bddae022..dd351722 100644
> --- a/aclocal/libtirpc.m4
> +++ b/aclocal/libtirpc.m4
> @@ -25,6 +25,10 @@ AC_DEFUN([AC_LIBTIRPC], [
>                            [AC_DEFINE([HAVE_LIBTIRPC_SET_DEBUG], [1],
>                                       [Define to 1 if your tirpc library provides libtirpc_set_debug])],,
>                            [${LIBS}])])
> +     AS_IF([test "$enable_gss" = "yes"],
> +           [AC_CHECK_MEMBER(struct rpc_gss_sec.minor_status,,
> +                         [AC_MSG_ERROR([Missing rpc_gss_sec.minor_status in <rpc/auth_gss.h>, update libtirpc or run with --disable-gss])],
> +                         [#include <rpc/auth_gss.h>])])
>   
>     AC_SUBST([AM_CPPFLAGS])
>     AC_SUBST(LIBTIRPC)
> -- 2.42.0
> 
This does not work... since it is looking at that gssrpc/auth_gss.h
instead of the tirpc/rpc/auth_gss.h so the check fails

I like the idea of having the check, but I'm not sure on
how to point it in the right direction.

steved.
Petr Vorel Nov. 13, 2023, 6:30 p.m. UTC | #2
Hi Steve,

Thanks for having a look.

> Hello,

> On 10/25/23 2:01 PM, Petr Vorel wrote:
> > From: Petr Vorel<petr.vorel@gmail.com>

> > 4b272471 started to use struct rpc_gss_sec member minor_status, which
> > was added in new libtirpc 1.3.4. Add check for the member to prevent
> > failure on older libtirpc headers.

> > Fixes: 4b272471 ("gssd: handle KRB5_AP_ERR_BAD_INTEGRITY for machine credentials")
> > Signed-off-by: Petr Vorel<pvorel@suse.cz>
> > ---
> >   aclocal/libtirpc.m4 | 4 ++++
> >   1 file changed, 4 insertions(+)

> > diff --git a/aclocal/libtirpc.m4 b/aclocal/libtirpc.m4
> > index bddae022..dd351722 100644
> > --- a/aclocal/libtirpc.m4
> > +++ b/aclocal/libtirpc.m4
> > @@ -25,6 +25,10 @@ AC_DEFUN([AC_LIBTIRPC], [
> >                            [AC_DEFINE([HAVE_LIBTIRPC_SET_DEBUG], [1],
> >                                       [Define to 1 if your tirpc library provides libtirpc_set_debug])],,
> >                            [${LIBS}])])
> > +     AS_IF([test "$enable_gss" = "yes"],
> > +           [AC_CHECK_MEMBER(struct rpc_gss_sec.minor_status,,
> > +                         [AC_MSG_ERROR([Missing rpc_gss_sec.minor_status in <rpc/auth_gss.h>, update libtirpc or run with --disable-gss])],
> > +                         [#include <rpc/auth_gss.h>])])
> >     AC_SUBST([AM_CPPFLAGS])
> >     AC_SUBST(LIBTIRPC)
> > -- 2.42.0

> This does not work... since it is looking at that gssrpc/auth_gss.h
> instead of the tirpc/rpc/auth_gss.h so the check fails
Is it? There is no <gssrpc/auth_gss.h>. I suppose you test on some recent
Fedora, I'll retest it.

I tested it on openSUSE Tumbleweed, where libtirpc-devel is
installed into /usr/include/rpc/, thus /usr/include/rpc/auth_gss.h exists.
But on Debian (and likely on RHEL/Fedora as you noticed it) is on
/usr/include/tirpc/rpc/auth_gss.h.

I hoped that this is handled elsewhere via -I/usr/include/tirpc.
So, I'm really confused why would have look at <gssrpc/auth_gss.h>.

Kind regards,
Petr

> I like the idea of having the check, but I'm not sure on
> how to point it in the right direction.

> steved.
Steve Dickson Nov. 13, 2023, 6:48 p.m. UTC | #3
On 11/13/23 1:30 PM, Petr Vorel wrote:
> Hi Steve,
> 
> Thanks for having a look.
> 
>> Hello,
> 
>> On 10/25/23 2:01 PM, Petr Vorel wrote:
>>> From: Petr Vorel<petr.vorel@gmail.com>
> 
>>> 4b272471 started to use struct rpc_gss_sec member minor_status, which
>>> was added in new libtirpc 1.3.4. Add check for the member to prevent
>>> failure on older libtirpc headers.
> 
>>> Fixes: 4b272471 ("gssd: handle KRB5_AP_ERR_BAD_INTEGRITY for machine credentials")
>>> Signed-off-by: Petr Vorel<pvorel@suse.cz>
>>> ---
>>>    aclocal/libtirpc.m4 | 4 ++++
>>>    1 file changed, 4 insertions(+)
> 
>>> diff --git a/aclocal/libtirpc.m4 b/aclocal/libtirpc.m4
>>> index bddae022..dd351722 100644
>>> --- a/aclocal/libtirpc.m4
>>> +++ b/aclocal/libtirpc.m4
>>> @@ -25,6 +25,10 @@ AC_DEFUN([AC_LIBTIRPC], [
>>>                             [AC_DEFINE([HAVE_LIBTIRPC_SET_DEBUG], [1],
>>>                                        [Define to 1 if your tirpc library provides libtirpc_set_debug])],,
>>>                             [${LIBS}])])
>>> +     AS_IF([test "$enable_gss" = "yes"],
>>> +           [AC_CHECK_MEMBER(struct rpc_gss_sec.minor_status,,
>>> +                         [AC_MSG_ERROR([Missing rpc_gss_sec.minor_status in <rpc/auth_gss.h>, update libtirpc or run with --disable-gss])],
>>> +                         [#include <rpc/auth_gss.h>])])
>>>      AC_SUBST([AM_CPPFLAGS])
>>>      AC_SUBST(LIBTIRPC)
>>> -- 2.42.0
> 
>> This does not work... since it is looking at that gssrpc/auth_gss.h
>> instead of the tirpc/rpc/auth_gss.h so the check fails
> Is it? There is no <gssrpc/auth_gss.h>. I suppose you test on some recent
> Fedora, I'll retest it.
Yes... this is both an
/usr/include/tirpc/rpc/auth_gss.h owned by krb5-devel
and
/usr/include/tirpc/rpc/auth_gss.h owned by libtirpc-devel

> 
> I tested it on openSUSE Tumbleweed, where libtirpc-devel is
> installed into /usr/include/rpc/, thus /usr/include/rpc/auth_gss.h exists.
> But on Debian (and likely on RHEL/Fedora as you noticed it) is on
> /usr/include/tirpc/rpc/auth_gss.h.
Maybe krb5-devel was not installed??

> 
> I hoped that this is handled elsewhere via -I/usr/include/tirpc.
> So, I'm really confused why would have look at <gssrpc/auth_gss.h>.
True, but I think -I only works during compilation, not configuration.

steved.

> 
> Kind regards,
> Petr
> 
>> I like the idea of having the check, but I'm not sure on
>> how to point it in the right direction.
> 
>> steved.
>
diff mbox series

Patch

diff --git a/aclocal/libtirpc.m4 b/aclocal/libtirpc.m4
index bddae022..dd351722 100644
--- a/aclocal/libtirpc.m4
+++ b/aclocal/libtirpc.m4
@@ -25,6 +25,10 @@  AC_DEFUN([AC_LIBTIRPC], [
                          [AC_DEFINE([HAVE_LIBTIRPC_SET_DEBUG], [1],
                                     [Define to 1 if your tirpc library provides libtirpc_set_debug])],,
                          [${LIBS}])])
+     AS_IF([test "$enable_gss" = "yes"],
+           [AC_CHECK_MEMBER(struct rpc_gss_sec.minor_status,,
+                         [AC_MSG_ERROR([Missing rpc_gss_sec.minor_status in <rpc/auth_gss.h>, update libtirpc or run with --disable-gss])],
+                         [#include <rpc/auth_gss.h>])])
 
   AC_SUBST([AM_CPPFLAGS])
   AC_SUBST(LIBTIRPC)