]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
sspi: Synchronization of cleanup code between auth mechanisms
authorSteve Holme <steve_holme@hotmail.com>
Sun, 26 Oct 2014 14:51:05 +0000 (14:51 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 26 Oct 2014 14:51:58 +0000 (14:51 +0000)
lib/curl_ntlm_msgs.c
lib/http_negotiate_sspi.c

index 99eba7a646c533174dabd864f80fd4175e10049f..92211aa97f741615f118c69d63aa25ceec584e71 100644 (file)
@@ -341,25 +341,30 @@ CURLcode Curl_ntlm_decode_type2_message(struct SessionHandle *data,
 #ifdef USE_WINDOWS_SSPI
 void Curl_ntlm_sspi_cleanup(struct ntlmdata *ntlm)
 {
-  Curl_safefree(ntlm->input_token);
-
+  /* Free our security context */
   if(ntlm->context) {
     s_pSecFn->DeleteSecurityContext(ntlm->context);
     free(ntlm->context);
     ntlm->context = NULL;
   }
 
+  /* Free our credentials handle */
   if(ntlm->credentials) {
     s_pSecFn->FreeCredentialsHandle(ntlm->credentials);
     free(ntlm->credentials);
     ntlm->credentials = NULL;
   }
 
-  ntlm->token_max = 0;
-  Curl_safefree(ntlm->output_token);
-
+  /* Free our identity */
   Curl_sspi_free_identity(ntlm->p_identity);
   ntlm->p_identity = NULL;
+
+  /* Free the input and output tokens */
+  Curl_safefree(ntlm->input_token);
+  Curl_safefree(ntlm->output_token);
+
+  /* Reset any variables */
+  ntlm->token_max = 0;
 }
 #endif
 
index fd0f81781a041cdd8a6df37f6a21bcf451c48223..8ec3bbc915c728571871245caa789c000959489f 100644 (file)
@@ -258,25 +258,30 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
 
 static void cleanup(struct negotiatedata *neg_ctx)
 {
+  /* Free our security context */
   if(neg_ctx->context) {
     s_pSecFn->DeleteSecurityContext(neg_ctx->context);
     free(neg_ctx->context);
     neg_ctx->context = NULL;
   }
 
+  /* Free our credentials handle */
   if(neg_ctx->credentials) {
     s_pSecFn->FreeCredentialsHandle(neg_ctx->credentials);
     free(neg_ctx->credentials);
     neg_ctx->credentials = NULL;
   }
 
-  neg_ctx->token_max = 0;
-  Curl_safefree(neg_ctx->output_token);
+  /* Free our identity */
+  Curl_sspi_free_identity(neg_ctx->p_identity);
+  neg_ctx->p_identity = NULL;
 
+  /* Free the SPN and output token */
   Curl_safefree(neg_ctx->server_name);
+  Curl_safefree(neg_ctx->output_token);
 
-  Curl_sspi_free_identity(neg_ctx->p_identity);
-  neg_ctx->p_identity = NULL;
+  /* Reset any variables */
+  neg_ctx->token_max = 0;
 }
 
 void Curl_cleanup_negotiate(struct SessionHandle *data)