]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Author: Matthias Pitzl <silamael@coronamundi.de>
authorAmos Jeffries <squid3@treenet.co.nz>
Wed, 20 May 2009 06:59:04 +0000 (18:59 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Wed, 20 May 2009 06:59:04 +0000 (18:59 +1200)
Bug 2644: auth scheme initialization is broken

Allocates auth schemas dynamically when needed.

TODO: de-allocate somehow on shutdown to stop the leakage this adds

src/auth/basic/basicScheme.cc
src/auth/basic/basicScheme.h
src/auth/digest/digestScheme.cc
src/auth/digest/digestScheme.h
src/auth/negotiate/negotiateScheme.cc
src/auth/negotiate/negotiateScheme.h
src/auth/ntlm/ntlmScheme.cc
src/auth/ntlm/ntlmScheme.h

index f2f213ceced8d889d7961f369331554c34ed1f8f..86a7911f8ce0ee93cd9706621a1cfd7a5ae74bc7 100644 (file)
@@ -36,7 +36,9 @@
 AuthScheme &
 basicScheme::GetInstance()
 {
-    return _instance;
+    if (_instance == NULL)
+        _instance = new basicScheme();
+    return *_instance;
 }
 
 basicScheme::basicScheme()
@@ -50,4 +52,4 @@ basicScheme::type () const
     return "basic";
 }
 
-basicScheme basicScheme::_instance;
+basicScheme *basicScheme::_instance = NULL;
index f431b10154b69550839d59752085850220ca3c1c..98e2092460726c79cd1d58b887109c4243914fee 100644 (file)
@@ -55,7 +55,7 @@ public:
     basicScheme &operator=(basicScheme const &);
 
 private:
-    static basicScheme _instance;
+    static basicScheme *_instance;
 };
 
 #endif /* SQUID_BASICSCHEME_H */
index 69802ee7fb138e35826652be8f408525d90fcf82..649cd6136a564066573f483148e8f0c62b3ac0e3 100644 (file)
@@ -36,7 +36,9 @@
 AuthScheme &
 digestScheme::GetInstance()
 {
-    return _instance;
+    if (_instance == NULL)
+        _instance = new digestScheme();
+    return *_instance;
 }
 
 digestScheme::digestScheme()
@@ -50,4 +52,4 @@ digestScheme::type () const
     return "digest";
 }
 
-digestScheme digestScheme::_instance;
+digestScheme *digestScheme::_instance = NULL;
index 156044fe799797cdbb90aa47a2964814ed82d93a..5d534eb6d53d549f2251f1ba38e934eac4e47b9f 100644 (file)
@@ -55,7 +55,7 @@ public:
     digestScheme &operator=(digestScheme const &);
 
 private:
-    static digestScheme _instance;
+    static digestScheme *_instance;
 };
 
 #endif /* SQUID_DIGESTSCHEME_H */
index 07cbc5762cfec186cf3919998e8e469e9d487684..499375effaa5a78c84ec297b720a29e43224ca6a 100644 (file)
@@ -36,7 +36,9 @@
 AuthScheme &
 negotiateScheme::GetInstance()
 {
-    return _instance;
+    if (_instance == NULL)
+        _instance = new negotiateScheme();
+    return *_instance;
 }
 
 negotiateScheme::negotiateScheme()
@@ -50,4 +52,4 @@ negotiateScheme::type () const
     return "negotiate";
 }
 
-negotiateScheme negotiateScheme::_instance;
+negotiateScheme *negotiateScheme::_instance = NULL;
index 8923683f9c4df5cd3c4f0d377d100386a55d57c0..bde9a5976989e830db4750958cfb0e73427ad5d8 100644 (file)
@@ -55,7 +55,7 @@ public:
     negotiateScheme &operator=(negotiateScheme const &);
 
 private:
-    static negotiateScheme _instance;
+    static negotiateScheme *_instance;
 };
 
 #endif /* SQUID_negotiateSCHEME_H */
index 973b8b94b6abb4d28eb680f933bb641ec55a33e7..8f5f74c2a1d574fbe00cabf0946c386222af5dc7 100644 (file)
@@ -36,7 +36,9 @@
 AuthScheme &
 ntlmScheme::GetInstance()
 {
-    return _instance;
+    if (_instance == NULL)
+        _instance = new ntlmScheme();
+    return *_instance;
 }
 
 ntlmScheme::ntlmScheme()
@@ -50,4 +52,4 @@ ntlmScheme::type () const
     return "ntlm";
 }
 
-ntlmScheme ntlmScheme::_instance;
+ntlmScheme *ntlmScheme::_instance = NULL;
index 94f10a9b3355754cf3079c45ad46f9152afb29d1..f9b037c9a4187c6fa6919b94400f1df5c6c6e1ab 100644 (file)
@@ -55,7 +55,7 @@ public:
     ntlmScheme &operator=(ntlmScheme const &);
 
 private:
-    static ntlmScheme _instance;
+    static ntlmScheme *_instance;
 };
 
 #endif /* SQUID_ntlmSCHEME_H */