s4:ntlmssp: keep struct gensec_ntlmssp_context in gensec_security->private_data
[kai/samba-autobuild/.git] / source4 / auth / ntlmssp / ntlmssp.c
index e0a109b8d4942c8bfcf96c6f853dbdf960a15828..37020366bd458d903c5f098e7391d1d1d6f6f5e7 100644 (file)
@@ -199,7 +199,10 @@ static NTSTATUS gensec_ntlmssp_update(struct gensec_security *gensec_security,
                                      TALLOC_CTX *out_mem_ctx, 
                                      const DATA_BLOB input, DATA_BLOB *out)
 {
-       struct gensec_ntlmssp_state *gensec_ntlmssp_state = (struct gensec_ntlmssp_state *)gensec_security->private_data;
+       struct gensec_ntlmssp_context *gensec_ntlmssp =
+               talloc_get_type_abort(gensec_security->private_data,
+                                     struct gensec_ntlmssp_context);
+       struct gensec_ntlmssp_state *gensec_ntlmssp_state = gensec_ntlmssp->ntlmssp_state;
        NTSTATUS status;
        uint32_t i;
 
@@ -229,7 +232,10 @@ static NTSTATUS gensec_ntlmssp_update(struct gensec_security *gensec_security,
 NTSTATUS gensec_ntlmssp_session_key(struct gensec_security *gensec_security, 
                                    DATA_BLOB *session_key)
 {
-       struct gensec_ntlmssp_state *gensec_ntlmssp_state = (struct gensec_ntlmssp_state *)gensec_security->private_data;
+       struct gensec_ntlmssp_context *gensec_ntlmssp =
+               talloc_get_type_abort(gensec_security->private_data,
+                                     struct gensec_ntlmssp_context);
+       struct gensec_ntlmssp_state *gensec_ntlmssp_state = gensec_ntlmssp->ntlmssp_state;
 
        if (gensec_ntlmssp_state->expected_state != NTLMSSP_DONE) {
                return NT_STATUS_NO_USER_SESSION_KEY;
@@ -348,7 +354,11 @@ DATA_BLOB ntlmssp_weakend_key(struct gensec_ntlmssp_state *gensec_ntlmssp_state,
 static bool gensec_ntlmssp_have_feature(struct gensec_security *gensec_security,
                                        uint32_t feature)
 {
-       struct gensec_ntlmssp_state *gensec_ntlmssp_state = (struct gensec_ntlmssp_state *)gensec_security->private_data;
+       struct gensec_ntlmssp_context *gensec_ntlmssp =
+               talloc_get_type_abort(gensec_security->private_data,
+                                     struct gensec_ntlmssp_context);
+       struct gensec_ntlmssp_state *gensec_ntlmssp_state = gensec_ntlmssp->ntlmssp_state;
+
        if (feature & GENSEC_FEATURE_SIGN) {
                if (!gensec_ntlmssp_state->session_key.length) {
                        return false;
@@ -404,7 +414,7 @@ NTSTATUS gensec_ntlmssp_start(struct gensec_security *gensec_security)
 
        gensec_ntlmssp->ntlmssp_state = ntlmssp_state;
 
-       gensec_security->private_data = ntlmssp_state;
+       gensec_security->private_data = gensec_ntlmssp;
        return NT_STATUS_OK;
 }