From 5482c0e51f7ae32749b621ba14704644d5bf2ffc Mon Sep 17 00:00:00 2001 From: Olga Kornievskaia Date: Thu, 24 Mar 2011 14:51:10 -0400 Subject: [PATCH] [sspi] fixing memory leaks during sspi context establishment failure --- libtirpc/src/auth_sspi.c | 4 +++- libtirpc/src/clnt_vc.c | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libtirpc/src/auth_sspi.c b/libtirpc/src/auth_sspi.c index b4c6de6..ad87cc3 100644 --- a/libtirpc/src/auth_sspi.c +++ b/libtirpc/src/auth_sspi.c @@ -122,8 +122,10 @@ authsspi_create(CLIENT *clnt, sspi_name_t name, struct rpc_sspi_sec *sec) save_auth = clnt->cl_auth; clnt->cl_auth = auth; - if (!authsspi_refresh(auth, NULL)) + if (!authsspi_refresh(auth, NULL)) { + authsspi_destroy(auth); auth = NULL; + } clnt->cl_auth = save_auth; diff --git a/libtirpc/src/clnt_vc.c b/libtirpc/src/clnt_vc.c index b546f49..f9941c3 100644 --- a/libtirpc/src/clnt_vc.c +++ b/libtirpc/src/clnt_vc.c @@ -633,6 +633,11 @@ call_again: } } /* end successful completion */ else { + if (ct->reply_msg.acpted_rply.ar_verf.oa_base != NULL) { + xdrs->x_op = XDR_FREE; + (void)xdr_opaque_auth(xdrs, + &(ct->reply_msg.acpted_rply.ar_verf)); + } /* maybe our credentials need to be refreshed ... */ if (refreshes-- && AUTH_REFRESH(cl->cl_auth, &ct->reply_msg)) goto call_again;