See <http://build.squid-cache.org/job/3.HEAD-amd64-FreeBSD-7.2/410/changes>
Changes: [Amos Jeffries <[email protected]>] Bug 2305: Multiple leaks and assertion crashes in authentication. * implements proper RefCounting using the RefCount.h classes for almost all auth objects in Squid. * Restructures auth objects with a simpler structure of duties and scopes. * Prunes away several circular and indirectly circular pointer loops * Adds an API to auth config for handling the mainRotate() event. To only shutdown helpers, fixing the loss of cached credentials on rotate. * Adds a username_cache page to cachemgr interface to display the current credentials and their TTLs to various revalidation or garbage events. With this we end up with several global pointers for the auth schemes which have been built into the current Squid. These are RefCount pointers, fixing the leak of schemes on shutdown. Schemes are now also permanent structures for the runtime of Squid, fixing leaks on reconfigure and rotate actions. These AuthSchemes are responsible for creating auth Config objects for each auth protocol configured in squid.conf. These config objects are now also able to be altered with a reconfigure instead of requiring a restart. Each HTTP request authentication attempt generates AuthUserRequest objects, which may or may not pointer to an AuthUser set of credentials being checked. AuthUserRequest is RefCounted instead of locked, fixing several assertion crashes. AuthUser is now RefCounted instead of locked. It's children inherit these properties. This simplifies the object handling a lot and fixes several assertions. * This also means AuthUser no longer needs a back-pointer to all AuthUserRequest in order to see if its still needed alive, fixing one circular lock loop and a few possible assertions. * The username cache pointers to only AuthUser objects, fixing a second cirular lock loop and potentially leakage. Also simplifying the hash cache handling a lot. Non-Auth code needing a reference to authentication credentials should hold a pointer to either an AuthUserRequest or AuthUser object. Not any other auth object. FUTURE WORK; There is still some conditions leading to auth re-challenge when they are not expected. A fair chunk of classes and enums have been shuffled into separate files to keep the scopes clearer. This could be increased in future when building the Auth namespace. Potential is now present for simpler TTL handling for all auth types. This work was a collaboration between multiple interested parties over the last year, with additional developer time and testing funded by Netspace Online Systems. [Automatic source maintenance <[email protected]>] SourceFormat Enforcement ------------------------------------------ [...truncated 5953 lines...] rm -rf ./.deps rm -f Makefile Making distclean in base test -z "testHeaders" || rm -f testHeaders rm -rf .libs _libs test -z "libbase.la" || rm -f libbase.la rm -f "./so_locations" rm -f *.o rm -f *.lo rm -f *.tab.c test -z "" || rm -f rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -rf ./.deps rm -f Makefile Making distclean in . rm -f tests/testAuth tests/testAuth rm -f tests/testACLMaxUserIP tests/testACLMaxUserIP rm -f tests/testBoilerplate tests/testBoilerplate rm -f tests/testCacheManager tests/testCacheManager rm -f tests/testDiskIO tests/testDiskIO rm -f tests/testEvent tests/testEvent rm -f tests/testEventLoop tests/testEventLoop rm -f tests/test_http_range tests/test_http_range rm -f tests/testHttpReply tests/testHttpReply rm -f tests/testHttpRequest tests/testHttpRequest rm -f tests/testStore tests/testStore rm -f tests/testString tests/testString rm -f tests/testURL tests/testURL rm -f tests/testUfs tests/testUfs test -z "cf_gen_defines.cci cf_parser.cci err_type.cc globals.cc hier_code.cc icp_opcode.cc lookup_t.cc repl_modules.cc swap_log_op.cc squid.8 cf.data squid.conf.default squid.conf.documented DiskIO/DiskIOModules_gen.cc test_tools.cc *.a testHeaders" || rm -f cf_gen_defines.cci cf_parser.cci err_type.cc globals.cc hier_code.cc icp_opcode.cc lookup_t.cc repl_modules.cc swap_log_op.cc squid.8 cf.data squid.conf.default squid.conf.documented DiskIO/DiskIOModules_gen.cc test_tools.cc *.a testHeaders rm -f DiskIO/DiskDaemon/diskd DiskIO/DiskDaemon/diskd rm -f unlinkd unlinkd rm -rf .libs _libs rm -rf DiskIO/DiskDaemon/.libs DiskIO/DiskDaemon/_libs rm -rf tests/.libs tests/_libs test -z "libAIO.a libBlocking.a libDiskDaemon.a libDiskThreads.a" || rm -f libAIO.a libBlocking.a libDiskDaemon.a libDiskThreads.a test -z "libsquid.la" || rm -f libsquid.la rm -f "./so_locations" rm -f cf_gen cf_gen rm -f squid squid rm -f *.o rm -f DiskIO/AIO/AIODiskFile.o rm -f DiskIO/AIO/AIODiskIOModule.o rm -f DiskIO/AIO/AIODiskIOStrategy.o rm -f DiskIO/AIO/aio_win32.o rm -f DiskIO/Blocking/BlockingDiskIOModule.o rm -f DiskIO/Blocking/BlockingFile.o rm -f DiskIO/Blocking/BlockingIOStrategy.o rm -f DiskIO/DiskDaemon/DiskDaemonDiskIOModule.o rm -f DiskIO/DiskDaemon/DiskdFile.o rm -f DiskIO/DiskDaemon/DiskdIOStrategy.o rm -f DiskIO/DiskDaemon/diskd.o rm -f DiskIO/DiskIOModule.o rm -f DiskIO/DiskIOModules_gen.o rm -f DiskIO/DiskThreads/DiskThreadsDiskFile.o rm -f DiskIO/DiskThreads/DiskThreadsDiskIOModule.o rm -f DiskIO/DiskThreads/DiskThreadsIOStrategy.o rm -f DiskIO/DiskThreads/aiops.o rm -f DiskIO/DiskThreads/aiops_win32.o rm -f DiskIO/DiskThreads/async_io.o rm -f DiskIO/ReadRequest.o rm -f DiskIO/WriteRequest.o rm -f tests/TestSwapDir.o rm -f tests/stub_CommIO.o rm -f tests/stub_DelayId.o rm -f tests/stub_HelperChildConfig.o rm -f tests/stub_HttpReply.o rm -f tests/stub_HttpRequest.o rm -f tests/stub_MemObject.o rm -f tests/stub_StatHist.o rm -f tests/stub_access_log.o rm -f tests/stub_acl.o rm -f tests/stub_cache_cf.o rm -f tests/stub_cache_manager.o rm -f tests/stub_client_side_request.o rm -f tests/stub_comm.o rm -f tests/stub_errorpage.o rm -f tests/stub_fd.o rm -f tests/stub_helper.o rm -f tests/stub_http.o rm -f tests/stub_internal.o rm -f tests/stub_mime.o rm -f tests/stub_store.o rm -f tests/stub_store_client.o rm -f tests/stub_store_rebuild.o rm -f tests/stub_store_swapout.o rm -f tests/stub_tools.o rm -f tests/testACLMaxUserIP.o rm -f tests/testAuth.o rm -f tests/testBoilerplate.o rm -f tests/testCacheManager.o rm -f tests/testCoss.o rm -f tests/testDiskIO.o rm -f tests/testEvent.o rm -f tests/testEventLoop.o rm -f tests/testHttpReply.o rm -f tests/testHttpRequest.o rm -f tests/testHttpRequestMethod.o rm -f tests/testMain.o rm -f tests/testNull.o rm -f tests/testStore.o rm -f tests/testStoreController.o rm -f tests/testStoreEntryStream.o rm -f tests/testStoreHashIndex.o rm -f tests/testStoreSupport.o rm -f tests/testString.o rm -f tests/testURL.o rm -f tests/testURLScheme.o rm -f tests/testUfs.o rm -f tests/test_http_range.o rm -f *.lo rm -f *.tab.c test -z "" || rm -f rm -f DiskIO/.deps/.dirstamp rm -f DiskIO/.dirstamp rm -f DiskIO/AIO/.deps/.dirstamp rm -f DiskIO/AIO/.dirstamp rm -f DiskIO/Blocking/.deps/.dirstamp rm -f DiskIO/Blocking/.dirstamp rm -f DiskIO/DiskDaemon/.deps/.dirstamp rm -f DiskIO/DiskDaemon/.dirstamp rm -f DiskIO/DiskThreads/.deps/.dirstamp rm -f DiskIO/DiskThreads/.dirstamp rm -f tests/.deps/.dirstamp rm -f tests/.dirstamp rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -rf ./.deps DiskIO/.deps DiskIO/AIO/.deps DiskIO/Blocking/.deps DiskIO/DiskDaemon/.deps DiskIO/DiskThreads/.deps tests/.deps rm -f Makefile Making distclean in scripts rm -rf .libs _libs rm -f *.lo test -z "" || rm -f rm -f Makefile Making distclean in snmplib rm -rf .libs _libs test -z "libsnmp.a" || rm -f libsnmp.a rm -f *.o rm -f *.lo rm -f *.tab.c test -z "" || rm -f rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -rf ./.deps rm -f Makefile Making distclean in libltdl test -z "libltdl.la libltdlc.la libdlloader.la argz.o argz.lo" || rm -f libltdl.la libltdlc.la libdlloader.la argz.o argz.lo test -z "" || rm -f rm -rf .libs _libs test -z "dlopen.la libltdlc.la" || rm -f dlopen.la libltdlc.la rm -f "./so_locations" rm -f "./so_locations" rm -f *.o test -z "argz.h argz.h-t" || rm -f argz.h argz.h-t rm -f *.lo rm -f *.tab.c test -z "" || rm -f rm -f config.h stamp-h1 rm -f libtool rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -f config.status config.cache config.log configure.lineno config.status.lineno rm -rf .deps ./.deps rm -f Makefile Making distclean in lib Making distclean in libTrie Making distclean in test rm -f trie trie rm -rf .libs _libs rm -f *.o rm -f *.lo rm -f *.tab.c test -z "" || rm -f rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -rf ./.deps rm -f Makefile Making distclean in src rm -rf .libs _libs test -z "libTrie.a" || rm -f libTrie.a rm -f *.o rm -f *.lo rm -f *.tab.c test -z "" || rm -f rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -rf ./.deps rm -f Makefile Making distclean in include rm -rf .libs _libs rm -f *.lo test -z "" || rm -f rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -f Makefile Making distclean in . rm -rf .libs _libs rm -f *.lo test -z "" || rm -f rm -f config.h stamp-h1 rm -f libtool rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -f config.status config.cache config.log configure.lineno config.status.lineno rm -f Makefile Making distclean in . rm -f tests/testAll tests/testAll test -z "testHeaders" || rm -f testHeaders rm -rf .libs _libs rm -rf tests/.libs tests/_libs test -z "libmiscutil.a libntlmauth.a " || rm -f libmiscutil.a libntlmauth.a rm -f *.o rm -f *.lo rm -f *.tab.c test -z "" || rm -f rm -f tests/.dirstamp rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -rf .deps ./.deps rm -f Makefile Making distclean in compat rm -f testPreCompiler testPreCompiler test -z "testHeaders" || rm -f testHeaders rm -rf .libs _libs test -z "libcompat.la" || rm -f libcompat.la rm -f "./so_locations" rm -f *.o rm -f *.lo rm -f *.tab.c test -z "" || rm -f rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -rf ./.deps rm -f Makefile Making distclean in . rm -rf .libs _libs rm -f *.lo test -z "" || rm -f test -z "include/stamp-h include/stamp-h[0-9]*" || rm -f include/stamp-h include/stamp-h[0-9]* rm -f include/autoconf.h include/stamp-h1 rm -f libtool rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -f config.status config.cache config.log configure.lineno config.status.lineno rm -f Makefile ERROR: files left in build directory after distclean: ./src/auth/AuthType.cc *** Error code 1 Stop in /usr<http://build.squid-cache.org/job/3.HEAD-amd64-FreeBSD-7.2/ws/btlayer-00-default/squid-3.HEAD-BZR/_build.> *** Error code 1 Stop in /usr<http://build.squid-cache.org/job/3.HEAD-amd64-FreeBSD-7.2/ws/btlayer-00-default.> buildtest.sh result is 1 BUILD: .././test-suite/buildtests/layer-00-default.opts ERROR: files left in build directory after distclean: *** Error code 1 *** Error code 1 Build FAILED.
