Blame SOURCES/libtirpc-1.1.4-disallow-auth_refresh.patch

a13d9d
diff -up libtirpc-1.1.4/src/auth_gss.c.orig libtirpc-1.1.4/src/auth_gss.c
a13d9d
--- libtirpc-1.1.4/src/auth_gss.c.orig	2021-04-17 13:11:03.229880600 -0400
a13d9d
+++ libtirpc-1.1.4/src/auth_gss.c	2021-04-17 13:15:10.722391798 -0400
a13d9d
@@ -982,3 +982,9 @@ rpc_gss_max_data_length(AUTH *auth, int
a13d9d
 	rpc_gss_clear_error();
a13d9d
 	return result;
a13d9d
 }
a13d9d
+
a13d9d
+bool_t
a13d9d
+is_authgss_client(CLIENT *clnt)
a13d9d
+{
a13d9d
+	return (clnt->cl_auth->ah_ops == &authgss_ops);
a13d9d
+}
a13d9d
diff -up libtirpc-1.1.4/src/clnt_dg.c.orig libtirpc-1.1.4/src/clnt_dg.c
a13d9d
--- libtirpc-1.1.4/src/clnt_dg.c.orig	2018-08-27 10:06:49.000000000 -0400
a13d9d
+++ libtirpc-1.1.4/src/clnt_dg.c	2021-04-17 13:15:10.722391798 -0400
a13d9d
@@ -60,6 +60,9 @@
a13d9d
 #include <sys/uio.h>
a13d9d
 #endif
a13d9d
 
a13d9d
+#ifdef HAVE_RPCSEC_GSS
a13d9d
+#include <rpc/auth_gss.h>
a13d9d
+#endif
a13d9d
 
a13d9d
 #define MAX_DEFAULT_FDS                 20000
a13d9d
 
a13d9d
@@ -356,6 +359,11 @@ clnt_dg_call(cl, proc, xargs, argsp, xre
a13d9d
 		salen = cu->cu_rlen;
a13d9d
 	}
a13d9d
 
a13d9d
+#ifdef HAVE_RPCSEC_GSS
a13d9d
+	if (is_authgss_client(cl))
a13d9d
+		nrefreshes = 0;
a13d9d
+#endif
a13d9d
+
a13d9d
 	/* Clean up in case the last call ended in a longjmp(3) call. */
a13d9d
 call_again:
a13d9d
 	xdrs = &(cu->cu_outxdrs);
a13d9d
diff -up libtirpc-1.1.4/src/clnt_vc.c.orig libtirpc-1.1.4/src/clnt_vc.c
a13d9d
--- libtirpc-1.1.4/src/clnt_vc.c.orig	2018-08-27 10:06:49.000000000 -0400
a13d9d
+++ libtirpc-1.1.4/src/clnt_vc.c	2021-04-17 13:15:10.723391824 -0400
a13d9d
@@ -68,6 +68,10 @@
a13d9d
 #include <rpc/rpc.h>
a13d9d
 #include "rpc_com.h"
a13d9d
 
a13d9d
+#ifdef HAVE_RPCSEC_GSS
a13d9d
+#include <rpc/auth_gss.h>
a13d9d
+#endif
a13d9d
+
a13d9d
 #define MCALL_MSG_SIZE 24
a13d9d
 
a13d9d
 #define CMGROUP_MAX    16
a13d9d
@@ -380,6 +384,11 @@ clnt_vc_call(cl, proc, xdr_args, args_pt
a13d9d
 	    (xdr_results == NULL && timeout.tv_sec == 0
a13d9d
 	    && timeout.tv_usec == 0) ? FALSE : TRUE;
a13d9d
 
a13d9d
+#ifdef HAVE_RPCSEC_GSS
a13d9d
+	if (is_authgss_client(cl))
a13d9d
+		refreshes = 0;
a13d9d
+#endif
a13d9d
+
a13d9d
 call_again:
a13d9d
 	xdrs->x_op = XDR_ENCODE;
a13d9d
 	ct->ct_error.re_status = RPC_SUCCESS;
a13d9d
diff -up libtirpc-1.1.4/tirpc/rpc/auth_gss.h.orig libtirpc-1.1.4/tirpc/rpc/auth_gss.h
a13d9d
--- libtirpc-1.1.4/tirpc/rpc/auth_gss.h.orig	2018-08-27 10:06:49.000000000 -0400
a13d9d
+++ libtirpc-1.1.4/tirpc/rpc/auth_gss.h	2021-04-17 13:15:10.723391824 -0400
a13d9d
@@ -120,6 +120,8 @@ void	gss_log_debug		(const char *fmt, ..
a13d9d
 void	gss_log_status		(char *m, OM_uint32 major, OM_uint32 minor);
a13d9d
 void	gss_log_hexdump		(const u_char *buf, int len, int offset);
a13d9d
 
a13d9d
+bool_t	is_authgss_client	(CLIENT *);
a13d9d
+
a13d9d
 #ifdef __cplusplus
a13d9d
 }
a13d9d
 #endif