]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Add assert()'s to check for NULL pointers in NTLM auth.
authoramosjeffries <>
Fri, 3 Aug 2007 07:57:30 +0000 (07:57 +0000)
committeramosjeffries <>
Fri, 3 Aug 2007 07:57:30 +0000 (07:57 +0000)
Coverity checker picked up a number of cases where casting might (rarely)
cause a NULL pointer and a dereference occured afterwards.
This patch adds several assert statements to cause squid to abort at the
source of these errors rather than segfault later.
No code logic has been changed in any way.

src/auth/ntlm/auth_ntlm.cc

index e05b5998c8926146ae235b6481f74a1b43367029..7cfd741429139776cf3ddfb89d21ed040f18fe48 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: auth_ntlm.cc,v 1.72 2007/08/02 02:08:25 amosjeffries Exp $
+ * $Id: auth_ntlm.cc,v 1.73 2007/08/03 01:57:30 amosjeffries Exp $
  *
  * DEBUG: section 29    NTLM Authenticator
  * AUTHOR: Robert Collins, Henrik Nordstrom, Francesco Chemolli
@@ -285,6 +285,8 @@ AuthNTLMConfig::fixHeader(AuthUserRequest *auth_user_request, HttpReply *rep, ht
     } else {
         ntlm_request = dynamic_cast<AuthNTLMUserRequest *>(auth_user_request);
 
+        assert(ntlm_request != NULL);
+
         switch (ntlm_request->auth_state) {
 
         case AUTHENTICATE_STATE_FAILED:
@@ -362,6 +364,7 @@ authenticateNTLMHandleReply(void *data, void *lastserver, char *reply)
     assert(auth_user_request != NULL);
     ntlm_request = dynamic_cast<AuthNTLMUserRequest *>(auth_user_request);
 
+    assert(ntlm_request != NULL);
     assert(ntlm_request->waiting);
     ntlm_request->waiting = 0;
     safe_free(ntlm_request->client_blob);
@@ -371,6 +374,8 @@ authenticateNTLMHandleReply(void *data, void *lastserver, char *reply)
     assert(auth_user->auth_type == AUTH_NTLM);
     ntlm_user = dynamic_cast<ntlm_user_t *>(auth_user_request->user());
 
+    assert(ntlm_request != NULL);
+
     if (ntlm_request->authserver == NULL)
         ntlm_request->authserver = static_cast<helper_stateful_server*>(lastserver);
     else
@@ -519,6 +524,7 @@ authenticateNTLMReleaseServer(AuthUserRequest * auth_user_request)
      * code-paths. Kinkie */
     /* DPW 2007-05-07
      * yes, it is possible */
+    assert(ntlm_request != NULL);
     if (ntlm_request->authserver) {
        helperStatefulReleaseServer(ntlm_request->authserver);
        ntlm_request->authserver = NULL;