From 83ab0b3f869335c03bb898d8d0b684d00e3dd776 Mon Sep 17 00:00:00 2001 From: Olga Kornievskaia Date: Mon, 28 Feb 2011 15:38:55 -0500 Subject: [PATCH] fixing error handling in sspi context establishment --- libtirpc/src/auth_sspi.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libtirpc/src/auth_sspi.c b/libtirpc/src/auth_sspi.c index 6d8548c..6574db1 100644 --- a/libtirpc/src/auth_sspi.c +++ b/libtirpc/src/auth_sspi.c @@ -169,7 +169,7 @@ authsspi_create_default(CLIENT *clnt, char *service, int svc) auth = authsspi_create(clnt, name, sec); if (auth == NULL) - goto out_free_cred; + goto out_free_sec; out: if (name != SSPI_C_NO_NAME) { @@ -181,10 +181,11 @@ out: } return (auth); -out_free_cred: - FreeCredentialsHandle(&sec->cred); out_free_sec: - free(sec); + if (rpc_createerr.cf_error.re_errno == ENOMEM) { + FreeCredentialsHandle(&sec->cred); + free(sec); + } out_err: rpc_createerr.cf_stat = RPC_SYSTEMERROR; rpc_createerr.cf_error.re_errno = ENOMEM;