diff options
author | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-12 12:47:05 +0000 |
---|---|---|
committer | danno@chromium.org <danno@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-12 12:47:05 +0000 |
commit | ac7f3fdb4987d7f44c1612d55437cfcb3eb263f6 (patch) | |
tree | c017e812bb298f7f2c7341372ab62021df3c8a29 /net/http/http_auth_gssapi_posix.cc | |
parent | bb33eb1e2468eacb996e19493a36c3f6e4625b12 (diff) | |
download | chromium_src-ac7f3fdb4987d7f44c1612d55437cfcb3eb263f6.zip chromium_src-ac7f3fdb4987d7f44c1612d55437cfcb3eb263f6.tar.gz chromium_src-ac7f3fdb4987d7f44c1612d55437cfcb3eb263f6.tar.bz2 |
Support specifying the GSSAPI library that will be used.
This preference can be set either via command-line or via group policy.
BUG=53625
TEST=unittests: ConfigurationPolicyPrefStore*; net_unittests: HttpAuthHandlerNegotiateTest.*:HttpAuthGSSAPIPOSIXTest.*; manually: start Chrome with command-line switch --gssapi-library-name=XYZ and see if this results in the Chrome process loading /usr/lib/whatever/XYZ as soon as an authenticated HTTP site is encountered.
Review URL: http://codereview.chromium.org/4560001
Patch from Jakob Kummerow <jkummerow@google.com>.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65939 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_auth_gssapi_posix.cc')
-rw-r--r-- | net/http/http_auth_gssapi_posix.cc | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/net/http/http_auth_gssapi_posix.cc b/net/http/http_auth_gssapi_posix.cc index b20ef50..bd2734f 100644 --- a/net/http/http_auth_gssapi_posix.cc +++ b/net/http/http_auth_gssapi_posix.cc @@ -11,7 +11,6 @@ #include "base/file_path.h" #include "base/format_macros.h" #include "base/logging.h" -#include "base/singleton.h" #include "base/string_util.h" #include "base/stringprintf.h" #include "net/base/net_errors.h" @@ -385,8 +384,9 @@ std::string DescribeContext(GSSAPILibrary* gssapi_lib, } // namespace -GSSAPISharedLibrary::GSSAPISharedLibrary() +GSSAPISharedLibrary::GSSAPISharedLibrary(const std::string& gssapi_library_name) : initialized_(false), + gssapi_library_name_(gssapi_library_name), gssapi_library_(NULL), import_name_(NULL), release_name_(NULL), @@ -422,19 +422,29 @@ bool GSSAPISharedLibrary::InitImpl() { } base::NativeLibrary GSSAPISharedLibrary::LoadSharedLibrary() { - static const char* kLibraryNames[] = { + const char** library_names; + size_t num_lib_names; + const char* user_specified_library[1]; + if (!gssapi_library_name_.empty()) { + user_specified_library[0] = gssapi_library_name_.c_str(); + library_names = user_specified_library; + num_lib_names = 1; + } else { + static const char* kDefaultLibraryNames[] = { #if defined(OS_MACOSX) - "libgssapi_krb5.dylib" // MIT Kerberos + "libgssapi_krb5.dylib" // MIT Kerberos #else - "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian - "libgssapi.so.4", // Heimdal - Suse10, MDK - "libgssapi.so.1" // Heimdal - Suse9, CITI - FC, MDK, Suse10 + "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian + "libgssapi.so.4", // Heimdal - Suse10, MDK + "libgssapi.so.1" // Heimdal - Suse9, CITI - FC, MDK, Suse10 #endif - }; - static size_t num_lib_names = arraysize(kLibraryNames); + }; + library_names = kDefaultLibraryNames; + num_lib_names = arraysize(kDefaultLibraryNames); + } for (size_t i = 0; i < num_lib_names; ++i) { - const char* library_name = kLibraryNames[i]; + const char* library_name = library_names[i]; FilePath file_path(library_name); base::NativeLibrary lib = base::LoadNativeLibrary(file_path); if (lib) { @@ -613,9 +623,6 @@ OM_uint32 GSSAPISharedLibrary::inquire_context( locally_initiated, open); } -GSSAPILibrary* GSSAPILibrary::GetDefault() { - return Singleton<GSSAPISharedLibrary>::get(); -} ScopedSecurityContext::ScopedSecurityContext(GSSAPILibrary* gssapi_lib) : security_context_(GSS_C_NO_CONTEXT), |