From fa38f9ca438f5e7f59d08d8d47af1efa06c3a7b3 Mon Sep 17 00:00:00 2001
From: Michael Weiser <michael.weiser@gmx.de>
Date: Thu, 6 Aug 2015 16:16:10 +0000
Subject: [PATCH] Prevent NULL pointer dereference if kadm5_init_with_creds
 fails

If kadm5_init_with_ccreds failed, the pointer to the kadmin Python object would
be set to NULL but cleanup would still try to use kadmin->context when freeing
princ and closing the ccache.
---
 src/kadmin.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/kadmin.c b/src/kadmin.c
index c9e78ce..4ceffda 100644
--- a/src/kadmin.c
+++ b/src/kadmin.c
@@ -309,14 +309,6 @@ static PyKAdminObject *_kadmin_init_with_ccache(PyObject *self, PyObject *args)
                 db_args, 
                 &kadmin->server_handle);
 
-    if (retval != KADM5_OK) { 
-
-        Py_XDECREF(kadmin);
-        kadmin = NULL;
-
-        PyKAdminError_raise_error(retval, "kadm5_init_with_creds");
-    }
-
 
 cleanup:
     
@@ -328,6 +320,14 @@ cleanup:
     krb5_free_principal(kadmin->context, princ);
     krb5_cc_close(kadmin->context, cc);
 
+    if (retval != KADM5_OK) {
+
+        Py_XDECREF(kadmin);
+        kadmin = NULL;
+
+        PyKAdminError_raise_error(retval, "kadm5_init_with_creds");
+    }
+
     if (params)
         free(params);  
 
-- 
GitLab