summaryrefslogtreecommitdiff
path: root/src/svc_vc.c
diff options
context:
space:
mode:
authorPeter Rosin <peda@lysator.liu.se>2015-10-30 10:44:24 -0400
committerSteve Dickson <steved@redhat.com>2015-10-30 10:53:12 -0400
commitfad57784796d6fcbaf77f776508749981a6a5d2e (patch)
tree7cc0b8ea875cd0195516724fa8322494ba34c02f /src/svc_vc.c
parentb7c2ade67a49ea8a25bdf4333cf62cbd284d5dcd (diff)
downloadti-rpc-fad57784796d6fcbaf77f776508749981a6a5d2e.tar.gz
Fix SVCAUTH lifetime issues and move towards Solaris
There are lifetime problems with the current handling of SVCAUTH and the core library has no business ever destroying an SVCAUTH. These lifetime problems leads to the gss authenticator leaking a SVCAUTH when interleaved calls on the transport arrive with non-gss credential flavors. So, plagiarize the Solaris solution and keep an inlined SVCAUTH struct to make it obvious that the core library is not managing the life of SVCAUTH. Then point the old xp_auth pointer to the inlined SVCAUTH by default. This makes it possible to match the Solaris macro SVC_XP_AUTH, while still remaining compatible with any old external xp_auth pointer users. Adjust the gss authenticator to keep track of its own gss data per SVCXPRT. This is still not a good gss implementation, but it is at least better than before. Tested-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Peter Rosin <peda@lysator.liu.se> Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'src/svc_vc.c')
-rw-r--r--src/svc_vc.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/src/svc_vc.c b/src/svc_vc.c
index f95c644..bab3e05 100644
--- a/src/svc_vc.c
+++ b/src/svc_vc.c
@@ -450,10 +450,6 @@ __svc_vc_dodestroy(xprt)
}
if (ext)
mem_free(ext, sizeof (*ext));
- if (xprt->xp_auth != NULL) {
- SVCAUTH_DESTROY(xprt->xp_auth);
- xprt->xp_auth = NULL;
- }
if (xprt->xp_rtaddr.buf)
mem_free(xprt->xp_rtaddr.buf, xprt->xp_rtaddr.maxlen);
if (xprt->xp_ltaddr.buf)