summaryrefslogtreecommitdiffstats
path: root/src/plugins/preauth/pkinit
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2012-07-05 05:02:38 -0400
committerGreg Hudson <ghudson@mit.edu>2012-07-05 05:02:38 -0400
commit174a452878ef5356f5baa3865a2e219a0dad01a0 (patch)
tree8415319d6e5a60149066c05835ed6bc1086c9e07 /src/plugins/preauth/pkinit
parent7f7fa930f7ca9c06b1afaaa453394755dbddb352 (diff)
downloadkrb5-174a452878ef5356f5baa3865a2e219a0dad01a0.tar.gz
krb5-174a452878ef5356f5baa3865a2e219a0dad01a0.tar.xz
krb5-174a452878ef5356f5baa3865a2e219a0dad01a0.zip
Simplify and fix pkinit_as_req_create cleanup
Avoid dereferencing a null auth_pack pointer if we run out of memory initializing info or auth_pack. Eliminate an unnecessary switch by just cleaning up all of the potentially allocated variables.
Diffstat (limited to 'src/plugins/preauth/pkinit')
-rw-r--r--src/plugins/preauth/pkinit/pkinit_clnt.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/plugins/preauth/pkinit/pkinit_clnt.c b/src/plugins/preauth/pkinit/pkinit_clnt.c
index 4b61ab7ff..d70da49b1 100644
--- a/src/plugins/preauth/pkinit/pkinit_clnt.c
+++ b/src/plugins/preauth/pkinit/pkinit_clnt.c
@@ -451,18 +451,12 @@ pkinit_as_req_create(krb5_context context,
#endif
cleanup:
- switch((int)reqctx->pa_type) {
- case KRB5_PADATA_PK_AS_REQ:
+ if (auth_pack != NULL)
auth_pack->supportedKDFs = NULL; /*alias to global constant*/
- free_krb5_auth_pack(&auth_pack);
- free_krb5_pa_pk_as_req(&req);
- break;
- case KRB5_PADATA_PK_AS_REQ_OLD:
- free_krb5_pa_pk_as_req_draft9(&req9);
- free(auth_pack9);
- break;
- }
-
+ free_krb5_auth_pack(&auth_pack);
+ free_krb5_pa_pk_as_req(&req);
+ free_krb5_pa_pk_as_req_draft9(&req9);
+ free(auth_pack9);
pkiDebug("pkinit_as_req_create retval=%d\n", (int) retval);