diff -u -r -N squid-3.4.0.1/acinclude/compiler-flags.m4 squid-3.4.0.2/acinclude/compiler-flags.m4 --- squid-3.4.0.1/acinclude/compiler-flags.m4 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/acinclude/compiler-flags.m4 2013-10-04 00:32:47.000000000 +1200 @@ -170,8 +170,8 @@ squid_cv_cc_arg_pipe="" ;; clang) - squid_cv_cxx_option_werror="-Werror -Wno-error=parentheses-equality -Qunused-arguments" - squid_cv_cc_option_werror="$squid_cv_cxx_option_werror" + squid_cv_cxx_option_werror="-Werror -Qunused-arguments" + squid_cv_cc_option_werror="$squid_cv_cxx_option_werror" squid_cv_cc_option_wall="-Wall" squid_cv_cc_option_optimize="-O2" squid_cv_cc_arg_pipe="" diff -u -r -N squid-3.4.0.1/acinclude/squid-util.m4 squid-3.4.0.2/acinclude/squid-util.m4 --- squid-3.4.0.1/acinclude/squid-util.m4 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/acinclude/squid-util.m4 2013-10-04 00:32:47.000000000 +1200 @@ -216,10 +216,8 @@ ;; esac ]) - if test "x${squid_build_info:=no}" != "xno"; then - AC_DEFINE_UNQUOTED([SQUID_BUILD_INFO],["$squid_build_info"], - [Squid extended build info field for "squid -v" output]) - fi + AC_DEFINE_UNQUOTED([SQUID_BUILD_INFO],["$squid_build_info"], + [Squid extended build info field for "squid -v" output]) ]) dnl like AC_SEARCH_LIBS, with an extra argument which is diff -u -r -N squid-3.4.0.1/ChangeLog squid-3.4.0.2/ChangeLog --- squid-3.4.0.1/ChangeLog 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/ChangeLog 2013-10-04 00:32:47.000000000 +1200 @@ -1,3 +1,17 @@ +Changes to squid-3.4.0.2 (03 Oct 2013): + + - Regression Bug 3891: squid.conf parser errors in 3.4.0.1 + - Regression Fix: re-disable MinGW C++11 support + - Bug 3914: partial: make squidclient tool build cleanly with -Wconversion + - Fix memory leak in refresh_pattern parsing + - negotiate_kerberos_auth: upgrade to present group= keys + - Handle NTLM helper returning OK without user= value + - Add dns_multicast_local to control mDNS operation + - Add --disable-arch-native build option + - Display Build-Info in cache manager info report + - ... and all changes from squid 3.3.9 + - ... and some code and debug output polishing + Changes to squid-3.4.0.1 (29 Jul 2013): - Port from 2.7: StoreURL (renamed Store-ID) support @@ -40,6 +54,26 @@ - ... and many documentation changes - ... and much code cleanup and polishing +Changes to squid-3.3.9 (11 Sep 2013): + + - Regression Bug 3077: off-by-one error in Digest header decoding + - Bug 3895: fix acl_uses_indirect_client and cache_peer_access + - Bug 3879: assertion failed ConnStateData::validatePinnedConnection + - Bug 3863: myportname acl causes segmentation fault + - Bug 3849: Duplicate certificate sent when using https_port + - Bug 2287: Better fix for unsupported HTTP version handling + - Bug 2112: Reload into If-None-Match + - Fix several assert with side effects in ICAP/eCAP response handling + - Fix myportname ACL on ICAP/eCAP transactions + - Fix external ACL user:pass detail logging after adaptation + - Fix SMP mgr:info report 'Largest file desc currently in use' + - Handle infinite certificate validation loops caused by OpenSSL Bug 3090. + - Improved compatibility with gcc 4.8, clang and icc + - Show number of available filedescriptors when reserved FD changes + - Sync with newest OpenSSL error codes + - Register Http2-Settings header + - ... and many Windows portability fixes + Changes to squid-3.3.8 (13 Jul 2013): - Bug 3869: assertion failed: MemBuf.cc:272: size < capacity diff -u -r -N squid-3.4.0.1/compat/cmsg.h squid-3.4.0.2/compat/cmsg.h --- squid-3.4.0.1/compat/cmsg.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/compat/cmsg.h 2013-10-04 00:32:47.000000000 +1200 @@ -9,6 +9,12 @@ #include #endif +// WinSock2.h defines these for Windows +#if HAVE_WINSOCK2_H +#include +#define CMSG_H_ // prevent re-definition +#endif + #ifndef CMSG_H_ #define CMSG_H_ diff -u -r -N squid-3.4.0.1/compat/GnuRegex.c squid-3.4.0.2/compat/GnuRegex.c --- squid-3.4.0.1/compat/GnuRegex.c 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/compat/GnuRegex.c 2013-10-04 00:32:47.000000000 +1200 @@ -90,8 +90,6 @@ #endif /* not SYNTAX_TABLE */ -#define SYNTAX(c) re_syntax_table[c] - /* Get the interface, including the syntax bits. */ #include "compat/GnuRegex.h" @@ -889,9 +887,6 @@ #define INIT_COMPILE_STACK_SIZE 32 -#define COMPILE_STACK_EMPTY (compile_stack.avail == 0) -#define COMPILE_STACK_FULL (compile_stack.avail == compile_stack.size) - /* The next available element. */ #define COMPILE_STACK_TOP (compile_stack.stack[compile_stack.avail]) @@ -1420,7 +1415,7 @@ bufp->re_nsub++; regnum++; - if (COMPILE_STACK_FULL) { + if (compile_stack.avail == compile_stack.size) { RETALLOC(compile_stack.stack, compile_stack.size << 1, compile_stack_elt_t); if (compile_stack.stack == NULL) @@ -1461,7 +1456,7 @@ if (syntax & RE_NO_BK_PARENS) goto normal_backslash; - if (COMPILE_STACK_EMPTY) { + if (compile_stack.avail == 0) { if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) goto normal_backslash; else @@ -1479,7 +1474,7 @@ STORE_JUMP(jump_past_alt, fixup_alt_jump, b - 1); } /* See similar code for backslashed left paren above. */ - if (COMPILE_STACK_EMPTY) { + if (compile_stack.avail == 0) { if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) goto normal_char; else @@ -1832,7 +1827,7 @@ if (fixup_alt_jump) STORE_JUMP(jump_past_alt, fixup_alt_jump, b); - if (!COMPILE_STACK_EMPTY) + if (compile_stack.avail != 0) return REG_EPAREN; free(compile_stack.stack); @@ -2374,13 +2369,13 @@ case wordchar: for (j = 0; j < (1 << BYTEWIDTH); j++) - if (SYNTAX(j) == Sword) + if (re_syntax_table[j] == Sword) fastmap[j] = 1; break; case notwordchar: for (j = 0; j < (1 << BYTEWIDTH); j++) - if (SYNTAX(j) != Sword) + if (re_syntax_table[j] != Sword) fastmap[j] = 1; break; @@ -2732,21 +2727,31 @@ /* Test if at very beginning or at very end of the virtual concatenation * of `string1' and `string2'. If only one string, it's `string2'. */ #define AT_STRINGS_BEG(d) ((d) == (size1 ? string1 : string2) || !size2) -#define AT_STRINGS_END(d) ((d) == end2) +static int at_strings_end(const char *d, const char *end2) +{ + return d == end2; +} /* Test if D points to a character which is word-constituent. We have * two special cases to check for: if past the end of string1, look at * the first character in string2; and if before the beginning of * string2, look at the last character in string1. */ #define WORDCHAR_P(d) \ - (SYNTAX ((d) == end1 ? *string2 \ - : (d) == string2 - 1 ? *(end1 - 1) : *(d)) \ + (re_syntax_table[(d) == end1 ? *string2 \ + : (d) == string2 - 1 ? *(end1 - 1) : *(d)] \ == Sword) +static int +wordchar_p(const char *d, const char *end1, const char *string2) +{ + return re_syntax_table[(d) == end1 ? *string2 + : (d) == string2 - 1 ? *(end1 - 1) : *(d)] + == Sword; +} /* Test if the character before D and the one at D differ with respect * to being word-constituent. */ #define AT_WORD_BOUNDARY(d) \ - (AT_STRINGS_BEG (d) || AT_STRINGS_END (d) \ + (AT_STRINGS_BEG (d) || at_strings_end(d,end2) \ || WORDCHAR_P (d - 1) != WORDCHAR_P (d)) /* Free everything we malloc. */ @@ -3440,7 +3445,7 @@ case endline: DEBUG_PRINT1("EXECUTING endline.\n"); - if (AT_STRINGS_END(d)) { + if (at_strings_end(d,end2)) { if (!bufp->not_eol) break; } @@ -3461,7 +3466,7 @@ /* Match at the very end of the data. */ case endbuf: DEBUG_PRINT1("EXECUTING endbuf.\n"); - if (AT_STRINGS_END(d)) + if (at_strings_end(d,end2)) break; goto fail; @@ -3739,21 +3744,21 @@ case wordbeg: DEBUG_PRINT1("EXECUTING wordbeg.\n"); - if (WORDCHAR_P(d) && (AT_STRINGS_BEG(d) || !WORDCHAR_P(d - 1))) + if (wordchar_p(d,end1,string2) && (AT_STRINGS_BEG(d) || !WORDCHAR_P(d - 1))) break; goto fail; case wordend: DEBUG_PRINT1("EXECUTING wordend.\n"); if (!AT_STRINGS_BEG(d) && WORDCHAR_P(d - 1) - && (!WORDCHAR_P(d) || AT_STRINGS_END(d))) + && (!wordchar_p(d,end1,string2) || at_strings_end(d,end2))) break; goto fail; case wordchar: DEBUG_PRINT1("EXECUTING non-Emacs wordchar.\n"); PREFETCH(); - if (!WORDCHAR_P(d)) + if (!wordchar_p(d,end1,string2)) goto fail; SET_REGS_MATCHED(); d++; @@ -3762,7 +3767,7 @@ case notwordchar: DEBUG_PRINT1("EXECUTING non-Emacs notwordchar.\n"); PREFETCH(); - if (WORDCHAR_P(d)) + if (wordchar_p(d,end1,string2)) goto fail; SET_REGS_MATCHED(); d++; diff -u -r -N squid-3.4.0.1/compat/os/mswindows.h squid-3.4.0.2/compat/os/mswindows.h --- squid-3.4.0.1/compat/os/mswindows.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/compat/os/mswindows.h 2013-10-04 00:32:47.000000000 +1200 @@ -71,6 +71,11 @@ #define NOMINMAX #endif +/// some builds of MinGW do not define IPV6_V6ONLY socket option +#if !defined(IPV6_V6ONLY) +#define IPV6_V6ONLY 27 +#endif + #if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 # define __USE_FILE_OFFSET64 1 #endif @@ -469,6 +474,18 @@ { /** \endcond */ +/* + * Each of these functions is defined in the Squid namespace so as not to + * clash with the winsock.h and winsock2.h definitions. + * It is then paired with a #define to cause these wrappers to be used by + * the main code instead of those system definitions. + * + * We do this wrapper in order to: + * - cast the parameter types in only one place, and + * - record errors in POSIX errno variable, and + * - map the FD value used by Squid to the socket handes used by Windows. + */ + inline int accept(int s, struct sockaddr * a, socklen_t * l) { @@ -720,6 +737,7 @@ } else return 0; } +#define WSAAsyncSelect(s,h,w,e) Squid::WSAAsyncSelect(s,h,w,e) #undef WSADuplicateSocket inline int @@ -735,6 +753,7 @@ } else return 0; } +#define WSADuplicateSocket(s,n,l) Squid::WSADuplicateSocket(s,n,l) #undef WSASocket inline int @@ -752,6 +771,7 @@ } else return _open_osfhandle(result, 0); } +#define WSASocket(a,t,p,i,g,f) Squid::WSASocket(a,t,p,i,g,f) } /* namespace Squid */ @@ -782,6 +802,11 @@ #define open _open /* Needed in win32lib.c */ #endif /* #ifdef __cplusplus */ +/* provide missing definitions from resoruce.h */ +/* NP: sys/resource.h and sys/time.h are apparently order-dependant. */ +#if HAVE_SYS_TIME_H +#include +#endif #if HAVE_SYS_RESOURCE_H #include #else diff -u -r -N squid-3.4.0.1/configure squid-3.4.0.2/configure --- squid-3.4.0.1/configure 2013-07-29 10:46:52.000000000 +1200 +++ squid-3.4.0.2/configure 2013-10-04 00:33:30.000000000 +1200 @@ -1,7 +1,7 @@ #! /bin/sh # From configure.ac Revision. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for Squid Web Proxy 3.4.0.1. +# Generated by GNU Autoconf 2.68 for Squid Web Proxy 3.4.0.2. # # Report bugs to . # @@ -575,8 +575,8 @@ # Identity of this package. PACKAGE_NAME='Squid Web Proxy' PACKAGE_TARNAME='squid' -PACKAGE_VERSION='3.4.0.1' -PACKAGE_STRING='Squid Web Proxy 3.4.0.1' +PACKAGE_VERSION='3.4.0.2' +PACKAGE_STRING='Squid Web Proxy 3.4.0.2' PACKAGE_BUGREPORT='http://bugs.squid-cache.org/' PACKAGE_URL='' @@ -912,6 +912,7 @@ enable_option_checking enable_maintainer_mode enable_dependency_tracking +enable_arch_native enable_strict_error_checking enable_loadable_modules enable_shared @@ -1574,7 +1575,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Squid Web Proxy 3.4.0.1 to adapt to many kinds of systems. +\`configure' configures Squid Web Proxy 3.4.0.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1644,7 +1645,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Squid Web Proxy 3.4.0.1:";; + short | recursive ) echo "Configuration of Squid Web Proxy 3.4.0.2:";; esac cat <<\_ACEOF @@ -1656,6 +1657,10 @@ (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors + --disable-arch-native Some compilers offer CPU-specific optimizations with + the -march=native parameter. This flag disables the + optimization. The default is to auto-detect compiler + support and use where available. --disable-strict-error-checking By default squid is compiled with all possible static compiler error-checks enabled. This flag @@ -2028,7 +2033,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Squid Web Proxy configure 3.4.0.1 +Squid Web Proxy configure 3.4.0.2 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -3124,7 +3129,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Squid Web Proxy $as_me 3.4.0.1, which was +It was created by Squid Web Proxy $as_me 3.4.0.2, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3943,7 +3948,7 @@ # Define the identity of the package. PACKAGE='squid' - VERSION='3.4.0.1' + VERSION='3.4.0.2' cat >>confdefs.h <<_ACEOF @@ -5983,8 +5988,24 @@ -# Clang 3.2 on some CPUs requires -march-native to detect correctly -# GCC 4.3+ can also produce faster executables when its used +# Clang 3.2 on some CPUs requires -march-native to detect correctly. +# GCC 4.3+ can also produce faster executables when its used. +# But building inside a virtual machine environment has been found to +# cause random Illegal Instruction errors due to mis-detection of CPU. +# Check whether --enable-arch-native was given. +if test "${enable_arch_native+set}" = set; then : + enableval=$enable_arch_native; + +if test "$enableval" != "yes" -a "$enableval" != "no" ; then + as_fn_error $? "Unrecognized argument to --disable-arch-native: $enableval" "$LINENO" 5 +fi + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: CPU -march=native optimization enabled: ${enable_arch_native:=auto}" >&5 +$as_echo "$as_me: CPU -march=native optimization enabled: ${enable_arch_native:=auto}" >&6;} +if test "x${enable_arch_native}" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler accepts -march=native" >&5 @@ -6023,6 +6044,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $squid_cv_check_marchnative" >&5 $as_echo "$squid_cv_check_marchnative" >&6; } +fi # might be cross-compiling. if test "x$HOSTCXX" = "x"; then @@ -6687,7 +6709,8 @@ fi -if test "x$ax_cv_cxx_compile_cxx0x_cxx" = "xyes" ; then +if test "x$ax_cv_cxx_compile_cxx0x_cxx" = "xyes" -a \ + "x$squid_host_os" != "xmingw" ; then #BUG 3613: when clang -std=c++0x is used, it activates a "strict mode" # in the system libraries, which makes some c99 methods unavailable # (e.g. strtoll), yet configure detects them as avilable. @@ -18608,7 +18631,7 @@ squid_cv_cc_arg_pipe="" ;; clang) - squid_cv_cxx_option_werror="-Werror -Wno-error=parentheses-equality -Qunused-arguments" + squid_cv_cxx_option_werror="-Werror -Qunused-arguments" squid_cv_cc_option_werror="$squid_cv_cxx_option_werror" squid_cv_cc_option_wall="-Wall" squid_cv_cc_option_optimize="-O2" @@ -18956,13 +18979,11 @@ fi - if test "x${squid_build_info:=no}" != "xno"; then cat >>confdefs.h <<_ACEOF #define SQUID_BUILD_INFO "$squid_build_info" _ACEOF - fi # Check whether --enable-optimizations was given. @@ -24126,6 +24147,14 @@ #define HAVE_DECL_KRB5_KT_FREE_ENTRY $ac_have_decl _ACEOF + ac_fn_cxx_check_type "$LINENO" "krb5_pac" "ac_cv_type_krb5_pac" "#include +" +if test "x$ac_cv_type_krb5_pac" = xyes; then : + +$as_echo "#define HAVE_KRB5_PAC 1" >>confdefs.h + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_kt_free_entry in -lkrb5" >&5 $as_echo_n "checking for krb5_kt_free_entry in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_kt_free_entry+:} false; then : @@ -24378,6 +24407,190 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_renewed_creds in -lkrb5" >&5 +$as_echo_n "checking for krb5_get_renewed_creds in -lkrb5... " >&6; } +if ${ac_cv_lib_krb5_krb5_get_renewed_creds+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkrb5 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char krb5_get_renewed_creds (); +int +main () +{ +return krb5_get_renewed_creds (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_krb5_krb5_get_renewed_creds=yes +else + ac_cv_lib_krb5_krb5_get_renewed_creds=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_get_renewed_creds" >&5 +$as_echo "$ac_cv_lib_krb5_krb5_get_renewed_creds" >&6; } +if test "x$ac_cv_lib_krb5_krb5_get_renewed_creds" = xyes; then : + +$as_echo "#define HAVE_KRB5_GET_RENEWED_CREDS 1" >>confdefs.h + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_principal_get_realm in -lkrb5" >&5 +$as_echo_n "checking for krb5_principal_get_realm in -lkrb5... " >&6; } +if ${ac_cv_lib_krb5_krb5_principal_get_realm+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkrb5 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char krb5_principal_get_realm (); +int +main () +{ +return krb5_principal_get_realm (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_krb5_krb5_principal_get_realm=yes +else + ac_cv_lib_krb5_krb5_principal_get_realm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_principal_get_realm" >&5 +$as_echo "$ac_cv_lib_krb5_krb5_principal_get_realm" >&6; } +if test "x$ac_cv_lib_krb5_krb5_principal_get_realm" = xyes; then : + +$as_echo "#define HAVE_KRB5_PRINCIPAL_GET_REALM 1" >>confdefs.h + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_init_creds_opt_alloc in -lkrb5" >&5 +$as_echo_n "checking for krb5_get_init_creds_opt_alloc in -lkrb5... " >&6; } +if ${ac_cv_lib_krb5_krb5_get_init_creds_opt_alloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkrb5 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char krb5_get_init_creds_opt_alloc (); +int +main () +{ +return krb5_get_init_creds_opt_alloc (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_krb5_krb5_get_init_creds_opt_alloc=yes +else + ac_cv_lib_krb5_krb5_get_init_creds_opt_alloc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_get_init_creds_opt_alloc" >&5 +$as_echo "$ac_cv_lib_krb5_krb5_get_init_creds_opt_alloc" >&6; } +if test "x$ac_cv_lib_krb5_krb5_get_init_creds_opt_alloc" = xyes; then : + +$as_echo "#define HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC 1" >>confdefs.h + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_init_creds_free requires krb5_context" >&5 +$as_echo_n "checking for krb5_get_init_creds_free requires krb5_context... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + +int +main () +{ +krb5_context context; + krb5_get_init_creds_opt *options; + krb5_get_init_creds_opt_free(context, options) + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + + +$as_echo "#define HAVE_KRB5_GET_INIT_CREDS_FREE_CONTEXT 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + for ac_func in gss_map_name_to_any +do : + ac_fn_cxx_check_func "$LINENO" "gss_map_name_to_any" "ac_cv_func_gss_map_name_to_any" +if test "x$ac_cv_func_gss_map_name_to_any" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GSS_MAP_NAME_TO_ANY 1 +_ACEOF + +$as_echo "#define HAVE_GSS_MAP_ANY_TO_ANY 1" >>confdefs.h + +fi +done + + for ac_func in gsskrb5_extract_authz_data_from_sec_context +do : + ac_fn_cxx_check_func "$LINENO" "gsskrb5_extract_authz_data_from_sec_context" "ac_cv_func_gsskrb5_extract_authz_data_from_sec_context" +if test "x$ac_cv_func_gsskrb5_extract_authz_data_from_sec_context" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GSSKRB5_EXTRACT_AUTHZ_DATA_FROM_SEC_CONTEXT 1 +_ACEOF + +$as_echo "#define HAVE_GSSKRB5_EXTRACT_AUTHZ_DATA_FROM_SEC_CONTEXT 1" >>confdefs.h + +fi +done + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for memory cache" >&5 @@ -32882,7 +33095,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Squid Web Proxy $as_me 3.4.0.1, which was +This file was extended by Squid Web Proxy $as_me 3.4.0.2, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -32948,7 +33161,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Squid Web Proxy config.status 3.4.0.1 +Squid Web Proxy config.status 3.4.0.2 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff -u -r -N squid-3.4.0.1/configure.ac squid-3.4.0.2/configure.ac --- squid-3.4.0.1/configure.ac 2013-07-29 10:46:52.000000000 +1200 +++ squid-3.4.0.2/configure.ac 2013-10-04 00:33:30.000000000 +1200 @@ -1,4 +1,4 @@ -AC_INIT([Squid Web Proxy],[3.4.0.1],[http://bugs.squid-cache.org/],[squid]) +AC_INIT([Squid Web Proxy],[3.4.0.2],[http://bugs.squid-cache.org/],[squid]) AC_PREREQ(2.61) AC_CONFIG_HEADERS([include/autoconf.h]) AC_CONFIG_AUX_DIR(cfgaux) @@ -35,9 +35,22 @@ AC_LANG([C++]) AC_CANONICAL_HOST -# Clang 3.2 on some CPUs requires -march-native to detect correctly -# GCC 4.3+ can also produce faster executables when its used -SQUID_CC_CHECK_ARGUMENT([squid_cv_check_marchnative],[-march=native]) +# Clang 3.2 on some CPUs requires -march-native to detect correctly. +# GCC 4.3+ can also produce faster executables when its used. +# But building inside a virtual machine environment has been found to +# cause random Illegal Instruction errors due to mis-detection of CPU. +AC_ARG_ENABLE(arch-native, + AS_HELP_STRING([--disable-arch-native],[Some compilers offer CPU-specific + optimizations with the -march=native parameter. + This flag disables the optimization. The default is to + auto-detect compiler support and use where available.]), [ + SQUID_YESNO([$enableval], + [Unrecognized argument to --disable-arch-native: $enableval]) +]) +AC_MSG_NOTICE([CPU -march=native optimization enabled: ${enable_arch_native:=auto}]) +if test "x${enable_arch_native}" != "xno"; then + SQUID_CC_CHECK_ARGUMENT([squid_cv_check_marchnative],[-march=native]) +fi # might be cross-compiling. if test "x$HOSTCXX" = "x"; then @@ -71,7 +84,8 @@ # Check for C++0x compiler support AX_CXX_COMPILE_STDCXX_0X -if test "x$ax_cv_cxx_compile_cxx0x_cxx" = "xyes" ; then +if test "x$ax_cv_cxx_compile_cxx0x_cxx" = "xyes" -a \ + "x$squid_host_os" != "xmingw" ; then #BUG 3613: when clang -std=c++0x is used, it activates a "strict mode" # in the system libraries, which makes some c99 methods unavailable # (e.g. strtoll), yet configure detects them as avilable. @@ -1906,6 +1920,10 @@ AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE,1, [Define to 1 if you have krb5_get_error_message]),) AC_CHECK_DECLS(krb5_kt_free_entry,,,[#include ]) + AC_CHECK_TYPE(krb5_pac, + AC_DEFINE(HAVE_KRB5_PAC,1, + [Define to 1 if you have krb5_pac]),, + [#include ]) AC_CHECK_LIB(krb5,krb5_kt_free_entry, AC_DEFINE(HAVE_KRB5_KT_FREE_ENTRY,1, [Define to 1 if you have krb5_kt_free_entry]),) @@ -1924,6 +1942,33 @@ AC_CHECK_LIB(krb5,profile_release, AC_DEFINE(HAVE_PROFILE_RELEASE,1, [Define to 1 if you have profile_release]),) + AC_CHECK_LIB(krb5,krb5_get_renewed_creds, + AC_DEFINE(HAVE_KRB5_GET_RENEWED_CREDS,1, + [Define to 1 if you have krb5_get_renewed_creds]),) + AC_CHECK_LIB(krb5,krb5_principal_get_realm, + AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1, + [Define to 1 if you have krb5_principal_get_realm]),) + AC_CHECK_LIB(krb5, krb5_get_init_creds_opt_alloc, + AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC,1, + [Define to 1 if you have krb5_get_init_creds_opt_alloc]),) + AC_MSG_CHECKING([for krb5_get_init_creds_free requires krb5_context]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + ]],[[krb5_context context; + krb5_get_init_creds_opt *options; + krb5_get_init_creds_opt_free(context, options)]])],[ + AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_FREE_CONTEXT,1, + [Define to 1 if you krb5_get_init_creds_free requires krb5_context]) + AC_MSG_RESULT(yes) + ],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)]) + + + AC_CHECK_FUNCS(gss_map_name_to_any, + AC_DEFINE(HAVE_GSS_MAP_ANY_TO_ANY,1, + [Define to 1 if you have gss_map_name_to_any]),) + AC_CHECK_FUNCS(gsskrb5_extract_authz_data_from_sec_context, + AC_DEFINE(HAVE_GSSKRB5_EXTRACT_AUTHZ_DATA_FROM_SEC_CONTEXT,1, + [Define to 1 if you have gsskrb5_extract_authz_data_from_sec_context]),) SQUID_CHECK_KRB5_CONTEXT_MEMORY_CACHE SQUID_DEFINE_BOOL(HAVE_KRB5_MEMORY_CACHE,$squid_cv_memory_cache, diff -u -r -N squid-3.4.0.1/errors/af/error-details.txt squid-3.4.0.2/errors/af/error-details.txt --- squid-3.4.0.1/errors/af/error-details.txt 2013-07-29 10:48:16.000000000 +1200 +++ squid-3.4.0.2/errors/af/error-details.txt 2013-10-04 00:34:54.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/ar/error-details.txt squid-3.4.0.2/errors/ar/error-details.txt --- squid-3.4.0.1/errors/ar/error-details.txt 2013-07-29 10:48:37.000000000 +1200 +++ squid-3.4.0.2/errors/ar/error-details.txt 2013-10-04 00:35:14.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/az/error-details.txt squid-3.4.0.2/errors/az/error-details.txt --- squid-3.4.0.1/errors/az/error-details.txt 2013-07-29 10:48:58.000000000 +1200 +++ squid-3.4.0.2/errors/az/error-details.txt 2013-10-04 00:35:37.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/bg/error-details.txt squid-3.4.0.2/errors/bg/error-details.txt --- squid-3.4.0.1/errors/bg/error-details.txt 2013-07-29 10:49:19.000000000 +1200 +++ squid-3.4.0.2/errors/bg/error-details.txt 2013-10-04 00:35:58.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/ca/error-details.txt squid-3.4.0.2/errors/ca/error-details.txt --- squid-3.4.0.1/errors/ca/error-details.txt 2013-07-29 10:49:40.000000000 +1200 +++ squid-3.4.0.2/errors/ca/error-details.txt 2013-10-04 00:36:23.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/cs/error-details.txt squid-3.4.0.2/errors/cs/error-details.txt --- squid-3.4.0.1/errors/cs/error-details.txt 2013-07-29 10:50:03.000000000 +1200 +++ squid-3.4.0.2/errors/cs/error-details.txt 2013-10-04 00:36:44.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/da/error-details.txt squid-3.4.0.2/errors/da/error-details.txt --- squid-3.4.0.1/errors/da/error-details.txt 2013-07-29 10:50:26.000000000 +1200 +++ squid-3.4.0.2/errors/da/error-details.txt 2013-10-04 00:37:05.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/de/error-details.txt squid-3.4.0.2/errors/de/error-details.txt --- squid-3.4.0.1/errors/de/error-details.txt 2013-07-29 10:50:56.000000000 +1200 +++ squid-3.4.0.2/errors/de/error-details.txt 2013-10-04 00:37:25.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/el/error-details.txt squid-3.4.0.2/errors/el/error-details.txt --- squid-3.4.0.1/errors/el/error-details.txt 2013-07-29 10:51:38.000000000 +1200 +++ squid-3.4.0.2/errors/el/error-details.txt 2013-10-04 00:37:46.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/en/error-details.txt squid-3.4.0.2/errors/en/error-details.txt --- squid-3.4.0.1/errors/en/error-details.txt 2013-07-29 10:52:02.000000000 +1200 +++ squid-3.4.0.2/errors/en/error-details.txt 2013-10-04 00:38:06.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/es/error-details.txt squid-3.4.0.2/errors/es/error-details.txt --- squid-3.4.0.1/errors/es/error-details.txt 2013-07-29 10:52:42.000000000 +1200 +++ squid-3.4.0.2/errors/es/error-details.txt 2013-10-04 00:38:27.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/et/error-details.txt squid-3.4.0.2/errors/et/error-details.txt --- squid-3.4.0.1/errors/et/error-details.txt 2013-07-29 10:53:08.000000000 +1200 +++ squid-3.4.0.2/errors/et/error-details.txt 2013-10-04 00:38:47.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/fa/error-details.txt squid-3.4.0.2/errors/fa/error-details.txt --- squid-3.4.0.1/errors/fa/error-details.txt 2013-07-29 10:53:34.000000000 +1200 +++ squid-3.4.0.2/errors/fa/error-details.txt 2013-10-04 00:39:08.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/fi/error-details.txt squid-3.4.0.2/errors/fi/error-details.txt --- squid-3.4.0.1/errors/fi/error-details.txt 2013-07-29 10:54:00.000000000 +1200 +++ squid-3.4.0.2/errors/fi/error-details.txt 2013-10-04 00:39:28.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/fr/error-details.txt squid-3.4.0.2/errors/fr/error-details.txt --- squid-3.4.0.1/errors/fr/error-details.txt 2013-07-29 10:54:23.000000000 +1200 +++ squid-3.4.0.2/errors/fr/error-details.txt 2013-10-04 00:39:49.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/he/error-details.txt squid-3.4.0.2/errors/he/error-details.txt --- squid-3.4.0.1/errors/he/error-details.txt 2013-07-29 10:54:46.000000000 +1200 +++ squid-3.4.0.2/errors/he/error-details.txt 2013-10-04 00:40:09.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/hu/error-details.txt squid-3.4.0.2/errors/hu/error-details.txt --- squid-3.4.0.1/errors/hu/error-details.txt 2013-07-29 10:55:08.000000000 +1200 +++ squid-3.4.0.2/errors/hu/error-details.txt 2013-10-04 00:40:30.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/hy/error-details.txt squid-3.4.0.2/errors/hy/error-details.txt --- squid-3.4.0.1/errors/hy/error-details.txt 2013-07-29 10:55:28.000000000 +1200 +++ squid-3.4.0.2/errors/hy/error-details.txt 2013-10-04 00:40:50.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/id/error-details.txt squid-3.4.0.2/errors/id/error-details.txt --- squid-3.4.0.1/errors/id/error-details.txt 2013-07-29 10:55:49.000000000 +1200 +++ squid-3.4.0.2/errors/id/error-details.txt 2013-10-04 00:41:11.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/it/error-details.txt squid-3.4.0.2/errors/it/error-details.txt --- squid-3.4.0.1/errors/it/error-details.txt 2013-07-29 10:56:14.000000000 +1200 +++ squid-3.4.0.2/errors/it/error-details.txt 2013-10-04 00:41:32.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/ja/error-details.txt squid-3.4.0.2/errors/ja/error-details.txt --- squid-3.4.0.1/errors/ja/error-details.txt 2013-07-29 10:56:40.000000000 +1200 +++ squid-3.4.0.2/errors/ja/error-details.txt 2013-10-04 00:41:53.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/ko/error-details.txt squid-3.4.0.2/errors/ko/error-details.txt --- squid-3.4.0.1/errors/ko/error-details.txt 2013-07-29 10:57:01.000000000 +1200 +++ squid-3.4.0.2/errors/ko/error-details.txt 2013-10-04 00:42:13.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/lt/error-details.txt squid-3.4.0.2/errors/lt/error-details.txt --- squid-3.4.0.1/errors/lt/error-details.txt 2013-07-29 10:57:22.000000000 +1200 +++ squid-3.4.0.2/errors/lt/error-details.txt 2013-10-04 00:42:34.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/lv/error-details.txt squid-3.4.0.2/errors/lv/error-details.txt --- squid-3.4.0.1/errors/lv/error-details.txt 2013-07-29 10:57:42.000000000 +1200 +++ squid-3.4.0.2/errors/lv/error-details.txt 2013-10-04 00:42:55.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/ms/error-details.txt squid-3.4.0.2/errors/ms/error-details.txt --- squid-3.4.0.1/errors/ms/error-details.txt 2013-07-29 10:58:02.000000000 +1200 +++ squid-3.4.0.2/errors/ms/error-details.txt 2013-10-04 00:43:15.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/nl/error-details.txt squid-3.4.0.2/errors/nl/error-details.txt --- squid-3.4.0.1/errors/nl/error-details.txt 2013-07-29 10:58:23.000000000 +1200 +++ squid-3.4.0.2/errors/nl/error-details.txt 2013-10-04 00:43:36.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/oc/error-details.txt squid-3.4.0.2/errors/oc/error-details.txt --- squid-3.4.0.1/errors/oc/error-details.txt 2013-07-29 10:58:44.000000000 +1200 +++ squid-3.4.0.2/errors/oc/error-details.txt 2013-10-04 00:43:56.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/pl/error-details.txt squid-3.4.0.2/errors/pl/error-details.txt --- squid-3.4.0.1/errors/pl/error-details.txt 2013-07-29 10:59:05.000000000 +1200 +++ squid-3.4.0.2/errors/pl/error-details.txt 2013-10-04 00:44:17.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/pt/error-details.txt squid-3.4.0.2/errors/pt/error-details.txt --- squid-3.4.0.1/errors/pt/error-details.txt 2013-07-29 10:59:46.000000000 +1200 +++ squid-3.4.0.2/errors/pt/error-details.txt 2013-10-04 00:44:59.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/pt-br/error-details.txt squid-3.4.0.2/errors/pt-br/error-details.txt --- squid-3.4.0.1/errors/pt-br/error-details.txt 2013-07-29 10:59:26.000000000 +1200 +++ squid-3.4.0.2/errors/pt-br/error-details.txt 2013-10-04 00:44:38.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/ro/error-details.txt squid-3.4.0.2/errors/ro/error-details.txt --- squid-3.4.0.1/errors/ro/error-details.txt 2013-07-29 11:00:09.000000000 +1200 +++ squid-3.4.0.2/errors/ro/error-details.txt 2013-10-04 00:45:20.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/ru/error-details.txt squid-3.4.0.2/errors/ru/error-details.txt --- squid-3.4.0.1/errors/ru/error-details.txt 2013-07-29 11:00:30.000000000 +1200 +++ squid-3.4.0.2/errors/ru/error-details.txt 2013-10-04 00:45:40.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/sk/error-details.txt squid-3.4.0.2/errors/sk/error-details.txt --- squid-3.4.0.1/errors/sk/error-details.txt 2013-07-29 11:00:51.000000000 +1200 +++ squid-3.4.0.2/errors/sk/error-details.txt 2013-10-04 00:46:01.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/sl/error-details.txt squid-3.4.0.2/errors/sl/error-details.txt --- squid-3.4.0.1/errors/sl/error-details.txt 2013-07-29 11:01:17.000000000 +1200 +++ squid-3.4.0.2/errors/sl/error-details.txt 2013-10-04 00:46:22.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/sr-cyrl/error-details.txt squid-3.4.0.2/errors/sr-cyrl/error-details.txt --- squid-3.4.0.1/errors/sr-cyrl/error-details.txt 2013-07-29 11:01:40.000000000 +1200 +++ squid-3.4.0.2/errors/sr-cyrl/error-details.txt 2013-10-04 00:46:42.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/sr-latn/error-details.txt squid-3.4.0.2/errors/sr-latn/error-details.txt --- squid-3.4.0.1/errors/sr-latn/error-details.txt 2013-07-29 11:02:01.000000000 +1200 +++ squid-3.4.0.2/errors/sr-latn/error-details.txt 2013-10-04 00:47:03.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/sv/error-details.txt squid-3.4.0.2/errors/sv/error-details.txt --- squid-3.4.0.1/errors/sv/error-details.txt 2013-07-29 11:02:22.000000000 +1200 +++ squid-3.4.0.2/errors/sv/error-details.txt 2013-10-04 00:47:23.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/templates/error-details.txt squid-3.4.0.2/errors/templates/error-details.txt --- squid-3.4.0.1/errors/templates/error-details.txt 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/errors/templates/error-details.txt 2013-10-04 00:32:47.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/th/error-details.txt squid-3.4.0.2/errors/th/error-details.txt --- squid-3.4.0.1/errors/th/error-details.txt 2013-07-29 11:02:43.000000000 +1200 +++ squid-3.4.0.2/errors/th/error-details.txt 2013-10-04 00:47:44.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/tr/error-details.txt squid-3.4.0.2/errors/tr/error-details.txt --- squid-3.4.0.1/errors/tr/error-details.txt 2013-07-29 11:03:04.000000000 +1200 +++ squid-3.4.0.2/errors/tr/error-details.txt 2013-10-04 00:48:04.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/uk/error-details.txt squid-3.4.0.2/errors/uk/error-details.txt --- squid-3.4.0.1/errors/uk/error-details.txt 2013-07-29 11:03:25.000000000 +1200 +++ squid-3.4.0.2/errors/uk/error-details.txt 2013-10-04 00:48:25.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/uz/error-details.txt squid-3.4.0.2/errors/uz/error-details.txt --- squid-3.4.0.1/errors/uz/error-details.txt 2013-07-29 11:03:45.000000000 +1200 +++ squid-3.4.0.2/errors/uz/error-details.txt 2013-10-04 00:48:45.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/vi/error-details.txt squid-3.4.0.2/errors/vi/error-details.txt --- squid-3.4.0.1/errors/vi/error-details.txt 2013-07-29 11:04:06.000000000 +1200 +++ squid-3.4.0.2/errors/vi/error-details.txt 2013-10-04 00:49:06.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/zh-cn/error-details.txt squid-3.4.0.2/errors/zh-cn/error-details.txt --- squid-3.4.0.1/errors/zh-cn/error-details.txt 2013-07-29 11:04:27.000000000 +1200 +++ squid-3.4.0.2/errors/zh-cn/error-details.txt 2013-10-04 00:49:26.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/errors/zh-tw/error-details.txt squid-3.4.0.2/errors/zh-tw/error-details.txt --- squid-3.4.0.1/errors/zh-tw/error-details.txt 2013-07-29 11:04:48.000000000 +1200 +++ squid-3.4.0.2/errors/zh-tw/error-details.txt 2013-10-04 00:49:46.000000000 +1200 @@ -1,3 +1,7 @@ +name: SQUID_X509_V_ERR_INFINITE_VALIDATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "Cert validation infinite loop detected" + name: SQUID_ERR_SSL_HANDSHAKE detail: "%ssl_error_descr: %ssl_lib_error" descr: "Handshake with SSL server failed" @@ -130,6 +134,90 @@ detail: "%ssl_error_descr: %ssl_subject" descr: "Key usage does not include certificate signing" +name: X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER +detail: "%ssl_error_descr: %ssl_subject" +descr: "unable to get CRL issuer certificate" + +name: X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical extension" + +name: X509_V_ERR_KEYUSAGE_NO_CRL_SIGN +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include CRL signing" + +name: X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "unhandled critical CRL extension" + +name: X509_V_ERR_INVALID_NON_CA +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid non-CA certificate (has CA markings)" + +name: X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy path length constraint exceeded" + +name: X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "key usage does not include digital signature" + +name: X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED +detail: "%ssl_error_descr: %ssl_subject" +descr: "proxy certificates not allowed, please set the appropriate flag" + +name: X509_V_ERR_INVALID_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate extension" + +name: X509_V_ERR_INVALID_POLICY_EXTENSION +detail: "%ssl_error_descr: %ssl_subject" +descr: "invalid or inconsistent certificate policy extension" + +name: X509_V_ERR_NO_EXPLICIT_POLICY +detail: "%ssl_error_descr: %ssl_subject" +descr: "no explicit policy" + +name: X509_V_ERR_DIFFERENT_CRL_SCOPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Different CRL scope" + +name: X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE +detail: "%ssl_error_descr: %ssl_subject" +descr: "Unsupported extension feature" + +name: X509_V_ERR_UNNESTED_RESOURCE +detail: "%ssl_error_descr: %ssl_subject" +descr: "RFC 3779 resource not subset of parent's resources" + +name: X509_V_ERR_PERMITTED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "permitted subtree violation" + +name: X509_V_ERR_EXCLUDED_VIOLATION +detail: "%ssl_error_descr: %ssl_subject" +descr: "excluded subtree violation" + +name: X509_V_ERR_SUBTREE_MINMAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "name constraints minimum and maximum not supported" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported name constraint type" + +name: X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name constraint syntax" + +name: X509_V_ERR_UNSUPPORTED_NAME_SYNTAX +detail: "%ssl_error_descr: %ssl_subject" +descr: "unsupported or invalid name syntax" + +name: X509_V_ERR_CRL_PATH_VALIDATION_ERROR +detail: "%ssl_error_descr: %ssl_subject" +descr: "CRL path validation error" + name: X509_V_ERR_APPLICATION_VERIFICATION detail: "%ssl_error_descr: %ssl_subject" descr: "Application verification failure" diff -u -r -N squid-3.4.0.1/helpers/basic_auth/DB/basic_db_auth.8 squid-3.4.0.2/helpers/basic_auth/DB/basic_db_auth.8 --- squid-3.4.0.1/helpers/basic_auth/DB/basic_db_auth.8 2013-07-29 11:04:51.000000000 +1200 +++ squid-3.4.0.2/helpers/basic_auth/DB/basic_db_auth.8 2013-10-04 00:49:48.000000000 +1200 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "BASIC_DB_AUTH 1" -.TH BASIC_DB_AUTH 1 "2013-07-28" "perl v5.10.1" "User Contributed Perl Documentation" +.TH BASIC_DB_AUTH 1 "2013-10-03" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-3.4.0.1/helpers/basic_auth/MSNT/msntauth.cc squid-3.4.0.2/helpers/basic_auth/MSNT/msntauth.cc --- squid-3.4.0.1/helpers/basic_auth/MSNT/msntauth.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/basic_auth/MSNT/msntauth.cc 2013-10-04 00:32:47.000000000 +1200 @@ -37,7 +37,6 @@ #include #include #include -#include #include "msntauth.h" diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/kerberos_ldap_group.cc squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/kerberos_ldap_group.cc --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/kerberos_ldap_group.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/kerberos_ldap_group.cc 2013-10-04 00:32:47.000000000 +1200 @@ -65,7 +65,7 @@ void clean_gd(struct gdstruct *gdsp); void clean_nd(struct ndstruct *ndsp); -void clean_ls(struct ndstruct *lssp); +void clean_ls(struct lsstruct *lssp); void clean_gd(struct gdstruct *gdsp) @@ -78,22 +78,12 @@ pp = p; p = p->next; } - if (p->group) { - xfree(p->group); - p->group = NULL; - } - if (p->domain) { - xfree(p->domain); - p->domain = NULL; - } - if (pp && pp->next) { - xfree(pp->next); - pp->next = NULL; - } - if (p == gdsp) { - xfree(gdsp); - gdsp = NULL; - } + safe_free(p->group); + safe_free(p->domain); + if (pp) + safe_free(pp->next); + if (p == gdsp) + safe_free(gdsp); p = gdsp; } } @@ -109,22 +99,12 @@ pp = p; p = p->next; } - if (p->netbios) { - xfree(p->netbios); - p->netbios = NULL; - } - if (p->domain) { - xfree(p->domain); - p->domain = NULL; - } - if (pp && pp->next) { - xfree(pp->next); - pp->next = NULL; - } - if (p == ndsp) { - xfree(ndsp); - ndsp = NULL; - } + safe_free(p->netbios); + safe_free(p->domain); + if (pp) + safe_free(pp->next); + if (p == ndsp) + safe_free(ndsp); p = ndsp; } } @@ -140,22 +120,12 @@ pp = p; p = p->next; } - if (p->lserver) { - xfree(p->lserver); - p->lserver = NULL; - } - if (p->domain) { - xfree(p->domain); - p->domain = NULL; - } - if (pp && pp->next) { - xfree(pp->next); - pp->next = NULL; - } - if (p == lssp) { - xfree(lssp); - lssp = NULL; - } + safe_free(p->lserver); + safe_free(p->domain); + if (pp) + safe_free(pp->next); + if (p == lssp) + safe_free(lssp); p = lssp; } } @@ -163,50 +133,17 @@ void clean_args(struct main_args *margs) { - if (margs->glist) { - xfree(margs->glist); - margs->glist = NULL; - } - if (margs->ulist) { - xfree(margs->ulist); - margs->ulist = NULL; - } - if (margs->tlist) { - xfree(margs->tlist); - margs->tlist = NULL; - } - if (margs->nlist) { - xfree(margs->nlist); - margs->nlist = NULL; - } - if (margs->llist) { - xfree(margs->llist); - margs->llist = NULL; - } - if (margs->luser) { - xfree(margs->luser); - margs->luser = NULL; - } - if (margs->lpass) { - xfree(margs->lpass); - margs->lpass = NULL; - } - if (margs->lbind) { - xfree(margs->lbind); - margs->lbind = NULL; - } - if (margs->lurl) { - xfree(margs->lurl); - margs->lurl = NULL; - } - if (margs->ssl) { - xfree(margs->ssl); - margs->ssl = NULL; - } - if (margs->ddomain) { - xfree(margs->ddomain); - margs->ddomain = NULL; - } + safe_free(margs->glist); + safe_free(margs->ulist); + safe_free(margs->tlist); + safe_free(margs->nlist); + safe_free(margs->llist); + safe_free(margs->luser); + safe_free(margs->lpass); + safe_free(margs->lbind); + safe_free(margs->lurl); + safe_free(margs->ssl); + safe_free(margs->ddomain); if (margs->groups) { clean_gd(margs->groups); margs->groups = NULL; @@ -413,8 +350,8 @@ log((char *) "%s| %s: INFO: Got User: %s Netbios Name: %s\n", LogTime(), PROGRAM, up, np); domain = get_netbios_name(&margs, netbios); user = nuser; - xfree(up); - xfree(np); + safe_free(up); + safe_free(np); } else if (domain) { strup(domain); *domain = '\0'; @@ -436,8 +373,8 @@ else log((char *) "%s| %s: INFO: Got User: %s Domain: %s\n", LogTime(), PROGRAM, up, domain ? dp : "NULL"); - xfree(up); - xfree(dp); + safe_free(up); + safe_free(dp); if (!strcmp(user, "QQ") && domain && !strcmp(domain, "QQ")) { clean_args(&margs); exit(-1); @@ -477,7 +414,7 @@ strup(char *s) { while (*s) { - *s = toupper((unsigned char) *s); + *s = (char)toupper((unsigned char) *s); ++s; } } diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_group.cc squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_group.cc --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_group.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_group.cc 2013-10-04 00:32:47.000000000 +1200 @@ -31,6 +31,7 @@ #include "support.h" struct gdstruct *init_gd(void); +void free_gd(struct gdstruct *gdsp); struct gdstruct * init_gd(void) { @@ -59,7 +60,8 @@ char * utf8dup(struct main_args *margs) { - int c = 0, s; + size_t c = 0; + unsigned char s; size_t n; char *src; unsigned char *p, *dupp; @@ -79,7 +81,7 @@ *p = 194; ++p; *p = s; - } else if (s > 191 && s < 256) { + } else if (s > 191) { *p = 195; ++p; *p = s - 64; @@ -121,7 +123,7 @@ return NULL; char *upd = strrchr(up, '@'); - size_t a = (upd ? (upd - up) : strlen(up) ); + size_t a = (upd ? (size_t)(upd - up) : strlen(up) ); char *ul = (char *) xmalloc(strlen(up)+1); size_t n = 0; @@ -174,17 +176,17 @@ if (iUTF2) { if (iUTF2 == 0xC2 && ichar > 0x7F && ichar < 0xC0) { iUTF2 = 0; - ul[nl - 1] = ichar; + ul[nl - 1] = (char)ichar; } else if (iUTF2 == 0xC3 && ichar > 0x7F && ichar < 0xC0) { iUTF2 = 0; - ul[nl - 1] = ichar + 64; + ul[nl - 1] = (char)(ichar + 64); } else if (iUTF2 > 0xC3 && iUTF2 < 0xE0 && ichar > 0x7F && ichar < 0xC0) { iUTF2 = 0; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else { iUTF2 = 0; - ul[nl] = ichar; + ul[nl] = (char)ichar; ul[nl + 1] = '\0'; debug((char *) "%s| %s: WARNING: Invalid UTF-8 sequence for Unicode %s\n", LogTime(), PROGRAM, ul); xfree(ul); @@ -193,27 +195,27 @@ } else if (iUTF3) { if (iUTF3 == 0xE0 && ichar > 0x9F && ichar < 0xC0) { iUTF3 = 1; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (iUTF3 > 0xE0 && iUTF3 < 0xED && ichar > 0x7F && ichar < 0xC0) { iUTF3 = 2; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (iUTF3 == 0xED && ichar > 0x7F && ichar < 0xA0) { iUTF3 = 3; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (iUTF3 > 0xED && iUTF3 < 0xF0 && ichar > 0x7F && ichar < 0xC0) { iUTF3 = 4; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (iUTF3 > 0 && iUTF3 < 5 && ichar > 0x7F && ichar < 0xC0) { iUTF3 = 0; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else { iUTF3 = 0; - ul[nl] = ichar; + ul[nl] = (char)ichar; ul[nl + 1] = '\0'; debug((char *) "%s| %s: WARNING: Invalid UTF-8 sequence for Unicode %s\n", LogTime(), PROGRAM, ul); xfree(ul); @@ -222,26 +224,26 @@ } else if (iUTF4) { if (iUTF4 == 0xF0 && ichar > 0x8F && ichar < 0xC0) { iUTF4 = 1; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (iUTF4 > 0xF0 && iUTF3 < 0xF4 && ichar > 0x7F && ichar < 0xC0) { iUTF4 = 2; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (iUTF4 == 0xF4 && ichar > 0x7F && ichar < 0x90) { iUTF4 = 3; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (iUTF4 > 0 && iUTF4 < 5 && ichar > 0x7F && ichar < 0xC0) { if (iUTF4 == 4) iUTF4 = 0; else iUTF4 = 4; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else { iUTF4 = 0; - ul[nl] = ichar; + ul[nl] = (char)ichar; ul[nl + 1] = '\0'; debug((char *) "%s| %s: WARNING: Invalid UTF-8 sequence for Unicode %s\n", LogTime(), PROGRAM, ul); xfree(ul); @@ -249,25 +251,25 @@ } } else if (ichar < 0x80) { /* UTF1 */ - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (ichar > 0xC1 && ichar < 0xE0) { /* UTF2 (Latin) */ iUTF2 = ichar; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (ichar > 0xDF && ichar < 0xF0) { /* UTF3 */ iUTF3 = ichar; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else if (ichar > 0xEF && ichar < 0xF5) { /* UTF4 */ iUTF4 = ichar; - ul[nl] = ichar; + ul[nl] = (char)ichar; ++nl; } else { - ul[nl] = ichar; + ul[nl] = (char)ichar; ul[nl + 1] = '\0'; debug((char *) "%s| %s: WARNING: Invalid UTF-8 sequence for Unicode %s\n", LogTime(), PROGRAM, ul); xfree(ul); diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support.h squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support.h --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support.h 2013-10-04 00:32:47.000000000 +1200 @@ -22,7 +22,7 @@ * ----------------------------------------------------------------------------- */ -#define KERBEROS_LDAP_GROUP_VERSION "1.3.0sq" +#define KERBEROS_LDAP_GROUP_VERSION "1.3.1sq" #if HAVE_STRING_H #include @@ -156,13 +156,13 @@ int create_ls(struct main_args *margs); #ifdef HAVE_KRB5 -int krb5_create_cache(struct main_args *margs, char *domain); +int krb5_create_cache(char *domain); void krb5_cleanup(void); #endif -int get_ldap_hostname_list(struct main_args *margs, struct hstruct **hlist, int nhosts, char *domain); -int get_hostname_list(struct main_args *margs, struct hstruct **hlist, int nhosts, char *name); -int free_hostname_list(struct hstruct **hlist, int nhosts); +size_t get_ldap_hostname_list(struct main_args *margs, struct hstruct **hlist, size_t nhosts, char *domain); +size_t get_hostname_list(struct hstruct **hlist, size_t nhosts, char *name); +size_t free_hostname_list(struct hstruct **hlist, size_t nhosts); #if defined(HAVE_SASL_H) || defined(HAVE_SASL_SASL_H) || defined(HAVE_SASL_DARWIN) int tool_sasl_bind(LDAP * ld, char *binddn, char *ssl); diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_krb5.cc squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_krb5.cc --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_krb5.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_krb5.cc 2013-10-04 00:32:47.000000000 +1200 @@ -33,7 +33,9 @@ krb5_context context; char *mem_cache_env; krb5_ccache cc; -} kparam; +}; + +static struct kstruct kparam; #define KT_PATH_MAX 256 @@ -50,23 +52,20 @@ * create Kerberos memory cache */ int -krb5_create_cache(struct main_args *margs, char *domain) +krb5_create_cache(char *domain) { krb5_keytab keytab = 0; krb5_keytab_entry entry; krb5_kt_cursor cursor; krb5_creds *creds = NULL; - krb5_creds *tgt_creds = NULL; krb5_principal *principal_list = NULL; krb5_principal principal = NULL; char *service; char *keytab_name = NULL, *principal_name = NULL, *mem_cache = NULL; char buf[KT_PATH_MAX], *p; - int nprinc = 0; - int i; + size_t j,nprinc = 0; int retval = 0; - int found = 0; krb5_error_code code = 0; kparam.context = NULL; @@ -112,6 +111,7 @@ nprinc = 0; while ((code = krb5_kt_next_entry(kparam.context, keytab, &entry, &cursor)) == 0) { + int found = 0; principal_list = (krb5_principal *) xrealloc(principal_list, sizeof(krb5_principal) * (nprinc + 1)); krb5_copy_principal(kparam.context, entry.principal, &principal_list[nprinc++]); @@ -182,12 +182,14 @@ * if no principal name found in keytab for domain use the prinipal name which can get a TGT */ if (!principal_name) { + size_t i; debug((char *) "%s| %s: DEBUG: Did not find a principal in keytab for domain %s.\n", LogTime(), PROGRAM, domain); debug((char *) "%s| %s: DEBUG: Try to get principal of trusted domain.\n", LogTime(), PROGRAM); - creds = (krb5_creds *) xmalloc(sizeof(*creds)); - memset(creds, 0, sizeof(*creds)); for (i = 0; i < nprinc; ++i) { + krb5_creds *tgt_creds = NULL; + creds = (krb5_creds *) xmalloc(sizeof(*creds)); + memset(creds, 0, sizeof(*creds)); /* * get credentials */ @@ -205,8 +207,7 @@ snprintf(service, strlen("krbtgt") + 2 * strlen(domain) + 3, "krbtgt/%s@%s", domain, domain); creds->client = principal_list[i]; code = krb5_parse_name(kparam.context, service, &creds->server); - if (service) - xfree(service); + xfree(service); code = krb5_get_in_tkt_with_keytab(kparam.context, 0, NULL, NULL, NULL, keytab, NULL, creds, 0); #endif if (code) { @@ -233,8 +234,7 @@ snprintf(service, strlen("krbtgt") + strlen(domain) + strlen(krb5_princ_realm(kparam.context, principal_list[i])->data) + 3, "krbtgt/%s@%s", domain, krb5_princ_realm(kparam.context, principal_list[i])->data); #endif code = krb5_parse_name(kparam.context, service, &creds->server); - if (service) - xfree(service); + xfree(service); if (code) { error((char *) "%s| %s: ERROR: Error while initialising TGT credentials : %s\n", LogTime(), PROGRAM, error_message(code)); goto loop_end; @@ -245,19 +245,22 @@ goto loop_end; } else { debug((char *) "%s| %s: DEBUG: Found trusted principal name: %s\n", LogTime(), PROGRAM, principal_name); - found = 1; break; } loop_end: - if (principal_name) - xfree(principal_name); - principal_name = NULL; + safe_free(principal_name); + if (tgt_creds) { + krb5_free_creds(kparam.context, tgt_creds); + tgt_creds = NULL; + } + if (creds) + krb5_free_creds(kparam.context, creds); + creds = NULL; + } - if (tgt_creds) - krb5_free_creds(kparam.context, tgt_creds); - tgt_creds = NULL; + safe_free(principal_name); if (creds) krb5_free_creds(kparam.context, creds); creds = NULL; @@ -287,8 +290,7 @@ snprintf(service, strlen("krbtgt") + 2 * strlen(domain) + 3, "krbtgt/%s@%s", domain, domain); creds->client = principal; code = krb5_parse_name(kparam.context, service, &creds->server); - if (service) - xfree(service); + xfree(service); code = krb5_get_in_tkt_with_keytab(kparam.context, 0, NULL, NULL, NULL, keytab, NULL, creds, 0); #endif if (code) { @@ -316,20 +318,16 @@ cleanup: if (keytab) krb5_kt_close(kparam.context, keytab); - if (keytab_name) - xfree(keytab_name); - if (principal_name) - xfree(principal_name); - if (mem_cache) - xfree(mem_cache); + xfree(keytab_name); + xfree(principal_name); + xfree(mem_cache); if (principal) krb5_free_principal(kparam.context, principal); - for (i = 0; i < nprinc; ++i) { - if (principal_list[i]) - krb5_free_principal(kparam.context, principal_list[i]); + for (j = 0; j < nprinc; ++j) { + if (principal_list[j]) + krb5_free_principal(kparam.context, principal_list[j]); } - if (principal_list) - xfree(principal_list); + xfree(principal_list); if (creds) krb5_free_creds(kparam.context, creds); diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_ldap.cc squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_ldap.cc --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_ldap.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_ldap.cc 2013-10-04 00:32:47.000000000 +1200 @@ -35,7 +35,7 @@ char *convert_domain_to_bind_path(char *domain); char *escape_filter(char *filter); int check_AD(struct main_args *margs, LDAP * ld); -int ldap_set_defaults(struct main_args *margs, LDAP * ld); +int ldap_set_defaults(LDAP * ld); int ldap_set_ssl_defaults(struct main_args *margs); LDAP *tool_ldap_open(struct main_args *margs, char *host, int port, char *ssl); @@ -51,7 +51,7 @@ #define FILTER_AD "(samaccountname=%s)" #define ATTRIBUTE_AD "memberof" -int get_attributes(struct main_args *margs, LDAP * ld, LDAPMessage * res, const char *attribute /* IN */ , char ***out_val /* OUT (caller frees) */ ); +size_t get_attributes(LDAP * ld, LDAPMessage * res, const char *attribute /* IN */ , char ***out_val /* OUT (caller frees) */ ); int search_group_tree(struct main_args *margs, LDAP * ld, char *bindp, char *ldap_group, char *group, int depth); #if defined(HAVE_SUN_LDAP_SDK) || defined(HAVE_MOZILLA_LDAP_SDK) @@ -210,7 +210,7 @@ convert_domain_to_bind_path(char *domain) { char *dp, *bindp = NULL, *bp = NULL; - int i = 0; + size_t i = 0; if (!domain) return NULL; @@ -243,8 +243,8 @@ char * escape_filter(char *filter) { - int i; char *ldap_filter_esc, *ldf; + size_t i; i = 0; for (ldap_filter_esc = filter; *ldap_filter_esc; ++ldap_filter_esc) { @@ -278,7 +278,7 @@ *ldf = '\0'; return ldap_filter_esc; -}; +} int check_AD(struct main_args *margs, LDAP * ld) @@ -286,8 +286,8 @@ LDAPMessage *res; char **attr_value = NULL; struct timeval searchtime; - int max_attr = 0; - int j, rc = 0; + size_t max_attr = 0; + int rc = 0; #define FILTER_SCHEMA "(objectclass=*)" #define ATTRIBUTE_SCHEMA "schemaNamingContext" @@ -301,7 +301,7 @@ NULL, NULL, &searchtime, 0, &res); if (rc == LDAP_SUCCESS) - max_attr = get_attributes(margs, ld, res, ATTRIBUTE_SCHEMA, &attr_value); + max_attr = get_attributes(ld, res, ATTRIBUTE_SCHEMA, &attr_value); if (max_attr == 1) { ldap_msgfree(res); @@ -318,11 +318,11 @@ * Cleanup */ if (attr_value) { + size_t j; for (j = 0; j < max_attr; ++j) { xfree(attr_value[j]); } - xfree(attr_value); - attr_value = NULL; + safe_free(attr_value); } ldap_msgfree(res); return rc; @@ -332,11 +332,10 @@ { LDAPMessage *res = NULL; char **attr_value = NULL; - int max_attr = 0; + size_t max_attr = 0; char *filter = NULL; char *search_exp = NULL; - int j, rc = 0, retval = 0; - char *av = NULL, *avp = NULL; + int rc = 0, retval = 0; int ldepth; char *ldap_filter_esc = NULL; struct timeval searchtime; @@ -378,20 +377,22 @@ debug((char *) "%s| %s: DEBUG: Found %d ldap entr%s\n", LogTime(), PROGRAM, ldap_count_entries(ld, res), ldap_count_entries(ld, res) > 1 || ldap_count_entries(ld, res) == 0 ? "ies" : "y"); if (margs->AD) - max_attr = get_attributes(margs, ld, res, ATTRIBUTE_AD, &attr_value); + max_attr = get_attributes(ld, res, ATTRIBUTE_AD, &attr_value); else - max_attr = get_attributes(margs, ld, res, ATTRIBUTE, &attr_value); + max_attr = get_attributes(ld, res, ATTRIBUTE, &attr_value); /* * Compare group names */ retval = 0; ldepth = depth + 1; - for (j = 0; j < max_attr; ++j) { + for (size_t j = 0; j < max_attr; ++j) { + char *av = NULL; /* Compare first CN= value assuming it is the same as the group name itself */ av = attr_value[j]; if (!strncasecmp("CN=", av, 3)) { + char *avp = NULL; av += 3; if ((avp = strchr(av, ','))) { *avp = '\0'; @@ -399,17 +400,17 @@ } if (debug_enabled) { int n; - debug((char *) "%s| %s: DEBUG: Entry %d \"%s\" in hex UTF-8 is ", LogTime(), PROGRAM, j + 1, av); + debug((char *) "%s| %s: DEBUG: Entry %" PRIuSIZE " \"%s\" in hex UTF-8 is ", LogTime(), PROGRAM, j + 1, av); for (n = 0; av[n] != '\0'; ++n) fprintf(stderr, "%02x", (unsigned char) av[n]); fprintf(stderr, "\n"); } if (!strcasecmp(group, av)) { retval = 1; - debug((char *) "%s| %s: DEBUG: Entry %d \"%s\" matches group name \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); + debug((char *) "%s| %s: DEBUG: Entry %" PRIuSIZE " \"%s\" matches group name \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); break; } else - debug((char *) "%s| %s: DEBUG: Entry %d \"%s\" does not match group name \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); + debug((char *) "%s| %s: DEBUG: Entry %" PRIuSIZE " \"%s\" does not match group name \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); /* * Do recursive group search */ @@ -418,13 +419,14 @@ if (search_group_tree(margs, ld, bindp, av, group, ldepth)) { retval = 1; if (!strncasecmp("CN=", av, 3)) { + char *avp = NULL; av += 3; if ((avp = strchr(av, ','))) { *avp = '\0'; } } if (debug_enabled) - debug((char *) "%s| %s: DEBUG: Entry %d \"%s\" is member of group named \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); + debug((char *) "%s| %s: DEBUG: Entry %" PRIuSIZE " \"%s\" is member of group named \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); else break; @@ -435,11 +437,10 @@ * Cleanup */ if (attr_value) { - for (j = 0; j < max_attr; ++j) { + for (size_t j = 0; j < max_attr; ++j) { xfree(attr_value[j]); } - xfree(attr_value); - attr_value = NULL; + safe_free(attr_value); } ldap_msgfree(res); @@ -447,7 +448,7 @@ } int -ldap_set_defaults(struct main_args *margs, LDAP * ld) +ldap_set_defaults(LDAP * ld) { int val, rc = 0; #ifdef LDAP_OPT_NETWORK_TIMEOUT @@ -484,14 +485,14 @@ #endif #ifdef HAVE_OPENLDAP int val; - char *ssl_cacertfile = NULL; - int free_path; #elif defined(HAVE_LDAPSSL_CLIENT_INIT) char *ssl_certdbpath = NULL; #endif #ifdef HAVE_OPENLDAP if (!margs->rc_allow) { + char *ssl_cacertfile = NULL; + int free_path; debug((char *) "%s| %s: DEBUG: Enable server certificate check for ldap server.\n", LogTime(), PROGRAM); val = LDAP_OPT_X_TLS_DEMAND; rc = ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &val); @@ -509,7 +510,6 @@ rc = ldap_set_option(NULL, LDAP_OPT_X_TLS_CACERTFILE, ssl_cacertfile); if (ssl_cacertfile && free_path) { xfree(ssl_cacertfile); - ssl_cacertfile = NULL; } if (rc != LDAP_OPT_SUCCESS) { error((char *) "%s| %s: ERROR: Error while setting LDAP_OPT_X_TLS_CACERTFILE for ldap server: %s\n", LogTime(), PROGRAM, ldap_err2string(rc)); @@ -543,10 +543,7 @@ rc = ldapssl_advclientauth_init(ssl_certdbpath, NULL, 0, NULL, NULL, 0, NULL, 0); debug((char *) "%s| %s: DEBUG: Disable server certificate check for ldap server.\n", LogTime(), PROGRAM); } - if (ssl_certdbpath) { - xfree(ssl_certdbpath); - ssl_certdbpath = NULL; - } + xfree(ssl_certdbpath); if (rc != LDAP_SUCCESS) { error((char *) "%s| %s: ERROR: Error while setting SSL for ldap server: %s\n", LogTime(), PROGRAM, ldapssl_err2string(rc)); return rc; @@ -557,13 +554,13 @@ return LDAP_SUCCESS; } -int -get_attributes(struct main_args *margs, LDAP * ld, LDAPMessage * res, const char *attribute, char ***ret_value) +size_t +get_attributes(LDAP * ld, LDAPMessage * res, const char *attribute, char ***ret_value) { LDAPMessage *msg; char **attr_value = NULL; - int max_attr = 0; + size_t max_attr = 0; attr_value = *ret_value; /* @@ -588,15 +585,15 @@ if ((values = ldap_get_values_len(ld, msg, attr)) != NULL) { for (il = 0; values[il] != NULL; ++il) { - attr_value = (char **) xrealloc(attr_value, (il + 1) * sizeof(char *)); + attr_value = (char **) xrealloc(attr_value, (max_attr + 1) * sizeof(char *)); if (!attr_value) break; - attr_value[il] = (char *) xmalloc(values[il]->bv_len + 1); - memcpy(attr_value[il], values[il]->bv_val, values[il]->bv_len); - attr_value[il][values[il]->bv_len] = 0; + attr_value[max_attr] = (char *) xmalloc(values[il]->bv_len + 1); + memcpy(attr_value[max_attr], values[il]->bv_val, values[il]->bv_len); + attr_value[max_attr][values[il]->bv_len] = 0; + max_attr++; } - max_attr = il; } ber_bvecfree(values); } @@ -615,7 +612,7 @@ } } - debug((char *) "%s| %s: DEBUG: %d ldap entr%s found with attribute : %s\n", LogTime(), PROGRAM, max_attr, max_attr > 1 || max_attr == 0 ? "ies" : "y", attribute); + debug((char *) "%s| %s: DEBUG: %" PRIuSIZE " ldap entr%s found with attribute : %s\n", LogTime(), PROGRAM, max_attr, max_attr > 1 || max_attr == 0 ? "ies" : "y", attribute); *ret_value = attr_value; return max_attr; @@ -661,13 +658,13 @@ if (rc != LDAP_SUCCESS) { error((char *) "%s| %s: ERROR: Error while parsing url: %s\n", LogTime(), PROGRAM, ldap_err2string(rc)); xfree(ldapuri); - xfree(url); + ldap_free_urldesc(url); return NULL; } #else #error "No URL parsing function" #endif - safe_free(url); + ldap_free_urldesc(url); rc = ldap_initialize(&ld, ldapuri); xfree(ldapuri); if (rc != LDAP_SUCCESS) { @@ -679,7 +676,7 @@ #else ld = ldap_init(host, port); #endif - rc = ldap_set_defaults(margs, ld); + rc = ldap_set_defaults(ld); if (rc != LDAP_SUCCESS) { error((char *) "%s| %s: ERROR: Error while setting default options for ldap server: %s\n", LogTime(), PROGRAM, ldap_err2string(rc)); ldap_unbind(ld); @@ -726,13 +723,13 @@ if (rc != LDAP_SUCCESS) { error((char *) "%s| %s: ERROR: Error while parsing url: %s\n", LogTime(), PROGRAM, ldap_err2string(rc)); xfree(ldapuri); - xfree(url); + ldap_free_urldesc(url); return NULL; } #else #error "No URL parsing function" #endif - safe_free(url); + ldap_free_urldesc(url); rc = ldap_initialize(&ld, ldapuri); xfree(ldapuri); if (rc != LDAP_SUCCESS) { @@ -741,7 +738,7 @@ ld = NULL; return NULL; } - rc = ldap_set_defaults(margs, ld); + rc = ldap_set_defaults(ld); if (rc != LDAP_SUCCESS) { error((char *) "%s| %s: ERROR: Error while setting default options for ldap server: %s\n", LogTime(), PROGRAM, ldap_err2string(rc)); ldap_unbind(ld); @@ -757,7 +754,7 @@ ld = NULL; return NULL; } - rc = ldap_set_defaults(margs, ld); + rc = ldap_set_defaults(ld); if (rc != LDAP_SUCCESS) { error((char *) "%s| %s: ERROR: Error while setting default options for ldap server: %s\n", LogTime(), PROGRAM, ldap_err2string(rc)); ldap_unbind(ld); @@ -787,18 +784,12 @@ char *filter = NULL; char *search_exp; struct timeval searchtime; - int i, j, rc = 0, kc = 1; + int rc = 0, kc = 1; int retval; char **attr_value = NULL; - char *av = NULL, *avp = NULL; - int max_attr = 0; + size_t max_attr = 0; struct hstruct *hlist = NULL; - int nhosts = 0; - char *hostname; - char *host; - int port; - char *ssl = NULL; - char *p; + size_t nhosts = 0; char *ldap_filter_esc = NULL; searchtime.tv_sec = SEARCH_TIMEOUT; @@ -810,7 +801,7 @@ debug((char *) "%s| %s: DEBUG: Setup Kerberos credential cache\n", LogTime(), PROGRAM); #ifdef HAVE_KRB5 - kc = krb5_create_cache(margs, domain); + kc = krb5_create_cache(domain); if (kc) { error((char *) "%s| %s: ERROR: Error during setup of Kerberos credential cache\n", LogTime(), PROGRAM); } @@ -847,8 +838,8 @@ * Loop over list of ldap servers of users domain */ nhosts = get_ldap_hostname_list(margs, &hlist, 0, domain); - for (i = 0; i < nhosts; ++i) { - port = 389; + for (size_t i = 0; i < nhosts; ++i) { + int port = 389; if (hlist[i].port != -1) port = hlist[i].port; debug((char *) "%s| %s: DEBUG: Setting up connection to ldap server %s:%d\n", LogTime(), PROGRAM, hlist[i].host, port); @@ -893,6 +884,11 @@ bindp = convert_domain_to_bind_path(domain); } if ((!domain || !ld) && margs->lurl && strstr(margs->lurl, "://")) { + char *hostname; + char *host; + int port; + char *ssl = NULL; + char *p; /* * If username does not contain a domain and a url was given then try it */ @@ -912,9 +908,9 @@ ++p; port = atoi(p); } - nhosts = get_hostname_list(margs, &hlist, 0, host); - safe_free(host); - for (i = 0; i < nhosts; ++i) { + nhosts = get_hostname_list(&hlist, 0, host); + xfree(host); + for (size_t i = 0; i < nhosts; ++i) { ld = tool_ldap_open(margs, hlist[i].host, port, ssl); if (!ld) @@ -997,40 +993,41 @@ if (ldap_count_entries(ld, res) != 0) { if (margs->AD) - max_attr = get_attributes(margs, ld, res, ATTRIBUTE_AD, &attr_value); + max_attr = get_attributes(ld, res, ATTRIBUTE_AD, &attr_value); else { - max_attr = get_attributes(margs, ld, res, ATTRIBUTE, &attr_value); + max_attr = get_attributes(ld, res, ATTRIBUTE, &attr_value); } /* * Compare group names */ retval = 0; - for (j = 0; j < max_attr; ++j) { + for (size_t k = 0; k < max_attr; ++k) { + char *av = NULL; /* Compare first CN= value assuming it is the same as the group name itself */ - av = attr_value[j]; + av = attr_value[k]; if (!strncasecmp("CN=", av, 3)) { + char *avp = NULL; av += 3; if ((avp = strchr(av, ','))) { *avp = '\0'; } } if (debug_enabled) { - int n; - debug((char *) "%s| %s: DEBUG: Entry %d \"%s\" in hex UTF-8 is ", LogTime(), PROGRAM, j + 1, av); - for (n = 0; av[n] != '\0'; ++n) + debug((char *) "%s| %s: DEBUG: Entry %" PRIuSIZE " \"%s\" in hex UTF-8 is ", LogTime(), PROGRAM, k + 1, av); + for (unsigned int n = 0; av[n] != '\0'; ++n) fprintf(stderr, "%02x", (unsigned char) av[n]); fprintf(stderr, "\n"); } if (!strcasecmp(group, av)) { retval = 1; if (debug_enabled) - debug((char *) "%s| %s: DEBUG: Entry %d \"%s\" matches group name \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); + debug((char *) "%s| %s: DEBUG: Entry %" PRIuSIZE " \"%s\" matches group name \"%s\"\n", LogTime(), PROGRAM, k + 1, av, group); else break; } else - debug((char *) "%s| %s: DEBUG: Entry %d \"%s\" does not match group name \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); + debug((char *) "%s| %s: DEBUG: Entry %" PRIuSIZE " \"%s\" does not match group name \"%s\"\n", LogTime(), PROGRAM, k + 1, av, group); } /* * Do recursive group search for AD only since posixgroups can not contain other groups @@ -1039,19 +1036,21 @@ if (debug_enabled && max_attr > 0) { debug((char *) "%s| %s: DEBUG: Perform recursive group search\n", LogTime(), PROGRAM); } - for (j = 0; j < max_attr; ++j) { + for (size_t j = 0; j < max_attr; ++j) { + char *av = NULL; av = attr_value[j]; if (search_group_tree(margs, ld, bindp, av, group, 1)) { retval = 1; if (!strncasecmp("CN=", av, 3)) { + char *avp = NULL; av += 3; if ((avp = strchr(av, ','))) { *avp = '\0'; } } if (debug_enabled) - debug((char *) "%s| %s: DEBUG: Entry %d group \"%s\" is (in)direct member of group \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); + debug((char *) "%s| %s: DEBUG: Entry %" PRIuSIZE " group \"%s\" is (in)direct member of group \"%s\"\n", LogTime(), PROGRAM, j + 1, av, group); else break; } @@ -1061,11 +1060,10 @@ * Cleanup */ if (attr_value) { - for (j = 0; j < max_attr; ++j) { + for (size_t j = 0; j < max_attr; ++j) { xfree(attr_value[j]); } - xfree(attr_value); - attr_value = NULL; + safe_free(attr_value); } ldap_msgfree(res); } else if (ldap_count_entries(ld, res) == 0 && margs->AD) { @@ -1101,11 +1099,11 @@ debug((char *) "%s| %s: DEBUG: Found %d ldap entr%s\n", LogTime(), PROGRAM, ldap_count_entries(ld, res), ldap_count_entries(ld, res) > 1 || ldap_count_entries(ld, res) == 0 ? "ies" : "y"); - max_attr = get_attributes(margs, ld, res, ATTRIBUTE_GID, &attr_value); + max_attr = get_attributes(ld, res, ATTRIBUTE_GID, &attr_value); if (max_attr == 1) { char **attr_value_2 = NULL; - int max_attr_2 = 0; + size_t max_attr_2 = 0; ldap_msgfree(res); filter = (char *) FILTER_GID; @@ -1123,15 +1121,14 @@ NULL, NULL, &searchtime, 0, &res); xfree(search_exp); - max_attr_2 = get_attributes(margs, ld, res, ATTRIBUTE, &attr_value_2); + max_attr_2 = get_attributes(ld, res, ATTRIBUTE, &attr_value_2); /* * Compare group names */ retval = 0; if (max_attr_2 == 1) { - /* Compare first CN= value assuming it is the same as the group name itself */ - av = attr_value_2[0]; + char *av = attr_value_2[0]; if (!strcasecmp(group, av)) { retval = 1; debug((char *) "%s| %s: DEBUG: \"%s\" matches group name \"%s\"\n", LogTime(), PROGRAM, av, group); @@ -1143,11 +1140,11 @@ * Cleanup */ if (attr_value_2) { + size_t j; for (j = 0; j < max_attr_2; ++j) { xfree(attr_value_2[j]); } - xfree(attr_value_2); - attr_value_2 = NULL; + safe_free(attr_value_2); } ldap_msgfree(res); @@ -1161,11 +1158,10 @@ * Cleanup */ if (attr_value) { - for (j = 0; j < max_attr; ++j) { + for (size_t j = 0; j < max_attr; ++j) { xfree(attr_value[j]); } - xfree(attr_value); - attr_value = NULL; + safe_free(attr_value); } } rc = ldap_unbind(ld); diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_log.cc squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_log.cc --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_log.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_log.cc 2013-10-04 00:32:47.000000000 +1200 @@ -34,13 +34,13 @@ const char * LogTime() { - struct tm *tm; - struct timeval now; static time_t last_t = 0; + struct timeval now; static char buf[128]; gettimeofday(&now, NULL); if (now.tv_sec != last_t) { + struct tm *tm; time_t tmp = now.tv_sec; tm = localtime(&tmp); strftime(buf, 127, "%Y/%m/%d %H:%M:%S", tm); diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_lserver.cc squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_lserver.cc --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_lserver.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_lserver.cc 2013-10-04 00:32:47.000000000 +1200 @@ -29,6 +29,7 @@ #include "support.h" struct lsstruct *init_ls(void); +void free_ls(struct lsstruct *lssp); struct lsstruct * init_ls(void) { diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_netbios.cc squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_netbios.cc --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_netbios.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_netbios.cc 2013-10-04 00:32:47.000000000 +1200 @@ -30,6 +30,7 @@ #include "support.h" struct ndstruct *init_nd(void); +void free_nd(struct ndstruct *ndsp); struct ndstruct * init_nd(void) { diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_resolv.cc squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_resolv.cc --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_resolv.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_resolv.cc 2013-10-04 00:32:47.000000000 +1200 @@ -95,10 +95,10 @@ sort(struct hstruct *array, int nitems, int (*cmp) (struct hstruct *, struct hstruct *), int begin, int end) { if (end > begin) { - int pivot = begin; int l = begin + 1; int r = end; while (l < r) { + int pivot = begin; if (cmp(&array[l], &array[pivot]) <= 0) { l += 1; } else { @@ -116,7 +116,7 @@ static void msort(struct hstruct *array, size_t nitems, int (*cmp) (struct hstruct *, struct hstruct *)) { - sort(array, nitems, cmp, 0, nitems - 1); + sort(array, (int)nitems, cmp, 0, (int)(nitems - 1)); } static int @@ -145,33 +145,25 @@ return 0; } -int -free_hostname_list(struct hstruct **hlist, int nhosts) +size_t +free_hostname_list(struct hstruct **hlist, size_t nhosts) { struct hstruct *hp = NULL; - int i; + size_t i; hp = *hlist; for (i = 0; i < nhosts; ++i) { - if (hp[i].host) - xfree(hp[i].host); - hp[i].host = NULL; + xfree(hp[i].host); } - if (hp) - xfree(hp); - hp = NULL; + safe_free(hp); *hlist = hp; return 0; } -int -get_hostname_list(struct main_args *margs, struct hstruct **hlist, int nhosts, char *name) +size_t +get_hostname_list(struct hstruct **hlist, size_t nhosts, char *name) { - /* - * char host[sysconf(_SC_HOST_NAME_MAX)]; - */ - char host[1024]; struct addrinfo *hres = NULL, *hres_list; int rc, count; struct hstruct *hp = NULL; @@ -194,6 +186,10 @@ hres_list = hres; count = 0; while (hres_list) { + /* + * char host[sysconf(_SC_HOST_NAME_MAX)]; + */ + char host[1024]; rc = getnameinfo(hres_list->ai_addr, hres_list->ai_addrlen, host, sizeof(host), NULL, 0, 0); if (rc != 0) { error((char *) "%s| %s: ERROR: Error while resolving ip address with getnameinfo: %s\n", LogTime(), PROGRAM, gai_strerror(rc)); @@ -219,24 +215,21 @@ return (nhosts); } -int -get_ldap_hostname_list(struct main_args *margs, struct hstruct **hlist, int nh, char *domain) +size_t +get_ldap_hostname_list(struct main_args *margs, struct hstruct **hlist, size_t nh, char *domain) { /* * char name[sysconf(_SC_HOST_NAME_MAX)]; */ char name[1024]; - char host[NS_MAXDNAME]; char *service = NULL; struct hstruct *hp = NULL; struct lsstruct *ls = NULL; - int nhosts = 0; + size_t nhosts = 0; int size; - int type, rdlength; - int priority, weight, port; int len, olen; - int i, j, k; + size_t i, j, k; u_char *buffer = NULL; u_char *p; @@ -305,7 +298,7 @@ } if (len > PACKETSZ_MULT * NS_PACKETSZ) { olen = len; - buffer = (u_char *) xrealloc(buffer, len); + buffer = (u_char *) xrealloc(buffer, (size_t)len); if ((len = res_search(service, ns_c_in, ns_t_srv, (u_char *) buffer, len)) < 0) { error((char *) "%s| %s: ERROR: Error while resolving service record %s with res_search\n", LogTime(), PROGRAM, service); nsError(h_errno, service); @@ -322,7 +315,7 @@ error((char *) "%s| %s: ERROR: Message to small: %d < header size\n", LogTime(), PROGRAM, len); goto finalise; } - if ((size = dn_expand(buffer, buffer + len, p, name, sysconf(_SC_HOST_NAME_MAX))) < 0) { + if ((size = dn_expand(buffer, buffer + len, p, name, sizeof(name))) < 0) { error((char *) "%s| %s: ERROR: Error while expanding query name with dn_expand: %s\n", LogTime(), PROGRAM, strerror(errno)); goto finalise; } @@ -333,7 +326,8 @@ goto finalise; } while (p < buffer + len) { - if ((size = dn_expand(buffer, buffer + len, p, name, sysconf(_SC_HOST_NAME_MAX))) < 0) { + int type, rdlength; + if ((size = dn_expand(buffer, buffer + len, p, name, sizeof(name))) < 0) { error((char *) "%s| %s: ERROR: Error while expanding answer name with dn_expand: %s\n", LogTime(), PROGRAM, strerror(errno)); goto finalise; } @@ -351,6 +345,8 @@ NS_GET16(rdlength, p); /* RR data length (16bit) */ if (type == ns_t_srv) { /* SRV record */ + int priority, weight, port; + char host[NS_MAXDNAME]; if (p > buffer + len) { error((char *) "%s| %s: ERROR: Message to small: %d < header + query name,type,class + answer name + RR type,class,ttl + RR data length\n", LogTime(), PROGRAM, len); goto finalise; @@ -400,7 +396,7 @@ } finalise: - nhosts = get_hostname_list(margs, &hp, nh, domain); + nhosts = get_hostname_list(&hp, nh, domain); debug("%s| %s: DEBUG: Adding %s to list\n", LogTime(), PROGRAM, domain); @@ -435,7 +431,7 @@ } /* Sort by Priority / Weight */ - msort(hp, nhosts, compare_hosts); + msort(hp, (size_t)nhosts, compare_hosts); if (debug_enabled) { debug((char *) "%s| %s: DEBUG: Sorted ldap server names for domain %s:\n", LogTime(), PROGRAM, domain); @@ -443,10 +439,8 @@ debug((char *) "%s| %s: DEBUG: Host: %s Port: %d Priority: %d Weight: %d\n", LogTime(), PROGRAM, hp[i].host, hp[i].port, hp[i].priority, hp[i].weight); } } - if (buffer) - xfree(buffer); - if (service) - xfree(service); + xfree(buffer); + xfree(service); *hlist = hp; return (nhosts); } diff -u -r -N squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_sasl.cc squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_sasl.cc --- squid-3.4.0.1/helpers/external_acl/kerberos_ldap_group/support_sasl.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/kerberos_ldap_group/support_sasl.cc 2013-10-04 00:32:47.000000000 +1200 @@ -196,18 +196,12 @@ { lutilSASLdefaults *defs = (lutilSASLdefaults *) defaults; - if (defs->mech) - xfree(defs->mech); - if (defs->realm) - xfree(defs->realm); - if (defs->authcid) - xfree(defs->authcid); - if (defs->passwd) - xfree(defs->passwd); - if (defs->authzid) - xfree(defs->authzid); - if (defs->resps) - xfree(defs->resps); + xfree(defs->mech); + xfree(defs->realm); + xfree(defs->authcid); + xfree(defs->passwd); + xfree(defs->authzid); + xfree(defs->resps); xfree(defs); } diff -u -r -N squid-3.4.0.1/helpers/external_acl/LDAP_group/ext_ldap_group_acl.cc squid-3.4.0.2/helpers/external_acl/LDAP_group/ext_ldap_group_acl.cc --- squid-3.4.0.1/helpers/external_acl/LDAP_group/ext_ldap_group_acl.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/LDAP_group/ext_ldap_group_acl.cc 2013-10-04 00:32:47.000000000 +1200 @@ -89,10 +89,6 @@ #endif -#if defined(LDAP_OPT_NETWORK_TIMEOUT) -#include -#endif - #define PROGRAM_NAME "ext_ldap_group_acl" #define PROGRAM_VERSION "2.17" diff -u -r -N squid-3.4.0.1/helpers/external_acl/SQL_session/ext_sql_session_acl.8 squid-3.4.0.2/helpers/external_acl/SQL_session/ext_sql_session_acl.8 --- squid-3.4.0.1/helpers/external_acl/SQL_session/ext_sql_session_acl.8 2013-07-29 11:04:54.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/SQL_session/ext_sql_session_acl.8 2013-10-04 00:49:50.000000000 +1200 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "EXT_SQL_SESSION_ACL 1" -.TH EXT_SQL_SESSION_ACL 1 "2013-07-28" "perl v5.10.1" "User Contributed Perl Documentation" +.TH EXT_SQL_SESSION_ACL 1 "2013-10-03" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-3.4.0.1/helpers/external_acl/wbinfo_group/ext_wbinfo_group_acl.8 squid-3.4.0.2/helpers/external_acl/wbinfo_group/ext_wbinfo_group_acl.8 --- squid-3.4.0.1/helpers/external_acl/wbinfo_group/ext_wbinfo_group_acl.8 2013-07-29 11:04:55.000000000 +1200 +++ squid-3.4.0.2/helpers/external_acl/wbinfo_group/ext_wbinfo_group_acl.8 2013-10-04 00:49:50.000000000 +1200 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "EXT_WBINFO_GROUP_ACL.PL.IN 1" -.TH EXT_WBINFO_GROUP_ACL.PL.IN 1 "2013-07-28" "perl v5.10.1" "User Contributed Perl Documentation" +.TH EXT_WBINFO_GROUP_ACL.PL.IN 1 "2013-10-03" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-3.4.0.1/helpers/log_daemon/DB/log_db_daemon.8 squid-3.4.0.2/helpers/log_daemon/DB/log_db_daemon.8 --- squid-3.4.0.1/helpers/log_daemon/DB/log_db_daemon.8 2013-07-29 11:04:55.000000000 +1200 +++ squid-3.4.0.2/helpers/log_daemon/DB/log_db_daemon.8 2013-10-04 00:49:51.000000000 +1200 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "LOG_DB_DAEMON 1" -.TH LOG_DB_DAEMON 1 "2013-07-28" "perl v5.10.1" "User Contributed Perl Documentation" +.TH LOG_DB_DAEMON 1 "2013-10-03" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-3.4.0.1/helpers/negotiate_auth/kerberos/Makefile.am squid-3.4.0.2/helpers/negotiate_auth/kerberos/Makefile.am --- squid-3.4.0.1/helpers/negotiate_auth/kerberos/Makefile.am 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/negotiate_auth/kerberos/Makefile.am 2013-10-04 00:32:47.000000000 +1200 @@ -7,7 +7,7 @@ AM_CPPFLAGS = $(INCLUDES) -I$(srcdir) -negotiate_kerberos_auth_SOURCES = negotiate_kerberos_auth.cc +negotiate_kerberos_auth_SOURCES = negotiate_kerberos_auth.cc negotiate_kerberos_pac.cc negotiate_kerberos.h negotiate_kerberos_auth_LDFLAGS = negotiate_kerberos_auth_LDADD = \ $(top_builddir)/lib/libmiscencoding.la \ diff -u -r -N squid-3.4.0.1/helpers/negotiate_auth/kerberos/Makefile.in squid-3.4.0.2/helpers/negotiate_auth/kerberos/Makefile.in --- squid-3.4.0.1/helpers/negotiate_auth/kerberos/Makefile.in 2013-07-29 10:46:36.000000000 +1200 +++ squid-3.4.0.2/helpers/negotiate_auth/kerberos/Makefile.in 2013-10-04 00:33:15.000000000 +1200 @@ -108,7 +108,8 @@ am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(man8dir)" PROGRAMS = $(libexec_PROGRAMS) am_negotiate_kerberos_auth_OBJECTS = \ - negotiate_kerberos_auth.$(OBJEXT) + negotiate_kerberos_auth.$(OBJEXT) \ + negotiate_kerberos_pac.$(OBJEXT) negotiate_kerberos_auth_OBJECTS = \ $(am_negotiate_kerberos_auth_OBJECTS) @ENABLE_XPROF_STATS_TRUE@am__DEPENDENCIES_1 = $(top_builddir)/lib/profiler/libprofiler.la @@ -145,6 +146,15 @@ CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(negotiate_kerberos_auth_SOURCES) \ $(negotiate_kerberos_auth_test_SOURCES) DIST_SOURCES = $(negotiate_kerberos_auth_SOURCES) \ @@ -442,7 +452,7 @@ EXTRA_DIST = README COPYING required.m4 negotiate_kerberos_auth.8 SUBDIRS = AM_CPPFLAGS = $(INCLUDES) -I$(srcdir) -negotiate_kerberos_auth_SOURCES = negotiate_kerberos_auth.cc +negotiate_kerberos_auth_SOURCES = negotiate_kerberos_auth.cc negotiate_kerberos_pac.cc negotiate_kerberos.h negotiate_kerberos_auth_LDFLAGS = negotiate_kerberos_auth_LDADD = \ $(top_builddir)/lib/libmiscencoding.la \ @@ -560,6 +570,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/negotiate_kerberos_auth.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/negotiate_kerberos_auth_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/negotiate_kerberos_pac.Po@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< diff -u -r -N squid-3.4.0.1/helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.cc squid-3.4.0.2/helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.cc --- squid-3.4.0.1/helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.cc 2013-10-04 00:32:47.000000000 +1200 @@ -36,79 +36,7 @@ #if HAVE_GSSAPI -#if HAVE_STRING_H -#include -#endif -#if HAVE_STDOI_H -#include -#endif -#if HAVE_NETDB_H -#include -#endif -#if HAVE_UNISTD_H -#include -#endif -#if HAVE_TIME_H -#include -#endif - -#include "util.h" -#include "base64.h" - -#if HAVE_GSSAPI_GSSAPI_H -#include -#elif HAVE_GSSAPI_H -#include -#endif - -#if !HAVE_HEIMDAL_KERBEROS -#if HAVE_GSSAPI_GSSAPI_KRB5_H -#include -#endif -#if HAVE_GSSAPI_GSSAPI_GENERIC_H -#include -#endif -#if HAVE_GSSAPI_GSSAPI_EXT_H -#include -#endif -#endif - -#ifndef gss_nt_service_name -#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE -#endif - -#define PROGRAM "negotiate_kerberos_auth" - -#ifndef MAX_AUTHTOKEN_LEN -#define MAX_AUTHTOKEN_LEN 65535 -#endif -#ifndef SQUID_KERB_AUTH_VERSION -#define SQUID_KERB_AUTH_VERSION "3.0.4sq" -#endif - -int check_gss_err(OM_uint32 major_status, OM_uint32 minor_status, - const char *function, int log); -char *gethost_name(void); -static const char *LogTime(void); - -static const unsigned char ntlmProtocol[] = {'N', 'T', 'L', 'M', 'S', 'S', 'P', 0}; - -static const char * -LogTime() -{ - struct tm *tm; - struct timeval now; - static time_t last_t = 0; - static char buf[128]; - - gettimeofday(&now, NULL); - if (now.tv_sec != last_t) { - tm = localtime((time_t *) & now.tv_sec); - strftime(buf, 127, "%Y/%m/%d %H:%M:%S", tm); - last_t = now.tv_sec; - } - return buf; -} +#include "negotiate_kerberos.h" char * gethost_name(void) @@ -155,7 +83,7 @@ int check_gss_err(OM_uint32 major_status, OM_uint32 minor_status, - const char *function, int log) + const char *function, int log, int sout) { if (GSS_ERROR(major_status)) { OM_uint32 maj_stat, min_stat; @@ -198,7 +126,8 @@ gss_release_buffer(&min_stat, &status_string); } while (msg_ctx); debug((char *) "%s| %s: ERROR: %s failed: %s\n", LogTime(), PROGRAM, function, buf); - fprintf(stdout, "BH %s failed: %s\n", function, buf); + if (sout) + fprintf(stdout, "BH %s failed: %s\n", function, buf); if (log) fprintf(stderr, "%s| %s: INFO: User not authenticated\n", LogTime(), PROGRAM); @@ -213,7 +142,20 @@ char buf[MAX_AUTHTOKEN_LEN]; char *c, *p; char *user = NULL; - int length = 0; + char *rfc_user = NULL; +#if HAVE_PAC_SUPPORT + char ad_groups[MAX_PAC_GROUP_SIZE]; + char *ag=NULL; + krb5_context context = NULL; + krb5_error_code ret; + krb5_pac pac; +#if HAVE_HEIMDAL_KERBEROS + gss_buffer_desc data_set = GSS_C_EMPTY_BUFFER; +#else + gss_buffer_desc type_id = GSS_C_EMPTY_BUFFER; +#endif +#endif + long length = 0; static int err = 0; int opt, log = 0, norealm = 0; OM_uint32 ret_flags = 0, spnego_flag = 0; @@ -284,6 +226,7 @@ snprintf((char *) service.value, strlen(service_name) + strlen(host_name) + 2, "%s@%s", service_name, host_name); service.length = strlen((char *) service.value); + xfree(host_name); } while (1) { @@ -312,7 +255,7 @@ err = 0; continue; } - debug((char *) "%s| %s: DEBUG: Got '%s' from squid (length: %d).\n", LogTime(), PROGRAM, buf, length); + debug((char *) "%s| %s: DEBUG: Got '%s' from squid (length: %ld).\n", LogTime(), PROGRAM, buf, length); if (buf[0] == '\0') { debug((char *) "%s| %s: ERROR: Invalid request\n", LogTime(), PROGRAM); @@ -338,23 +281,13 @@ if (kerberosToken) { /* Allocated by parseNegTokenInit, but no matching free function exists.. */ if (!spnego_flag) - xfree((char *) kerberosToken); - kerberosToken = NULL; + xfree(kerberosToken); } if (spnego_flag) { /* Allocated by makeNegTokenTarg, but no matching free function exists.. */ - if (spnegoToken) - xfree((char *) spnegoToken); - spnegoToken = NULL; - } - if (token) { - xfree(token); - token = NULL; - } - if (host_name) { - xfree(host_name); - host_name = NULL; + xfree(spnegoToken); } + xfree(token); fprintf(stdout, "BH quit command\n"); exit(0); } @@ -373,12 +306,12 @@ fprintf(stdout, "BH Invalid negotiate request\n"); continue; } - input_token.length = base64_decode_len(buf+3); + input_token.length = (size_t)base64_decode_len(buf+3); debug((char *) "%s| %s: DEBUG: Decode '%s' (decoded length: %d).\n", LogTime(), PROGRAM, buf + 3, (int) input_token.length); input_token.value = xmalloc(input_token.length); - input_token.length = base64_decode((char *) input_token.value, input_token.length, buf+3); + input_token.length = (size_t)base64_decode((char *) input_token.value, (unsigned int)input_token.length, buf+3); if ((input_token.length >= sizeof ntlmProtocol + 1) && (!memcmp(input_token.value, ntlmProtocol, sizeof ntlmProtocol))) { @@ -399,19 +332,20 @@ } else { server_name = GSS_C_NO_NAME; major_status = GSS_S_COMPLETE; + minor_status = 0; } } else { major_status = gss_import_name(&minor_status, &service, gss_nt_service_name, &server_name); } - if (check_gss_err(major_status, minor_status, "gss_import_name()", log)) + if (check_gss_err(major_status, minor_status, "gss_import_name()", log, 1)) goto cleanup; major_status = gss_acquire_cred(&minor_status, server_name, GSS_C_INDEFINITE, GSS_C_NO_OID_SET, GSS_C_ACCEPT, &server_creds, NULL, NULL); - if (check_gss_err(major_status, minor_status, "gss_acquire_cred()", log)) + if (check_gss_err(major_status, minor_status, "gss_acquire_cred()", log, 1)) goto cleanup; major_status = gss_accept_sec_context(&minor_status, @@ -424,16 +358,16 @@ if (output_token.length) { spnegoToken = (const unsigned char *) output_token.value; spnegoTokenLength = output_token.length; - token = (char *) xmalloc(base64_encode_len(spnegoTokenLength)); + token = (char *) xmalloc((size_t)base64_encode_len((int)spnegoTokenLength)); if (token == NULL) { debug((char *) "%s| %s: ERROR: Not enough memory\n", LogTime(), PROGRAM); fprintf(stdout, "BH Not enough memory\n"); goto cleanup; } - base64_encode_str(token, base64_encode_len(spnegoTokenLength), - (const char *) spnegoToken, spnegoTokenLength); + base64_encode_str(token, base64_encode_len((int)spnegoTokenLength), + (const char *) spnegoToken, (int)spnegoTokenLength); - if (check_gss_err(major_status, minor_status, "gss_accept_sec_context()", log)) + if (check_gss_err(major_status, minor_status, "gss_accept_sec_context()", log, 1)) goto cleanup; if (major_status & GSS_S_CONTINUE_NEEDED) { debug((char *) "%s| %s: INFO: continuation needed\n", LogTime(), PROGRAM); @@ -445,7 +379,7 @@ gss_display_name(&minor_status, client_name, &output_token, NULL); - if (check_gss_err(major_status, minor_status, "gss_display_name()", log)) + if (check_gss_err(major_status, minor_status, "gss_display_name()", log, 1)) goto cleanup; user = (char *) xmalloc(output_token.length + 1); if (user == NULL) { @@ -458,14 +392,49 @@ if (norealm && (p = strchr(user, '@')) != NULL) { *p = '\0'; } + +#if HAVE_PAC_SUPPORT + ret = krb5_init_context(&context); + if (!check_k5_err(context, "krb5_init_context", ret)) { +#if HAVE_HEIMDAL_KERBEROS +#define ADWIN2KPAC 128 + major_status = gsskrb5_extract_authz_data_from_sec_context(&minor_status, + gss_context, ADWIN2KPAC, &data_set); + if (!check_gss_err(major_status, minor_status, + "gsskrb5_extract_authz_data_from_sec_context()", log, 0)) { + ret = krb5_pac_parse(context, data_set.value, data_set.length, &pac); + gss_release_buffer(&minor_status, &data_set); + if (!check_k5_err(context, "krb5_pac_parse", ret)) { + ag = get_ad_groups((char *)&ad_groups, context, pac); + krb5_pac_free(context, pac); + } + krb5_free_context(context); + } +#else + type_id.value = (void *)"mspac"; + type_id.length = strlen((char *)type_id.value); +#define KRB5PACLOGONINFO 1 + major_status = gss_map_name_to_any(&minor_status, client_name, KRB5PACLOGONINFO, &type_id, (gss_any_t *)&pac); + if (!check_gss_err(major_status, minor_status, "gss_map_name_to_any()", log, 0)) { + ag = get_ad_groups((char *)&ad_groups,context, pac); + } + (void)gss_release_any_name_mapping(&minor_status, client_name, &type_id, (gss_any_t *)&pac); + krb5_free_context(context); +#endif + } + if (ag) { + debug((char *) "%s| %s: DEBUG: Groups %s\n", LogTime(), PROGRAM, ag); + } +#endif fprintf(stdout, "AF %s %s\n", token, user); - debug((char *) "%s| %s: DEBUG: AF %s %s\n", LogTime(), PROGRAM, token, rfc1738_escape(user)); + rfc_user = rfc1738_escape(user); + debug((char *) "%s| %s: DEBUG: AF %s %s\n", LogTime(), PROGRAM, token, rfc_user); if (log) fprintf(stderr, "%s| %s: INFO: User %s authenticated\n", LogTime(), PROGRAM, rfc1738_escape(user)); goto cleanup; } else { - if (check_gss_err(major_status, minor_status, "gss_accept_sec_context()", log)) + if (check_gss_err(major_status, minor_status, "gss_accept_sec_context()", log, 1)) goto cleanup; if (major_status & GSS_S_CONTINUE_NEEDED) { debug((char *) "%s| %s: INFO: continuation needed\n", LogTime(), PROGRAM); @@ -477,7 +446,7 @@ gss_display_name(&minor_status, client_name, &output_token, NULL); - if (check_gss_err(major_status, minor_status, "gss_display_name()", log)) + if (check_gss_err(major_status, minor_status, "gss_display_name()", log, 1)) goto cleanup; /* * Return dummy token AA. May need an extra return tag then AF @@ -511,23 +480,14 @@ if (kerberosToken) { /* Allocated by parseNegTokenInit, but no matching free function exists.. */ if (!spnego_flag) - xfree((char *) kerberosToken); - kerberosToken = NULL; + safe_free(kerberosToken); } if (spnego_flag) { /* Allocated by makeNegTokenTarg, but no matching free function exists.. */ - if (spnegoToken) - xfree((char *) spnegoToken); - spnegoToken = NULL; - } - if (token) { - xfree(token); - token = NULL; - } - if (user) { - xfree(user); - user = NULL; + safe_free(spnegoToken); } + safe_free(token); + safe_free(user); continue; } } diff -u -r -N squid-3.4.0.1/helpers/negotiate_auth/kerberos/negotiate_kerberos_auth_test.cc squid-3.4.0.2/helpers/negotiate_auth/kerberos/negotiate_kerberos_auth_test.cc --- squid-3.4.0.1/helpers/negotiate_auth/kerberos/negotiate_kerberos_auth_test.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/negotiate_auth/kerberos/negotiate_kerberos_auth_test.cc 2013-10-04 00:32:47.000000000 +1200 @@ -196,9 +196,9 @@ goto cleanup; if (output_token.length) { - token = (char *) xmalloc(base64_encode_len(output_token.length)); - base64_encode_str(token, base64_encode_len(output_token.length), - (const char *) output_token.value, output_token.length); + token = (char *) xmalloc((size_t)base64_encode_len((int)output_token.length)); + base64_encode_str(token, base64_encode_len((int)output_token.length), + (const char *) output_token.value, (int)output_token.length); } cleanup: gss_delete_sec_context(&minor_status, &gss_context, NULL); diff -u -r -N squid-3.4.0.1/helpers/negotiate_auth/kerberos/negotiate_kerberos.h squid-3.4.0.2/helpers/negotiate_auth/kerberos/negotiate_kerberos.h --- squid-3.4.0.1/helpers/negotiate_auth/kerberos/negotiate_kerberos.h 1970-01-01 12:00:00.000000000 +1200 +++ squid-3.4.0.2/helpers/negotiate_auth/kerberos/negotiate_kerberos.h 2013-10-04 00:32:47.000000000 +1200 @@ -0,0 +1,154 @@ +/* + * ----------------------------------------------------------------------------- + * + * Author: Markus Moeller (markus_moeller at compuserve.com) + * + * Copyright (C) 2013 Markus Moeller. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * + * As a special exemption, M Moeller gives permission to link this program + * with MIT, Heimdal or other GSS/Kerberos libraries, and distribute + * the resulting executable, without including the source code for + * the Libraries in the source distribution. + * + * ----------------------------------------------------------------------------- + */ + +#if HAVE_STRING_H +#include +#endif +#if HAVE_STDIO_H +#include +#endif +#if HAVE_NETDB_H +#include +#endif +#if HAVE_UNISTD_H +#include +#endif +#if HAVE_TIME_H +#include +#endif + +#include "util.h" +#include "base64.h" + +#if HAVE_KRB5_H +#if HAVE_BROKEN_SOLARIS_KRB5_H +#warn "Warning! You have a broken Solaris system header" +#warn "http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6837512" +#if defined(__cplusplus) +#define KRB5INT_BEGIN_DECLS extern "C" { +#define KRB5INT_END_DECLS +KRB5INT_BEGIN_DECLS +#endif +#endif /* HAVE_BROKEN_SOLARIS_KRB5_H */ +#if HAVE_BROKEN_HEIMDAL_KRB5_H +extern "C" { +#include +} +#else +#include +#endif +#endif /* HAVE_KRB5_H */ + +#if HAVE_GSSAPI_GSSAPI_H +#include +#elif HAVE_GSSAPI_H +#include +#endif + +#if !HAVE_HEIMDAL_KERBEROS +#if HAVE_GSSAPI_GSSAPI_KRB5_H +#include +#endif +#if HAVE_GSSAPI_GSSAPI_GENERIC_H +#include +#endif +#if HAVE_GSSAPI_GSSAPI_EXT_H +#include +#endif +#else +#if HAVE_GSSAPI_GSSAPI_KRB5_H +#include +#endif +#endif + +#ifndef gss_nt_service_name +#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE +#endif + +#define PROGRAM "negotiate_kerberos_auth" + +#ifndef MAX_AUTHTOKEN_LEN +#define MAX_AUTHTOKEN_LEN 65535 +#endif +#ifndef SQUID_KERB_AUTH_VERSION +#define SQUID_KERB_AUTH_VERSION "3.0.4sq" +#endif + +char *gethost_name(void); + +static const unsigned char ntlmProtocol[] = {'N', 'T', 'L', 'M', 'S', 'S', 'P', 0}; + +inline const char * +LogTime() +{ + struct tm *tm; + struct timeval now; + static time_t last_t = 0; + static char buf[128]; + + gettimeofday(&now, NULL); + if (now.tv_sec != last_t) { + tm = localtime((time_t *) & now.tv_sec); + strftime(buf, 127, "%Y/%m/%d %H:%M:%S", tm); + last_t = now.tv_sec; + } + return buf; +} + +int check_gss_err(OM_uint32 major_status, OM_uint32 minor_status, + const char *function, int log, int sout); + +char *gethost_name(void); + +#if (defined(HAVE_GSSKRB5_EXTRACT_AUTHZ_DATA_FROM_SEC_CONTEXT) || defined(HAVE_GSS_MAP_NAME_TO_ANY)) && HAVE_KRB5_PAC +#define HAVE_PAC_SUPPORT 1 +#define MAX_PAC_GROUP_SIZE 200*60 +typedef struct { + uint16_t length; + uint16_t maxlength; + uint32_t pointer; +} RPC_UNICODE_STRING; + +int check_k5_err(krb5_context context, const char *msg, krb5_error_code code); +void align(int n); +void getustr(RPC_UNICODE_STRING *string); +char **getgids(char **Rids, uint32_t GroupIds, uint32_t GroupCount); +char *getdomaingids(char *ad_groups, uint32_t DomainLogonId, char **Rids, uint32_t GroupCount); +char *getextrasids(char *ad_groups, uint32_t ExtraSids, uint32_t SidCount); +uint64_t get6byt_be(void); +uint32_t get4byt(void); +uint16_t get2byt(void); +uint8_t get1byt(void); +char *xstrcpy( char *src, const char*dst); +char *xstrcat( char *src, const char*dst); +int checkustr(RPC_UNICODE_STRING *string); +char *get_ad_groups(char *ad_groups, krb5_context context, krb5_pac pac); +#else +#define HAVE_PAC_SUPPORT 0 +#endif diff -u -r -N squid-3.4.0.1/helpers/negotiate_auth/kerberos/negotiate_kerberos_pac.cc squid-3.4.0.2/helpers/negotiate_auth/kerberos/negotiate_kerberos_pac.cc --- squid-3.4.0.1/helpers/negotiate_auth/kerberos/negotiate_kerberos_pac.cc 1970-01-01 12:00:00.000000000 +1200 +++ squid-3.4.0.2/helpers/negotiate_auth/kerberos/negotiate_kerberos_pac.cc 2013-10-04 00:32:47.000000000 +1200 @@ -0,0 +1,467 @@ +/* + * ----------------------------------------------------------------------------- + * + * Author: Markus Moeller (markus_moeller at compuserve.com) + * + * Copyright (C) 2007 Markus Moeller. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * + * As a special exemption, M Moeller gives permission to link this program + * with MIT, Heimdal or other GSS/Kerberos libraries, and distribute + * the resulting executable, without including the source code for + * the Libraries in the source distribution. + * + * ----------------------------------------------------------------------------- + */ + +#include "squid.h" +#include "rfc1738.h" +#include "compat/getaddrinfo.h" +#include "compat/getnameinfo.h" + +#include "negotiate_kerberos.h" + +#if HAVE_PAC_SUPPORT + +static int bpos; +static krb5_data *ad_data; +static unsigned char *p; + +int +check_k5_err(krb5_context context, const char *function, krb5_error_code code) +{ + const char *errmsg; + + if (code) { + errmsg = krb5_get_error_message(context, code); + debug((char *) "%s| %s: ERROR: %s failed: %s\n", LogTime(), PROGRAM, function, errmsg); + fprintf(stderr, "%s| %s: ERROR: %s: %s\n", LogTime(), PROGRAM, function, errmsg); + krb5_free_error_message(context, errmsg); + } + return code; +} + +void +align(int n) +{ + if ( bpos % n != 0 ) { + int al; + al = (bpos/n); + bpos = bpos+(bpos-n*al); + } +} + +void +getustr(RPC_UNICODE_STRING *string) +{ + + string->length = (uint16_t)((p[bpos]<<0) | (p[bpos+1]<<8)); + string->maxlength = (uint16_t)((p[bpos+2]<<0) | (p[bpos+2+1]<<8)); + string->pointer = (uint32_t)((p[bpos+4]<<0) | (p[bpos+4+1]<<8) | (p[bpos+4+2]<<16) | (p[bpos+4+3]<<24)); + bpos = bpos+8; + +} + +uint64_t +get6byt_be(void) +{ + uint64_t var; + + var = ((uint64_t)p[bpos+5]<<0) | ((uint64_t)p[bpos+4]<<8) | ((uint64_t)p[bpos+3]<<16) | ((uint64_t)p[bpos+2]<<24) | ((uint64_t)p[bpos+1]<<32) | ((uint64_t)p[bpos]<<40); + bpos = bpos+6; + + return var; +} + +uint32_t +get4byt(void) +{ + uint32_t var; + + var=(uint32_t)((p[bpos]<<0) | (p[bpos+1]<<8) | (p[bpos+2]<<16) | (p[bpos+3]<<24)); + bpos = bpos+4; + + return var; +} + +uint16_t +get2byt(void) +{ + uint16_t var; + + var=(uint16_t)((p[bpos]<<0) | (p[bpos+1]<<8)); + bpos = bpos+2; + + return var; +} + +uint8_t +get1byt(void) +{ + uint8_t var; + + var=(uint8_t)((p[bpos]<<0)); + bpos = bpos+1; + + return var; +} + +char * +xstrcpy( char *src, const char *dst) +{ + if (dst) { + if (strlen(dst)>MAX_PAC_GROUP_SIZE) + return NULL; + else + return strcpy(src,dst); + } else + return src; +} + +char * +xstrcat( char *src, const char *dst) +{ + if (dst) { + if (strlen(src)+strlen(dst)+1>MAX_PAC_GROUP_SIZE) + return NULL; + else + return strcat(src,dst); + } else + return src; +} + +int +checkustr(RPC_UNICODE_STRING *string) +{ + uint32_t size,off,len; + + if (string->pointer != 0) { + align(4); + size = (uint32_t)((p[bpos]<<0) | (p[bpos+1]<<8) | (p[bpos+2]<<16) | (p[bpos+3]<<24)); + bpos = bpos+4; + off = (uint32_t)((p[bpos]<<0) | (p[bpos+1]<<8) | (p[bpos+2]<<16) | (p[bpos+3]<<24)); + bpos = bpos+4; + len = (uint32_t)((p[bpos]<<0) | (p[bpos+1]<<8) | (p[bpos+2]<<16) | (p[bpos+3]<<24)); + bpos = bpos+4; + if (len > size || off != 0 || + string->length > string->maxlength || len != string->length/2) { + debug((char *) "%s| %s: ERROR: RPC_UNICODE_STRING encoding error => size: %d len: %d/%d maxlength: %d offset: %d\n", + LogTime(), PROGRAM, size, len, string->length, string->maxlength, off); + return -1; + } + /* UNICODE string */ + bpos = bpos+string->length; + } + return 0; +} + +char ** +getgids(char **Rids, uint32_t GroupIds, uint32_t GroupCount) +{ + if (GroupIds!= 0) { + uint32_t ngroup; + uint32_t sauth; + int l; + + align(4); + ngroup = get4byt(); + if ( ngroup != GroupCount) { + debug((char *) "%s| %s: ERROR: Group encoding error => GroupCount: %d Array size: %d\n", + LogTime(), PROGRAM, GroupCount, ngroup); + return NULL; + } + debug((char *) "%s| %s: INFO: Found %d rids\n", LogTime(), PROGRAM, GroupCount); + + Rids=(char **)xcalloc(GroupCount*sizeof(char*),1); + for ( l=0; l<(int)GroupCount; l++) { + Rids[l]=(char *)xcalloc(4*sizeof(char),1); + memcpy((void *)Rids[l],(void *)&p[bpos],4); + sauth = get4byt(); + debug((char *) "%s| %s: Info: Got rid: %u\n", LogTime(), PROGRAM, sauth); + /* attribute */ + bpos = bpos+4; + } + } + return Rids; +} + +char * +getdomaingids(char *ad_groups, uint32_t DomainLogonId, char **Rids, uint32_t GroupCount) +{ + if (DomainLogonId!= 0) { + uint32_t nauth; + uint8_t rev; + uint64_t idauth; + uint32_t sauth; + char dli[256]; + char *ag; + size_t length; + int l; + + align(4); + + nauth = get4byt(); + + /* prepend rids with DomainID */ + length=1+1+6+nauth*4; + for (l=0; l<(int)GroupCount; l++) { + ag=(char *)xcalloc((length+4)*sizeof(char),1); + memcpy((void *)ag,(const void*)&p[bpos],1); + memcpy((void *)&ag[1],(const void*)&p[bpos+1],1); + ag[1] = ag[1]+1; + memcpy((void *)&ag[2],(const void*)&p[bpos+2],6+nauth*4); + memcpy((void *)&ag[length],(const void*)Rids[l],4); + if (l==0) { + if (!xstrcpy(ad_groups,"group=")) { + debug((char *) "%s| %s: WARN: Too many groups ! size > %d : %s\n", + LogTime(), PROGRAM, MAX_PAC_GROUP_SIZE, ad_groups); + } + } else { + if (!xstrcat(ad_groups," group=")) { + debug((char *) "%s| %s: WARN: Too many groups ! size > %d : %s\n", + LogTime(), PROGRAM, MAX_PAC_GROUP_SIZE, ad_groups); + } + } + if (!xstrcat(ad_groups,base64_encode_bin(ag, (int)(length+4)))) { + debug((char *) "%s| %s: WARN: Too many groups ! size > %d : %s\n", + LogTime(), PROGRAM, MAX_PAC_GROUP_SIZE, ad_groups); + } + xfree(ag); + } + + /* mainly for debug only */ + rev = get1byt(); + bpos = bpos + 1; /*nsub*/ + idauth = get6byt_be(); + + snprintf(dli,sizeof(dli),"S-%d-%lu",rev,(long unsigned int)idauth); + for ( l=0; l<(int)nauth; l++ ) { + sauth = get4byt(); + snprintf((char *)&dli[strlen(dli)],sizeof(dli)-strlen(dli),"-%u",sauth); + } + debug((char *) "%s| %s: INFO: Got DomainLogonId %s\n", LogTime(), PROGRAM, dli); + } + return ad_groups; +} + +char * +getextrasids(char *ad_groups, uint32_t ExtraSids, uint32_t SidCount) +{ + if (ExtraSids!= 0) { + uint32_t ngroup; + uint32_t *pa; + char *ag; + size_t length; + int l; + + align(4); + ngroup = get4byt(); + if ( ngroup != SidCount) { + debug((char *) "%s| %s: ERROR: Group encoding error => SidCount: %d Array size: %d\n", + LogTime(), PROGRAM, SidCount, ngroup); + return NULL; + } + debug((char *) "%s| %s: INFO: Found %d ExtraSIDs\n", LogTime(), PROGRAM, SidCount); + + pa=(uint32_t *)xmalloc(SidCount*sizeof(uint32_t)); + for ( l=0; l < (int)SidCount; l++ ) { + pa[l] = get4byt(); + bpos = bpos+4; /* attr */ + } + + for ( l=0; l<(int)SidCount; l++ ) { + char es[256]; + uint32_t nauth; + uint8_t rev; + uint64_t idauth; + uint32_t sauth; + int k; + + if (pa[l] != 0) { + nauth = get4byt(); + + length = 1+1+6+nauth*4; + ag = (char *)xcalloc((length)*sizeof(char),1); + memcpy((void *)ag,(const void*)&p[bpos],length); + if (!ad_groups) { + if (!xstrcpy(ad_groups,"group=")) { + debug((char *) "%s| %s: WARN: Too many groups ! size > %d : %s\n", + LogTime(), PROGRAM, MAX_PAC_GROUP_SIZE, ad_groups); + } + } else { + if (!xstrcat(ad_groups," group=")) { + debug((char *) "%s| %s: WARN: Too many groups ! size > %d : %s\n", + LogTime(), PROGRAM, MAX_PAC_GROUP_SIZE, ad_groups); + } + } + if (!xstrcat(ad_groups,base64_encode_bin(ag, (int)length))) { + debug((char *) "%s| %s: WARN: Too many groups ! size > %d : %s\n", + LogTime(), PROGRAM, MAX_PAC_GROUP_SIZE, ad_groups); + } + xfree(ag); + + rev = get1byt(); + bpos = bpos + 1; /* nsub */ + idauth = get6byt_be(); + + snprintf(es,sizeof(es),"S-%d-%lu",rev,(long unsigned int)idauth); + for ( k=0; k<(int)nauth; k++ ) { + sauth = get4byt(); + snprintf((char *)&es[strlen(es)],sizeof(es)-strlen(es),"-%u",sauth); + } + debug((char *) "%s| %s: INFO: Got ExtraSid %s\n", LogTime(), PROGRAM, es); + } + } + xfree(pa); + } + return ad_groups; +} + +char * +get_ad_groups(char *ad_groups, krb5_context context, krb5_pac pac) +{ + krb5_error_code ret; + RPC_UNICODE_STRING EffectiveName; + RPC_UNICODE_STRING FullName; + RPC_UNICODE_STRING LogonScript; + RPC_UNICODE_STRING ProfilePath; + RPC_UNICODE_STRING HomeDirectory; + RPC_UNICODE_STRING HomeDirectoryDrive; + RPC_UNICODE_STRING LogonServer; + RPC_UNICODE_STRING LogonDomainName; + uint32_t GroupCount=0; + uint32_t GroupIds=0; + uint32_t LogonDomainId=0; + uint32_t SidCount=0; + uint32_t ExtraSids=0; + /* + uint32_t ResourceGroupDomainSid=0; + uint32_t ResourceGroupCount=0; + uint32_t ResourceGroupIds=0; + */ + char **Rids=NULL; + int l=0; + + ad_data = (krb5_data *)xmalloc(sizeof(krb5_data)); + +#define KERB_LOGON_INFO 1 + ret = krb5_pac_get_buffer(context, pac, KERB_LOGON_INFO, ad_data); + if (check_k5_err(context, "krb5_pac_get_buffer", ret)) + goto k5clean; + + p = (unsigned char *)ad_data->data; + + debug((char *) "%s| %s: INFO: Got PAC data of lengh %d\n", + LogTime(), PROGRAM, (int)ad_data->length); + + /* Skip 16 bytes icommon RPC header + * Skip 4 bytes RPC unique pointer referent + * http://msdn.microsoft.com/en-gb/library/cc237933.aspx + */ + /* Some data are pointers to data which follows the main KRB5 LOGON structure => + * So need to read the data + * some logical consistency checks are done when analysineg the pointer data + */ + bpos = 20; + /* 8 bytes LogonTime + * 8 bytes LogoffTime + * 8 bytes KickOffTime + * 8 bytes PasswordLastSet + * 8 bytes PasswordCanChange + * 8 bytes PasswordMustChange + */ + bpos = bpos+48; + getustr(&EffectiveName); + getustr(&FullName); + getustr(&LogonScript); + getustr(&ProfilePath); + getustr(&HomeDirectory); + getustr(&HomeDirectoryDrive); + /* 2 bytes LogonCount + * 2 bytes BadPasswordCount + * 4 bytes UserID + * 4 bytes PrimaryGroupId + */ + bpos = bpos+12; + GroupCount = get4byt(); + GroupIds = get4byt(); + /* 4 bytes UserFlags + * 16 bytes UserSessionKey + */ + bpos = bpos+20; + getustr(&LogonServer); + getustr(&LogonDomainName); + LogonDomainId = get4byt(); + /* 8 bytes Reserved1 + * 4 bytes UserAccountControl + * 4 bytes SubAuthStatus + * 8 bytes LastSuccessfullLogon + * 8 bytes LastFailedLogon + * 4 bytes FailedLogonCount + * 4 bytes Reserved2 + */ + bpos = bpos+40; + SidCount = get4byt(); + ExtraSids = get4byt(); + /* 4 bytes ResourceGroupDomainSid + * 4 bytes ResourceGroupCount + * 4 bytes ResourceGroupIds + */ + bpos = bpos+12; + /* + * Read all data from structure => Now check pointers + */ + if (checkustr(&EffectiveName)<0) + goto k5clean; + if (checkustr(&FullName)<0) + goto k5clean; + if (checkustr(&LogonScript)<0) + goto k5clean; + if (checkustr(&ProfilePath)<0) + goto k5clean; + if (checkustr(&HomeDirectory)<0) + goto k5clean; + if (checkustr(&HomeDirectoryDrive)<0) + goto k5clean; + Rids = getgids(Rids,GroupIds,GroupCount); + if (checkustr(&LogonServer)<0) + goto k5clean; + if (checkustr(&LogonDomainName)<0) + goto k5clean; + ad_groups = getdomaingids(ad_groups,LogonDomainId,Rids,GroupCount); + if ((ad_groups = getextrasids(ad_groups,ExtraSids,SidCount))==NULL) + goto k5clean; + + debug((char *) "%s| %s: INFO: Read %d of %d bytes \n", LogTime(), PROGRAM, bpos, (int)ad_data->length); + if (Rids) { + for ( l=0; l<(int)GroupCount; l++) { + xfree(Rids[l]); + } + xfree(Rids); + } + krb5_free_data(context, ad_data); + return ad_groups; +k5clean: + if (Rids) { + for ( l=0; l<(int)GroupCount; l++) { + xfree(Rids[l]); + } + xfree(Rids); + } + krb5_free_data(context, ad_data); + return NULL; +} +#endif diff -u -r -N squid-3.4.0.1/helpers/negotiate_auth/wrapper/negotiate_wrapper.cc squid-3.4.0.2/helpers/negotiate_auth/wrapper/negotiate_wrapper.cc --- squid-3.4.0.1/helpers/negotiate_auth/wrapper/negotiate_wrapper.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/helpers/negotiate_auth/wrapper/negotiate_wrapper.cc 2013-10-04 00:32:47.000000000 +1200 @@ -46,9 +46,6 @@ #if HAVE_TIME_H #include #endif -#if HAVE_SYS_TIME_H -#include -#endif #if HAVE_ERRNO_H #include #endif diff -u -r -N squid-3.4.0.1/helpers/storeid_rewrite/file/storeid_file_rewrite.8 squid-3.4.0.2/helpers/storeid_rewrite/file/storeid_file_rewrite.8 --- squid-3.4.0.1/helpers/storeid_rewrite/file/storeid_file_rewrite.8 2013-07-29 11:04:56.000000000 +1200 +++ squid-3.4.0.2/helpers/storeid_rewrite/file/storeid_file_rewrite.8 2013-10-04 00:49:52.000000000 +1200 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "STOREID_FILE_REWRITE 1" -.TH STOREID_FILE_REWRITE 1 "2013-07-28" "perl v5.10.1" "User Contributed Perl Documentation" +.TH STOREID_FILE_REWRITE 1 "2013-10-03" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-3.4.0.1/include/autoconf.h.in squid-3.4.0.2/include/autoconf.h.in --- squid-3.4.0.1/include/autoconf.h.in 2013-07-29 10:46:25.000000000 +1200 +++ squid-3.4.0.2/include/autoconf.h.in 2013-10-04 00:33:05.000000000 +1200 @@ -320,6 +320,16 @@ /* Define to 1 if you have the header file. */ #undef HAVE_GSSAPI_H +/* Define to 1 if you have the `gsskrb5_extract_authz_data_from_sec_context' + function. */ +#undef HAVE_GSSKRB5_EXTRACT_AUTHZ_DATA_FROM_SEC_CONTEXT + +/* Define to 1 if you have gss_map_name_to_any */ +#undef HAVE_GSS_MAP_ANY_TO_ANY + +/* Define to 1 if you have the `gss_map_name_to_any' function. */ +#undef HAVE_GSS_MAP_NAME_TO_ANY + /* Define to 1 if you have Heimdal Kerberos */ #undef HAVE_HEIMDAL_KERBEROS @@ -386,12 +396,21 @@ /* Define to 1 if you have krb5_get_err_text */ #undef HAVE_KRB5_GET_ERR_TEXT +/* Define to 1 if you krb5_get_init_creds_free requires krb5_context */ +#undef HAVE_KRB5_GET_INIT_CREDS_FREE_CONTEXT + +/* Define to 1 if you have krb5_get_init_creds_opt_alloc */ +#undef HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC + /* Define to 1 if you have krb5_get_max_time_skew */ #undef HAVE_KRB5_GET_MAX_TIME_SKEW /* Define to 1 if you have krb5_get_profile */ #undef HAVE_KRB5_GET_PROFILE +/* Define to 1 if you have krb5_get_renewed_creds */ +#undef HAVE_KRB5_GET_RENEWED_CREDS + /* Define to 1 if you have the header file. */ #undef HAVE_KRB5_H @@ -401,6 +420,12 @@ /* Define if kerberos has MEMORY: cache support */ #undef HAVE_KRB5_MEMORY_CACHE +/* Define to 1 if you have krb5_pac */ +#undef HAVE_KRB5_PAC + +/* Define to 1 if you have krb5_principal_get_realm */ +#undef HAVE_KRB5_PRINCIPAL_GET_REALM + /* Define to 1 if you have the header file. */ #undef HAVE_LBER_H diff -u -r -N squid-3.4.0.1/include/version.h squid-3.4.0.2/include/version.h --- squid-3.4.0.1/include/version.h 2013-07-29 10:46:52.000000000 +1200 +++ squid-3.4.0.2/include/version.h 2013-10-04 00:33:30.000000000 +1200 @@ -7,7 +7,7 @@ */ #ifndef SQUID_RELEASE_TIME -#define SQUID_RELEASE_TIME 1375051560 +#define SQUID_RELEASE_TIME 1380803565 #endif #ifndef APP_SHORTNAME diff -u -r -N squid-3.4.0.1/lib/getopt.c squid-3.4.0.2/lib/getopt.c --- squid-3.4.0.1/lib/getopt.c 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/getopt.c 2013-10-04 00:32:47.000000000 +1200 @@ -45,7 +45,7 @@ #define BADCH (int)'?' #define BADARG (int)':' -#define EMSG "" +#define EMSG (char*)"" /* * getopt -- diff -u -r -N squid-3.4.0.1/lib/rfcnb/rfcnb-common.h squid-3.4.0.2/lib/rfcnb/rfcnb-common.h --- squid-3.4.0.1/lib/rfcnb/rfcnb-common.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/rfcnb/rfcnb-common.h 2013-10-04 00:32:47.000000000 +1200 @@ -26,7 +26,7 @@ #ifndef _RFCNB_RFCNB_COMMON_H #define _RFCNB_RFCNB_COMMON_H -#ifdef __cplusplus +#if defined(__cplusplus) extern "C" { #endif @@ -40,8 +40,7 @@ } RFCNB_Pkt; -#ifdef __cplusplus +#if defined(__cplusplus) } - #endif -#endif /* _RFCNB_RFCNB_COMMON_H */ +#endif /* _RFCNB_RFCNB_COMMON_H */ diff -u -r -N squid-3.4.0.1/lib/rfcnb/rfcnb.h squid-3.4.0.2/lib/rfcnb/rfcnb.h --- squid-3.4.0.1/lib/rfcnb/rfcnb.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/rfcnb/rfcnb.h 2013-10-04 00:32:47.000000000 +1200 @@ -28,8 +28,8 @@ /* Error responses */ -#include "rfcnb/rfcnb-error.h" #include "rfcnb/rfcnb-common.h" +#include "rfcnb/rfcnb-error.h" #ifdef __cplusplus extern "C" { diff -u -r -N squid-3.4.0.1/lib/rfcnb/rfcnb-io.c squid-3.4.0.2/lib/rfcnb/rfcnb-io.c --- squid-3.4.0.1/lib/rfcnb/rfcnb-io.c 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/rfcnb/rfcnb-io.c 2013-10-04 00:32:47.000000000 +1200 @@ -25,10 +25,10 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include "rfcnb/std-includes.h" +#include "rfcnb/rfcnb-io.h" #include "rfcnb/rfcnb-priv.h" #include "rfcnb/rfcnb-util.h" -#include "rfcnb/rfcnb-io.h" +#include "rfcnb/std-includes.h" #include #include diff -u -r -N squid-3.4.0.1/lib/rfcnb/rfcnb-io.h squid-3.4.0.2/lib/rfcnb/rfcnb-io.h --- squid-3.4.0.1/lib/rfcnb/rfcnb-io.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/rfcnb/rfcnb-io.h 2013-10-04 00:32:47.000000000 +1200 @@ -1,3 +1,6 @@ +#ifndef _SQUID__LIB_RFCNB_RFCNB_IO_H +#define _SQUID__LIB_RFCNB_RFCNB_IO_H + /* UNIX RFCNB (RFC1001/RFC1002) NetBIOS implementation * * Version 1.0 @@ -23,6 +26,10 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "rfcnb/rfcnb.h" + int RFCNB_Put_Pkt(struct RFCNB_Con *con, struct RFCNB_Pkt *pkt, int len); int RFCNB_Get_Pkt(struct RFCNB_Con *con, struct RFCNB_Pkt *pkt, int len); + +#endif diff -u -r -N squid-3.4.0.1/lib/rfcnb/rfcnb-priv.h squid-3.4.0.2/lib/rfcnb/rfcnb-priv.h --- squid-3.4.0.1/lib/rfcnb/rfcnb-priv.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/rfcnb/rfcnb-priv.h 2013-10-04 00:32:47.000000000 +1200 @@ -32,9 +32,13 @@ #define GLOBAL extern -#include "rfcnb/rfcnb-error.h" -#include "rfcnb/rfcnb-common.h" #include "rfcnb/byteorder.h" +#include "rfcnb/rfcnb-common.h" +#include "rfcnb/rfcnb-error.h" + +#if HAVE_NETINET_IN_H +#include +#endif #ifdef RFCNB_PORT #define RFCNB_Default_Port RFCNB_PORT diff -u -r -N squid-3.4.0.1/lib/rfcnb/rfcnb-util.c squid-3.4.0.2/lib/rfcnb/rfcnb-util.c --- squid-3.4.0.1/lib/rfcnb/rfcnb-util.c 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/rfcnb/rfcnb-util.c 2013-10-04 00:32:47.000000000 +1200 @@ -25,11 +25,11 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include "rfcnb/rfcnb.h" -#include "rfcnb/std-includes.h" +#include "rfcnb/rfcnb-io.h" #include "rfcnb/rfcnb-priv.h" #include "rfcnb/rfcnb-util.h" -#include "rfcnb/rfcnb-io.h" +#include "rfcnb/rfcnb.h" +#include "rfcnb/std-includes.h" #if HAVE_ARPA_INET_H #include diff -u -r -N squid-3.4.0.1/lib/rfcnb/rfcnb-util.h squid-3.4.0.2/lib/rfcnb/rfcnb-util.h --- squid-3.4.0.1/lib/rfcnb/rfcnb-util.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/rfcnb/rfcnb-util.h 2013-10-04 00:32:47.000000000 +1200 @@ -1,3 +1,6 @@ +#ifndef _RFCNB_RFCNB_UTIL_H +#define _RFCNB_RFCNB_UTIL_H + /* UNIX RFCNB (RFC1001/RFC1002) NetBIOS implementation * * Version 1.0 @@ -23,6 +26,8 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "rfcnb/std-includes.h" + void RFCNB_CvtPad_Name(char *name1, char *name2); void RFCNB_AName_To_NBName(char *AName, char *NBName); @@ -48,3 +53,5 @@ typedef void RFCNB_Prot_Print_Routine(FILE * fd, int dir, struct RFCNB_Pkt *pkt, int header, int payload); extern RFCNB_Prot_Print_Routine *Prot_Print_Routine; + +#endif /* _RFCNB_RFCNB_UTIL_H */ diff -u -r -N squid-3.4.0.1/lib/rfcnb/session.c squid-3.4.0.2/lib/rfcnb/session.c --- squid-3.4.0.1/lib/rfcnb/session.c 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/rfcnb/session.c 2013-10-04 00:32:47.000000000 +1200 @@ -31,10 +31,10 @@ #include "rfcnb/std-includes.h" #include -#include "rfcnb/rfcnb.h" -#include "rfcnb/rfcnb-priv.h" #include "rfcnb/rfcnb-io.h" +#include "rfcnb/rfcnb-priv.h" #include "rfcnb/rfcnb-util.h" +#include "rfcnb/rfcnb.h" #if HAVE_STRING_H #include @@ -84,7 +84,7 @@ /* Resolve that name into an IP address */ Service_Address = Called_Name; - if (strcmp(Called_Address, "") != 0) { /* If the Called Address = "" */ + if (strlen(Called_Address) != 0) { /* If the Called Address = "" */ Service_Address = Called_Address; } if ((errno = RFCNB_Name_To_IP(Service_Address, &Dest_IP)) < 0) { /* Error */ diff -u -r -N squid-3.4.0.1/lib/smblib/smblib.c squid-3.4.0.2/lib/smblib/smblib.c --- squid-3.4.0.1/lib/smblib/smblib.c 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/lib/smblib/smblib.c 2013-10-04 00:32:47.000000000 +1200 @@ -152,7 +152,7 @@ calling[strlen(con -> myname)] = 0; /* Make it a string */ - if (strcmp(con -> address, "") == 0) + if (strlen(con -> address) == 0) address = con -> desthost; else address = con -> address; @@ -268,7 +268,7 @@ calling[strlen(con -> myname)] = 0; /* Make it a string */ - if (strcmp(con -> address, "") == 0) + if (strlen(con -> address) == 0) address = con -> desthost; else address = con -> address; diff -u -r -N squid-3.4.0.1/RELEASENOTES.html squid-3.4.0.2/RELEASENOTES.html --- squid-3.4.0.1/RELEASENOTES.html 2013-07-29 11:05:10.000000000 +1200 +++ squid-3.4.0.2/RELEASENOTES.html 2013-10-04 00:49:57.000000000 +1200 @@ -2,10 +2,10 @@ - Squid 3.4.0.1 release notes + Squid 3.4.0.2 release notes -

Squid 3.4.0.1 release notes

+

Squid 3.4.0.2 release notes

Squid Developers


@@ -57,7 +57,7 @@

1. Notice

-

The Squid Team are pleased to announce the release of Squid-3.4.0.1 for testing.

+

The Squid Team are pleased to announce the release of Squid-3.4.0.2 for testing.

This new release is available for download from http://www.squid-cache.org/Versions/v3/3.4/ or the mirrors.

@@ -243,14 +243,16 @@

2.6 Multicast DNS

-

The internal DNS component fof Squid now supports multicast DNS (mDNS) resolution in +

The internal DNS component of Squid now supports multicast DNS (mDNS) resolution in accordance with RFC 6762.

-

There is no additional or special configuration required. The multicast DNS group IP -addresses for IPv4 and IPv6 resolving are added to the set of available DNS resolvers -and used automatically for domain names ending in .local before attempting a -secondary resolution on the configured resolvers. Domains without .local are -resolved using only the configured DNS resolvers.

+

The dns_multicast_local directive must be set to on to enable this +feature.

+ +

The multicast DNS group IP addresses for IPv4 and IPv6 resolving are added to the set +of available DNS resolvers and used automatically for domain names ending in .local +and reverse-DNS lookups before attempting a secondary resolution on the configured +resolvers. Domains without .local are resolved using only the configured resolvers.

Statistics for multicast DNS resolution can be found on the idns cache manager report.

@@ -288,7 +290,12 @@
configuration_includes_quoted_values

Whether Squid supports directive parameters with spaces, quotes, and other -special characters. Surround such parameters with "double quotes".

+special characters. Surround such parameters with "double quotes" and +also set this directive on/off around the relevant squid.conf line(s) +making use of such quoting.

+ +
dns_multicast_local
+

Use multicast DNS for .local domains and reverse-DNS resolution.

note

Use ACLs to annotate a transaction with customized annotations @@ -461,6 +468,13 @@ omit to get all helper auto-detected.

Currenly only a helper using file for backend is provided.

+
--disable-arch-native
+

New option to disable use of -march=native compiler flag.

+

The new flag auto-enables CPU-specific optimizations in GCC and is +required by Clang++ v3.2 for correct 64-bit environment detection. +It does not always work well however, so this build option is provided +to remove it when necessary.

+
--with-nat-devpf

New option to alter the behaviour of http_port ... intercept option in squid.conf.

diff -u -r -N squid-3.4.0.1/SPONSORS squid-3.4.0.2/SPONSORS --- squid-3.4.0.1/SPONSORS 2013-07-29 10:46:52.000000000 +1200 +++ squid-3.4.0.2/SPONSORS 2013-10-04 00:33:30.000000000 +1200 @@ -3,23 +3,6 @@ the Squid Project: -Netbox Blue Pty (http://netboxblue.com/) - - Netbox Blue Pty. contributed development resources towards - testing and stabilizing of authentication systems in Squid-3.2 - and Squid-3.3. - - -iiNet Ltd - http://www.iinet.net.au/ - - iiNet Ltd contributed significant development resources to - Squid during its early stages and was instrumental in its - early adoption in the local internet community. - In Squid-2.6 and 3.0 iiNet supplied equipment to help develop - and test the WCCPv2 implementation. - In Squid-3.2 iiNet sponsored development time to resolve - authentication problems. - LaunchPad - http://launchpad.net/ Provide Bazaar mirroring services and host the Squid-3 developer @@ -30,10 +13,6 @@ Messagenet donated hardware and bandwidth for the wiki server and most continuous integration testing. -Palisade Systems - http://www.palisadesys.com/ - - Palisade Systems funded SSL Bump feature development in Squid3. - The Measurement Factory - http://www.measurement-factory.com/ Measurement Factory has constributed significant resources @@ -46,6 +25,33 @@ gateways and CDN. +iCelero - http://icelero.com/ + + iCelero.com contributed development resources towards + testing and stabilization of Squid-3.3 on Windows. + +Netbox Blue Pty - http://netboxblue.com/ + + Netbox Blue Pty. contributed development resources towards + testing and stabilizing of authentication systems in Squid-3.2 + and Squid-3.3. + + +iiNet Ltd - http://www.iinet.net.au/ + + iiNet Ltd contributed significant development resources to + Squid during its early stages and was instrumental in its + early adoption in the local internet community. + In Squid-2.6 and 3.0 iiNet supplied equipment to help develop + and test the WCCPv2 implementation. + In Squid-3.2 iiNet sponsored development time to resolve + authentication problems. + +Palisade Systems - http://www.palisadesys.com/ + + Palisade Systems funded SSL Bump feature development in Squid3. + + Barefruit - http://www.barefruit.com/ Barefruit has funded Squid-3.0 and 3.1 development and maintenance, diff -u -r -N squid-3.4.0.1/src/acl/Acl.cc squid-3.4.0.2/src/acl/Acl.cc --- squid-3.4.0.1/src/acl/Acl.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/acl/Acl.cc 2013-10-04 00:32:47.000000000 +1200 @@ -73,10 +73,10 @@ /*Regex code needs to parse -i file*/ if ( isSet(ACL_F_REGEX_CASE)) - ConfigParser::TokenPutBack("-i"); + ConfigParser::strtokFilePutBack("-i"); if (nextToken != NULL && strcmp(nextToken, "--") != 0 ) - ConfigParser::TokenUndo(); + ConfigParser::strtokFileUndo(); } const char * @@ -200,7 +200,7 @@ /* snarf the ACL name */ - if ((t = ConfigParser::NextToken()) == NULL) { + if ((t = strtok(NULL, w_space)) == NULL) { debugs(28, DBG_CRITICAL, "aclParseAclLine: missing ACL name."); parser.destruct(); return; @@ -217,7 +217,7 @@ /* snarf the ACL type */ const char *theType; - if ((theType = ConfigParser::NextToken()) == NULL) { + if ((theType = strtok(NULL, w_space)) == NULL) { debugs(28, DBG_CRITICAL, "aclParseAclLine: missing ACL type."); parser.destruct(); return; @@ -401,6 +401,14 @@ AclMatchedName = NULL; // in case it was pointing to our name } +/// Temporary hack to allow old ACL code to handle quoted values without +/// replacing every strtok() call. +char * +ACL::strtok(char *str, const char *delimiters) +{ + return xstrtok(str, delimiters); +} + ACL::Prototype::Prototype() : prototype (NULL), typeString (NULL) {} ACL::Prototype::Prototype (ACL const *aPrototype, char const *aType) : prototype (aPrototype), typeString (aType) diff -u -r -N squid-3.4.0.1/src/acl/Acl.h squid-3.4.0.2/src/acl/Acl.h --- squid-3.4.0.1/src/acl/Acl.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/acl/Acl.h 2013-10-04 00:32:47.000000000 +1200 @@ -171,6 +171,9 @@ virtual bool requiresRequest() const; /// whether our (i.e. shallow) match() requires checklist to have a reply virtual bool requiresReply() const; + +protected: + static char *strtok(char *str, const char *delimiters); }; /// \ingroup ACLAPI diff -u -r -N squid-3.4.0.1/src/acl/Data.h squid-3.4.0.2/src/acl/Data.h --- squid-3.4.0.1/src/acl/Data.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/acl/Data.h 2013-10-04 00:32:47.000000000 +1200 @@ -33,6 +33,7 @@ #define SQUID_ACLDATA_H class wordlist; +extern char *xstrtok(char *str, const char *delimiters); /// \ingroup ACLAPI template @@ -50,6 +51,10 @@ virtual void prepareForUse() {} virtual bool empty() const =0; + + /// XXX: Temporary hack to allow old ACL code to handle quoted values without + /// replacing every strtok() call. + char *strtok(char *str, const char *dels) { return xstrtok(str, dels); } }; #endif /* SQUID_ACLDATA_H */ diff -u -r -N squid-3.4.0.1/src/acl/Gadgets.cc squid-3.4.0.2/src/acl/Gadgets.cc --- squid-3.4.0.1/src/acl/Gadgets.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/acl/Gadgets.cc 2013-10-04 00:32:47.000000000 +1200 @@ -120,7 +120,7 @@ /* first expect a page name */ - if ((t = ConfigParser::NextToken()) == NULL) { + if ((t = strtok(NULL, w_space)) == NULL) { debugs(28, DBG_CRITICAL, "aclParseDenyInfoLine: " << cfg_filename << " line " << config_lineno << ": " << config_input_line); debugs(28, DBG_CRITICAL, "aclParseDenyInfoLine: missing 'error page' parameter."); return; @@ -133,7 +133,7 @@ /* next expect a list of ACL names */ Tail = &A->acl_list; - while ((t = ConfigParser::NextToken())) { + while ((t = strtok(NULL, w_space))) { L = (AclNameList *)memAllocate(MEM_ACL_NAME_LIST); xstrncpy(L->name, t, ACL_NAME_SZ-1); *Tail = L; @@ -157,7 +157,7 @@ aclParseAccessLine(const char *directive, ConfigParser &, acl_access **treep) { /* first expect either 'allow' or 'deny' */ - const char *t = ConfigParser::NextToken(); + const char *t = ConfigParser::strtokFile(); if (!t) { debugs(28, DBG_CRITICAL, "aclParseAccessLine: " << cfg_filename << " line " << config_lineno << ": " << config_input_line); diff -u -r -N squid-3.4.0.1/src/adaptation/Config.cc squid-3.4.0.2/src/adaptation/Config.cc --- squid-3.4.0.1/src/adaptation/Config.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/adaptation/Config.cc 2013-10-04 00:32:47.000000000 +1200 @@ -264,7 +264,8 @@ void Adaptation::Config::ParseAccess(ConfigParser &parser) { - String groupId = ConfigParser::NextToken(); + String groupId; + ConfigParser::ParseString(&groupId); AccessRule *r; if (!(r=FindRuleByGroupId(groupId))) { r = new AccessRule(groupId); diff -u -r -N squid-3.4.0.1/src/adaptation/ServiceConfig.cc squid-3.4.0.2/src/adaptation/ServiceConfig.cc --- squid-3.4.0.1/src/adaptation/ServiceConfig.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/adaptation/ServiceConfig.cc 2013-10-04 00:32:47.000000000 +1200 @@ -61,8 +61,10 @@ bool Adaptation::ServiceConfig::parse() { - key = ConfigParser::NextToken(); - String method_point = ConfigParser::NextToken(); + String method_point; + + ConfigParser::ParseString(&key); + ConfigParser::ParseString(&method_point); method = parseMethod(method_point.termedBuf()); point = parseVectPoint(method_point.termedBuf()); @@ -74,7 +76,7 @@ bool onOverloadSet = false; std::set options; - while (char *option = ConfigParser::NextToken()) { + while (char *option = strtok(NULL, w_space)) { const char *name = option; const char *value = ""; if (strcmp(option, "0") == 0) { // backward compatibility diff -u -r -N squid-3.4.0.1/src/adaptation/ServiceGroups.cc squid-3.4.0.2/src/adaptation/ServiceGroups.cc --- squid-3.4.0.1/src/adaptation/ServiceGroups.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/adaptation/ServiceGroups.cc 2013-10-04 00:32:47.000000000 +1200 @@ -23,7 +23,7 @@ void Adaptation::ServiceGroup::parse() { - id = ConfigParser::NextToken(); + ConfigParser::ParseString(&id); wordlist *names = NULL; ConfigParser::ParseWordList(&names); diff -u -r -N squid-3.4.0.1/src/auth/digest/auth_digest.cc squid-3.4.0.2/src/auth/digest/auth_digest.cc --- squid-3.4.0.1/src/auth/digest/auth_digest.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/auth/digest/auth_digest.cc 2013-10-04 00:32:47.000000000 +1200 @@ -816,7 +816,7 @@ vlen = 0; } - StringArea keyName(item, nlen-1); + StringArea keyName(item, nlen); String value; if (vlen > 0) { diff -u -r -N squid-3.4.0.1/src/auth/ntlm/UserRequest.cc squid-3.4.0.2/src/auth/ntlm/UserRequest.cc --- squid-3.4.0.1/src/auth/ntlm/UserRequest.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/auth/ntlm/UserRequest.cc 2013-10-04 00:32:47.000000000 +1200 @@ -255,6 +255,13 @@ case HelperReply::Okay: { /* we're finished, release the helper */ const char *userLabel = reply.notes.findFirst("user"); + if (!userLabel) { + auth_user_request->user()->credentials(Auth::Failed); + safe_free(lm_request->server_blob); + lm_request->releaseAuthServer(); + debugs(29, DBG_CRITICAL, "ERROR: NTLM Authentication helper returned no username. Result: " << reply); + break; + } auth_user_request->user()->username(userLabel); auth_user_request->denyMessage("Login successful"); safe_free(lm_request->server_blob); diff -u -r -N squid-3.4.0.1/src/cache_cf.cc squid-3.4.0.2/src/cache_cf.cc --- squid-3.4.0.1/src/cache_cf.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/cache_cf.cc 2013-10-04 00:32:47.000000000 +1200 @@ -1023,7 +1023,7 @@ if ((u = parseTimeUnits(units, allowMsec)) == 0) self_destruct(); - if ((token = ConfigParser::NextToken()) == NULL) + if ((token = strtok(NULL, w_space)) == NULL) self_destruct(); d = xatof(token); @@ -1032,7 +1032,7 @@ if (0 == d) (void) 0; - else if ((token = ConfigParser::NextToken()) == NULL) + else if ((token = strtok(NULL, w_space)) == NULL) debugs(3, DBG_CRITICAL, "WARNING: No units on '" << config_input_line << "', assuming " << d << " " << units ); @@ -1099,7 +1099,7 @@ return; } - if ((token = ConfigParser::NextToken()) == NULL) { + if ((token = strtok(NULL, w_space)) == NULL) { self_destruct(); return; } @@ -1115,7 +1115,7 @@ if (0.0 == d) (void) 0; - else if ((token = ConfigParser::NextToken()) == NULL) + else if ((token = strtok(NULL, w_space)) == NULL) debugs(3, DBG_CRITICAL, "WARNING: No units on '" << config_input_line << "', assuming " << d << " " << units ); @@ -1146,7 +1146,7 @@ return; } - if ((token = ConfigParser::NextToken()) == NULL) { + if ((token = strtok(NULL, w_space)) == NULL) { self_destruct(); return; } @@ -1162,7 +1162,7 @@ if (0.0 == d) (void) 0; - else if ((token = ConfigParser::NextToken()) == NULL) + else if ((token = strtok(NULL, w_space)) == NULL) debugs(3, DBG_CRITICAL, "WARNING: No units on '" << config_input_line << "', assuming " << d << " " << units ); @@ -1194,7 +1194,7 @@ return; } - if ((token = ConfigParser::NextToken()) == NULL) { + if ((token = strtok(NULL, w_space)) == NULL) { self_destruct(); return; } @@ -1210,7 +1210,7 @@ if (0.0 == d) (void) 0; - else if ((token = ConfigParser::NextToken()) == NULL) + else if ((token = strtok(NULL, w_space)) == NULL) debugs(3, DBG_CRITICAL, "WARNING: No units on '" << config_input_line << "', assuming " << d << " " << units ); @@ -1293,6 +1293,7 @@ dump_wordlist(StoreEntry * entry, wordlist *words) { for (wordlist *word = words; word; word = word->next) + // XXX: use something like ConfigParser::QuoteString() here storeAppendPrintf(entry, "%s ", word->key); } @@ -1367,7 +1368,7 @@ static void parse_address(Ip::Address *addr) { - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (!token) { self_destruct(); @@ -1380,8 +1381,12 @@ addr->setNoAddr(); else if ( (*addr = token) ) // try parse numeric/IPA (void) 0; - else - addr->GetHostByName(token); // dont use ipcache + else if (addr->GetHostByName(token)) // dont use ipcache + (void) 0; + else { // not an IP and not a hostname + debugs(3, DBG_CRITICAL, "FATAL: invalid IP address or domain name '" << token << "'"); + self_destruct(); + } } static void @@ -1475,7 +1480,7 @@ acl_tos *l; acl_tos **tail = head; /* sane name below */ unsigned int tos; /* Initially uint for strtoui. Casted to tos_t before return */ - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (!token) { self_destruct(); @@ -1546,7 +1551,7 @@ acl_nfmark *l; acl_nfmark **tail = head; /* sane name below */ nfmark_t mark; - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (!token) { self_destruct(); @@ -1748,7 +1753,7 @@ { char *t = NULL; - if ((t = ConfigParser::NextToken()) == NULL) { + if ((t = strtok(NULL, w_space)) == NULL) { debugs(3, DBG_CRITICAL, "" << cfg_filename << " line " << config_lineno << ": " << config_input_line); debugs(3, DBG_CRITICAL, "parse_http_header_access: missing header name."); return; @@ -1787,7 +1792,7 @@ { char *t = NULL; - if ((t = ConfigParser::NextToken()) == NULL) { + if ((t = strtok(NULL, w_space)) == NULL) { debugs(3, DBG_CRITICAL, "" << cfg_filename << " line " << config_lineno << ": " << config_input_line); debugs(3, DBG_CRITICAL, "parse_http_header_replace: missing header name."); return; @@ -1832,10 +1837,10 @@ char *type_str; char *param_str; - if ((type_str = ConfigParser::NextToken()) == NULL) + if ((type_str = strtok(NULL, w_space)) == NULL) self_destruct(); - if ((param_str = ConfigParser::NextToken()) == NULL) + if ((param_str = strtok(NULL, w_space)) == NULL) self_destruct(); /* find a configuration for the scheme in the currently parsed configs... */ @@ -1906,10 +1911,10 @@ int i; int fs; - if ((type_str = ConfigParser::NextToken()) == NULL) + if ((type_str = strtok(NULL, w_space)) == NULL) self_destruct(); - if ((path_str = ConfigParser::NextToken()) == NULL) + if ((path_str = strtok(NULL, w_space)) == NULL) self_destruct(); fs = find_fstype(type_str); @@ -2064,7 +2069,7 @@ { struct servent *port = NULL; /** Parses a port number or service name from the squid.conf */ - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (token == NULL) { self_destruct(); return 0; /* NEVER REACHED */ @@ -2112,14 +2117,14 @@ p->basetime = 0; p->stats.logged_state = PEER_ALIVE; - if ((token = ConfigParser::NextToken()) == NULL) + if ((token = strtok(NULL, w_space)) == NULL) self_destruct(); p->host = xstrdup(token); p->name = xstrdup(token); - if ((token = ConfigParser::NextToken()) == NULL) + if ((token = strtok(NULL, w_space)) == NULL) self_destruct(); p->type = parseNeighborType(token); @@ -2137,7 +2142,7 @@ p->icp.port = GetUdpService(); p->connection_auth = 2; /* auto */ - while ((token = ConfigParser::NextToken())) { + while ((token = strtok(NULL, w_space))) { if (!strcmp(token, "proxy-only")) { p->options.proxy_only = true; } else if (!strcmp(token, "no-query")) { @@ -2521,7 +2526,7 @@ char *host = NULL; CachePeer *p; - if (!(host = ConfigParser::NextToken())) + if (!(host = strtok(NULL, w_space))) self_destruct(); if ((p = peerFindByName(host)) == NULL) { @@ -2540,10 +2545,10 @@ char *host = NULL; char *domain = NULL; - if (!(host = ConfigParser::NextToken())) + if (!(host = strtok(NULL, w_space))) self_destruct(); - while ((domain = ConfigParser::NextToken())) { + while ((domain = strtok(NULL, list_sep))) { CachePeerDomainList *l = NULL; CachePeerDomainList **L = NULL; CachePeer *p; @@ -2575,13 +2580,13 @@ char *type = NULL; char *domain = NULL; - if (!(host = ConfigParser::NextToken())) + if (!(host = strtok(NULL, w_space))) self_destruct(); - if (!(type = ConfigParser::NextToken())) + if (!(type = strtok(NULL, w_space))) self_destruct(); - while ((domain = ConfigParser::NextToken())) { + while ((domain = strtok(NULL, list_sep))) { NeighborTypeDomainList *l = NULL; NeighborTypeDomainList **L = NULL; CachePeer *p; @@ -2629,7 +2634,7 @@ void parse_onoff(int *var) { - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (token == NULL) self_destruct(); @@ -2670,7 +2675,7 @@ static void parse_tristate(int *var) { - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (token == NULL) self_destruct(); @@ -2710,7 +2715,7 @@ debugs(0, DBG_PARSE_NOTE(2), "WARNING: 'pipeline_prefetch off' is deprecated. Please update to use '0'."); *var = 0; } else { - ConfigParser::TokenUndo(); + ConfigParser::strtokFileUndo(); parse_int(var); } } @@ -2803,20 +2808,21 @@ int errcode; int flags = REG_EXTENDED | REG_NOSUB; - if ((token = ConfigParser::NextToken()) == NULL) { + if ((token = strtok(NULL, w_space)) == NULL) { self_destruct(); return; } if (strcmp(token, "-i") == 0) { flags |= REG_ICASE; - token = ConfigParser::NextToken(); + token = strtok(NULL, w_space); } else if (strcmp(token, "+i") == 0) { flags &= ~REG_ICASE; - token = ConfigParser::NextToken(); + token = strtok(NULL, w_space); } if (token == NULL) { + debugs(3, DBG_CRITICAL, "FATAL: refresh_pattern missing the regex pattern parameter"); self_destruct(); return; } @@ -2856,7 +2862,7 @@ max = (time_t) (i * 60); /* convert minutes to seconds */ /* Options */ - while ((token = ConfigParser::NextToken()) != NULL) { + while ((token = strtok(NULL, w_space)) != NULL) { if (!strcmp(token, "refresh-ims")) { refresh_ims = 1; } else if (!strcmp(token, "store-stale")) { @@ -2898,6 +2904,7 @@ regerror(errcode, &comp, errbuf, sizeof errbuf); debugs(22, DBG_CRITICAL, "" << cfg_filename << " line " << config_lineno << ": " << config_input_line); debugs(22, DBG_CRITICAL, "refreshAddToList: Invalid regular expression '" << pattern << "': " << errbuf); + xfree(pattern); return; } @@ -2987,7 +2994,7 @@ static void parse_string(char **var) { - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); safe_free(*var); if (token == NULL) @@ -2996,6 +3003,23 @@ *var = xstrdup(token); } +void +ConfigParser::ParseString(char **var) +{ + parse_string(var); +} + +void +ConfigParser::ParseString(String *var) +{ + char *token = strtok(NULL, w_space); + + if (token == NULL) + self_destruct(); + + var->reset(token); +} + static void free_string(char **var) { @@ -3010,7 +3034,7 @@ return; } - unsigned char *token = (unsigned char *) ConfigParser::NextQuotedOrToEol(); + unsigned char *token = (unsigned char *) strtok(NULL, null_string); safe_free(*var); if (!token) { @@ -3244,7 +3268,9 @@ parse_wordlist(wordlist ** list) { char *token; - while ((token = ConfigParser::NextToken())) + char *t = strtok(NULL, ""); + + while ((token = strwordtok(NULL, &t))) wordlistAdd(list, token); } @@ -3269,7 +3295,7 @@ static void parse_uri_whitespace(int *var) { - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (token == NULL) self_destruct(); @@ -3382,7 +3408,7 @@ static void parse_memcachemode(SquidConfig * config) { - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (!token) self_destruct(); @@ -3452,7 +3478,7 @@ Ip::Address_list *s; Ip::Address ipa; - while ((token = ConfigParser::NextToken())) { + while ((token = strtok(NULL, w_space))) { if (GetHostWithPort(token, &ipa)) { while (*head) @@ -3793,7 +3819,7 @@ return; } - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (!token) { self_destruct(); @@ -3804,7 +3830,7 @@ parsePortSpecification(s, token); /* parse options ... */ - while ((token = ConfigParser::NextToken())) { + while ((token = strtok(NULL, w_space))) { parse_port_option(s, token); } @@ -4052,7 +4078,7 @@ /* determine configuration style */ - const char *filename = ConfigParser::NextToken(); + const char *filename = strtok(NULL, w_space); if (!filename) { self_destruct(); return; @@ -4077,7 +4103,7 @@ // if logformat name is not recognized, // put back the token; it must be an ACL name if (!setLogformat(cl, token, false)) - ConfigParser::TokenUndo(); + ConfigParser::strtokFileUndo(); } else { // style #4 do { if (strncasecmp(token, "on-error=", 9) == 0) { @@ -4096,7 +4122,7 @@ setLogformat(cl, token+10, true); } else if (!strchr(token, '=')) { // put back the token; it must be an ACL name - ConfigParser::TokenUndo(); + ConfigParser::strtokFileUndo(); break; // done with name=value options, now to ACLs } else { debugs(3, DBG_CRITICAL, "Unknown access_log option " << token); @@ -4289,8 +4315,8 @@ if (!*cpuAffinityMap) *cpuAffinityMap = new CpuAffinityMap; - const char *const pToken = ConfigParser::NextToken(); - const char *const cToken = ConfigParser::NextToken(); + const char *const pToken = strtok(NULL, w_space); + const char *const cToken = strtok(NULL, w_space); Vector processes, cores; if (!parseNamedIntList(pToken, "process_numbers", processes)) { debugs(3, DBG_CRITICAL, "FATAL: bad 'process_numbers' parameter " << @@ -4422,7 +4448,7 @@ time_t m; cfg->service_failure_limit = GetInteger(); - if ((token = ConfigParser::NextToken()) == NULL) + if ((token = strtok(NULL, w_space)) == NULL) return; if (strcmp(token,"in") != 0) { @@ -4430,7 +4456,7 @@ self_destruct(); } - if ((token = ConfigParser::NextToken()) == NULL) { + if ((token = strtok(NULL, w_space)) == NULL) { self_destruct(); } @@ -4440,7 +4466,7 @@ if (0 == d) (void) 0; - else if ((token = ConfigParser::NextToken()) == NULL) { + else if ((token = strtok(NULL, w_space)) == NULL) { debugs(3, DBG_CRITICAL, "No time-units on '" << config_input_line << "'"); self_destruct(); } else if ((m = parseTimeUnits(token, false)) == 0) @@ -4470,7 +4496,7 @@ { char *al; sslproxy_cert_adapt *ca = (sslproxy_cert_adapt *) xcalloc(1, sizeof(sslproxy_cert_adapt)); - if ((al = ConfigParser::NextToken()) == NULL) { + if ((al = strtok(NULL, w_space)) == NULL) { self_destruct(); return; } @@ -4548,7 +4574,7 @@ { char *al; sslproxy_cert_sign *cs = (sslproxy_cert_sign *) xcalloc(1, sizeof(sslproxy_cert_sign)); - if ((al = ConfigParser::NextToken()) == NULL) { + if ((al = strtok(NULL, w_space)) == NULL) { self_destruct(); return; } @@ -4640,7 +4666,7 @@ static BumpCfgStyle bumpCfgStyleLast = bcsNone; BumpCfgStyle bumpCfgStyleNow = bcsNone; char *bm; - if ((bm = ConfigParser::NextToken()) == NULL) { + if ((bm = strtok(NULL, w_space)) == NULL) { self_destruct(); return; } @@ -4742,7 +4768,7 @@ if (!*headers) { *headers = new HeaderWithAclList; } - if ((fn = ConfigParser::NextToken()) == NULL) { + if ((fn = strtok(NULL, w_space)) == NULL) { self_destruct(); return; } @@ -4752,20 +4778,20 @@ if (hwa.fieldId == HDR_BAD_HDR) hwa.fieldId = HDR_OTHER; - Format::Format *nlf = new ::Format::Format("hdrWithAcl"); - ConfigParser::EnableMacros(); - String buf = ConfigParser::NextToken(); - ConfigParser::DisableMacros(); + String buf; + bool wasQuoted; + ConfigParser::ParseQuotedString(&buf, &wasQuoted); hwa.fieldValue = buf.termedBuf(); - hwa.quoted = ConfigParser::LastTokenWasQuoted(); + hwa.quoted = wasQuoted; if (hwa.quoted) { + Format::Format *nlf = new ::Format::Format("hdrWithAcl"); if (!nlf->parse(hwa.fieldValue.c_str())) { self_destruct(); return; } hwa.valueFormat = nlf; - } else - delete nlf; + } + aclParseAclList(LegacyParser, &hwa.aclList, (hwa.fieldName + ':' + hwa.fieldValue).c_str()); (*headers)->push_back(hwa); } diff -u -r -N squid-3.4.0.1/src/cbdata.h squid-3.4.0.2/src/cbdata.h --- squid-3.4.0.1/src/cbdata.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/cbdata.h 2013-10-04 00:32:47.000000000 +1200 @@ -224,14 +224,12 @@ /** *\ingroup CBDATAAPI - * cbdata types. similar to the MEM_* types above, but managed - * in cbdata.c. A big difference is that these types are dynamically - * allocated. This list is only a list of predefined types. Other types - * are added runtime + * cbdata types. Similar to the MEM_* types, but managed in cbdata.cc + * A big difference is that cbdata types are dynamically allocated. + * Initially only UNKNOWN type is predefined. Other types are added runtime. */ -typedef enum { - CBDATA_UNKNOWN = 0 -} cbdata_type; +typedef int cbdata_type; +static const cbdata_type CBDATA_UNKNOWN = 0; /// \ingroup CBDATAAPI void cbdataRegisterWithCacheManager(void); diff -u -r -N squid-3.4.0.1/src/cf.data.pre squid-3.4.0.2/src/cf.data.pre --- squid-3.4.0.1/src/cf.data.pre 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/cf.data.pre 2013-10-04 00:32:47.000000000 +1200 @@ -72,11 +72,12 @@ the configuration_includes_quoted_values directive to enable or disable that support. - Squid supports reading configuration option parameters from external - files using the syntax: - parameters("/path/filename") - For example: - acl whitelist dstdomain parameters("/etc/squid/whitelist.txt") + For example; + + configuration_includes_quoted_values on + acl group external groupCheck Administrators "Internet Users" Guest + configuration_includes_quoted_values off + Conditional configuration @@ -2450,6 +2451,9 @@ Without this option, all server certificate validation errors terminate the transaction to protect Squid and the client. + SQUID_X509_V_ERR_INFINITE_VALIDATION error cannot be bypassed + but should not happen unless your OpenSSL library is buggy. + SECURITY WARNING: Bypassing validation errors is dangerous because an error usually implies that the server cannot be trusted @@ -8326,6 +8330,19 @@ Squid to handle single-component names, enable this option. DOC_END +NAME: dns_multicast_local +COMMENT: on|off +TYPE: onoff +DEFAULT: off +DEFAULT_DOC: Search for .local and .arpa names is disabled. +LOC: Config.onoff.dns_mdns +DOC_START + When set to on, Squid sends multicast DNS lookups on the local + network for domains ending in .local and .arpa. + This enables local servers and devices to be contacted in an + ad-hoc or zero-configuration network environment. +DOC_END + NAME: dns_nameservers TYPE: wordlist DEFAULT: none @@ -8467,11 +8484,27 @@ DEFAULT: off LOC: ConfigParser::RecognizeQuotedValues DOC_START - If set, Squid will recognize each "quoted string" after a configuration - directive as a single parameter. The quotes are stripped before the - parameter value is interpreted or used. - See "Values with spaces, quotes, and other special characters" - section for more details. + Previous Squid versions have defined "quoted/string" as syntax for + ACL to signifiy the value is an included file containing values and + has treated the " characters in other places of the configuration file + as part of the parameter value it was used for. + + For compatibility with existing installations that behaviour + remains the default. + + If this directive is set to 'on', Squid will start parsing each + "quoted string" as a single configuration directive parameter. The + quotes are stripped before the parameter value is interpreted or use. + + That will continue for all lines until this directive is set to 'off', + where Squid will return to the default configuration parsing. + + For example; + + configuration_includes_quoted_values on + acl group external groupCheck Administrators "Internet Users" Guest + configuration_includes_quoted_values off + DOC_END NAME: memory_pools diff -u -r -N squid-3.4.0.1/src/cf_gen.cc squid-3.4.0.2/src/cf_gen.cc --- squid-3.4.0.1/src/cf_gen.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/cf_gen.cc 2013-10-04 00:32:47.000000000 +1200 @@ -681,8 +681,7 @@ "{\n" "\tchar\t*token;\n" "\tif ((token = strtok(buff, w_space)) == NULL) \n" - "\t\treturn 1;\t/* ignore empty lines */\n" - "\tConfigParser::SetCfgLine(strtok(NULL, \"\"));\n"; + "\t\treturn 1;\t/* ignore empty lines */\n"; for (EntryList::const_iterator e = head.begin(); e != head.end(); ++e) e->genParse(fout); diff -u -r -N squid-3.4.0.1/src/client_side.cc squid-3.4.0.2/src/client_side.cc --- squid-3.4.0.1/src/client_side.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/client_side.cc 2013-10-04 00:32:47.000000000 +1200 @@ -3938,8 +3938,18 @@ // Try to add generated ssl context to storage. if (port->generateHostCertificates && isNew) { - if (signAlgorithm == Ssl::algSignTrusted) + if (signAlgorithm == Ssl::algSignTrusted) { + // Add signing certificate to the certificates chain + X509 *cert = port->signingCert.get(); + if (SSL_CTX_add_extra_chain_cert(sslContext, cert)) { + // increase the certificate lock + CRYPTO_add(&(cert->references),1,CRYPTO_LOCK_X509); + } else { + const int ssl_error = ERR_get_error(); + debugs(33, DBG_IMPORTANT, "WARNING: can not add signing certificate to SSL context chain: " << ERR_error_string(ssl_error, NULL)); + } Ssl::addChainToSslContext(sslContext, port->certsToChain.get()); + } //else it is self-signed or untrusted do not attrach any certificate Ssl::LocalContextStorage & ssl_ctx_cache(Ssl::TheGlobalContextStorage.getLocalStorage(port->s)); @@ -4483,7 +4493,7 @@ pinning.closeHandler = NULL; // Comm unregisters handlers before calling const bool sawZeroReply = pinning.zeroReply; // reset when unpinning unpinConnection(); - if (sawZeroReply) { + if (sawZeroReply && clientConnection != NULL) { debugs(33, 3, "Closing client connection on pinned zero reply."); clientConnection->close(); } @@ -4495,8 +4505,10 @@ char desc[FD_DESC_SZ]; if (Comm::IsConnOpen(pinning.serverConnection)) { - if (pinning.serverConnection->fd == pinServer->fd) + if (pinning.serverConnection->fd == pinServer->fd) { + startPinnedConnectionMonitoring(); return; + } } unpinConnection(); // closes pinned connection, if any, and resets fields @@ -4533,6 +4545,57 @@ Params ¶ms = GetCommParams(pinning.closeHandler); params.conn = pinning.serverConnection; comm_add_close_handler(pinning.serverConnection->fd, pinning.closeHandler); + + startPinnedConnectionMonitoring(); +} + +/// Assign a read handler to an idle pinned connection so that we can detect connection closures. +void +ConnStateData::startPinnedConnectionMonitoring() +{ + if (pinning.readHandler != NULL) + return; // already monitoring + + typedef CommCbMemFunT Dialer; + pinning.readHandler = JobCallback(33, 3, + Dialer, this, ConnStateData::clientPinnedConnectionRead); + static char unusedBuf[8]; + comm_read(pinning.serverConnection, unusedBuf, sizeof(unusedBuf), pinning.readHandler); +} + +void +ConnStateData::stopPinnedConnectionMonitoring() +{ + if (pinning.readHandler != NULL) { + comm_read_cancel(pinning.serverConnection->fd, pinning.readHandler); + pinning.readHandler = NULL; + } +} + +/// Our read handler called by Comm when the server either closes an idle pinned connection or +/// perhaps unexpectedly sends something on that idle (from Squid p.o.v.) connection. +void +ConnStateData::clientPinnedConnectionRead(const CommIoCbParams &io) +{ + pinning.readHandler = NULL; // Comm unregisters handlers before calling + + if (io.flag == COMM_ERR_CLOSING) + return; // close handler will clean up + + // We could use getConcurrentRequestCount(), but this may be faster. + const bool clientIsIdle = !getCurrentContext(); + + debugs(33, 3, "idle pinned " << pinning.serverConnection << " read " << + io.size << (clientIsIdle ? " with idle client" : "")); + + assert(pinning.serverConnection == io.conn); + pinning.serverConnection->close(); + + // If we are still sending data to the client, do not close now. When we are done sending, + // ClientSocketContext::keepaliveNextRequest() checks pinning.serverConnection and will close. + // However, if we are idle, then we must close to inform the idle client and minimize races. + if (clientIsIdle && clientConnection != NULL) + clientConnection->close(); } const Comm::ConnectionPointer diff -u -r -N squid-3.4.0.1/src/client_side.h squid-3.4.0.2/src/client_side.h --- squid-3.4.0.1/src/client_side.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/client_side.h 2013-10-04 00:32:47.000000000 +1200 @@ -267,6 +267,7 @@ bool auth; /* pinned for www authentication */ bool zeroReply; ///< server closed w/o response (ERR_ZERO_SIZE_OBJECT) CachePeer *peer; /* CachePeer the connection goes via */ + AsyncCall::Pointer readHandler; ///< detects serverConnection closure AsyncCall::Pointer closeHandler; /*The close handler for pinned server side connection*/ } pinning; @@ -333,6 +334,9 @@ /// the client-side-detected error response instead of getting stuck. void quitAfterError(HttpRequest *request); // meant to be private + /// The caller assumes responsibility for connection closure detection. + void stopPinnedConnectionMonitoring(); + #if USE_SSL /// called by FwdState when it is done bumping the server void httpsPeeked(Comm::ConnectionPointer serverConnection); @@ -380,6 +384,9 @@ void abortChunkedRequestBody(const err_type error); err_type handleChunkedRequestBody(size_t &putSize); + void startPinnedConnectionMonitoring(); + void clientPinnedConnectionRead(const CommIoCbParams &io); + private: int connReadWasError(comm_err_t flag, int size, int xerrno); int connFinishedWithConn(int size); diff -u -r -N squid-3.4.0.1/src/client_side_request.cc squid-3.4.0.2/src/client_side_request.cc --- squid-3.4.0.1/src/client_side_request.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/client_side_request.cc 2013-10-04 00:32:47.000000000 +1200 @@ -1521,7 +1521,7 @@ #endif logType = LOG_TCP_MISS; getConn()->stopReading(); // tunnels read for themselves - tunnelStart(this, &out.size, &al->http.code); + tunnelStart(this, &out.size, &al->http.code, al); return; } diff -u -r -N squid-3.4.0.1/src/client_side_request.h squid-3.4.0.2/src/client_side_request.h --- squid-3.4.0.1/src/client_side_request.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/client_side_request.h 2013-10-04 00:32:47.000000000 +1200 @@ -202,7 +202,7 @@ void clientAccessCheck(ClientHttpRequest *); /* ones that should be elsewhere */ -void tunnelStart(ClientHttpRequest *, int64_t *, int *); +void tunnelStart(ClientHttpRequest *, int64_t *, int *, const AccessLogEntry::Pointer &al); #if _USE_INLINE_ #include "Store.h" diff -u -r -N squid-3.4.0.1/src/comm/ConnOpener.cc squid-3.4.0.2/src/comm/ConnOpener.cc --- squid-3.4.0.1/src/comm/ConnOpener.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/comm/ConnOpener.cc 2013-10-04 00:32:47.000000000 +1200 @@ -339,7 +339,7 @@ if (failRetries_ < Config.connect_retries) { debugs(5, 5, HERE << conn_ << ": * - try again"); - sleep(); + retrySleep(); return; } else { // send ERROR back to the upper layer. @@ -352,7 +352,7 @@ /// Close and wait a little before trying to open and connect again. void -Comm::ConnOpener::sleep() +Comm::ConnOpener::retrySleep() { Must(!calls_.sleep_); closeFd(); diff -u -r -N squid-3.4.0.1/src/comm/ConnOpener.h squid-3.4.0.2/src/comm/ConnOpener.h --- squid-3.4.0.1/src/comm/ConnOpener.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/comm/ConnOpener.h 2013-10-04 00:32:47.000000000 +1200 @@ -47,7 +47,7 @@ void connected(); void lookupLocalAddress(); - void sleep(); + void retrySleep(); void restart(); bool createFd(); diff -u -r -N squid-3.4.0.1/src/ConfigParser.cc squid-3.4.0.2/src/ConfigParser.cc --- squid-3.4.0.1/src/ConfigParser.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/ConfigParser.cc 2013-10-04 00:32:47.000000000 +1200 @@ -38,98 +38,84 @@ #include "fatal.h" #include "globals.h" +char *ConfigParser::lastToken = NULL; +std::queue ConfigParser::undo; + int ConfigParser::RecognizeQuotedValues = true; -std::stack ConfigParser::CfgFiles; -ConfigParser::TokenType ConfigParser::LastTokenType = ConfigParser::SimpleToken; -char *ConfigParser::LastToken = NULL; -char *ConfigParser::CfgLine = NULL; -char *ConfigParser::CfgPos = NULL; -std::queue ConfigParser::Undo_; -bool ConfigParser::AllowMacros_ = false; void ConfigParser::destruct() { shutting_down = 1; - if (!CfgFiles.empty()) { - std::ostringstream message; - CfgFile *f = CfgFiles.top(); - message << "Bungled " << f->filePath << " line " << f->lineNo << - ": " << f->currentLine << std::endl; - CfgFiles.pop(); - delete f; - while (!CfgFiles.empty()) { - f = CfgFiles.top(); - message << " included from " << f->filePath << " line " << - f->lineNo << ": " << f->currentLine << std::endl; - CfgFiles.pop(); - delete f; - } - message << " included from " << cfg_filename << " line " << - config_lineno << ": " << config_input_line << std::endl; - std::string msg = message.str(); - fatalf("%s", msg.c_str()); - } else - fatalf("Bungled %s line %d: %s", - cfg_filename, config_lineno, config_input_line); + fatalf("Bungled %s line %d: %s", + cfg_filename, config_lineno, config_input_line); } void -ConfigParser::TokenUndo() +ConfigParser::strtokFileUndo() { - assert(LastToken); - Undo_.push(LastToken); + assert(lastToken); + undo.push(lastToken); } void -ConfigParser::TokenPutBack(const char *tok) +ConfigParser::strtokFilePutBack(const char *tok) { assert(tok); - Undo_.push(tok); + undo.push(tok); } char * -ConfigParser::Undo() +xstrtok(char *str, const char *delimiters) { - LOCAL_ARRAY(char, undoToken, CONFIG_LINE_LIMIT); - if (!Undo_.empty()) { - strncpy(undoToken, Undo_.front().c_str(), sizeof(undoToken)); - undoToken[sizeof(undoToken) - 1] = '\0'; - Undo_.pop(); - return undoToken; - } - return NULL; + assert(!str); // we are parsing the configuration file + // no support unless enabled in the configuration and + // no support for other delimiters (they may need to be eradicated!) + return (ConfigParser::RecognizeQuotedValues && + strcmp(delimiters, " \t\n\r") == 0) ? + ConfigParser::NextToken() : ::strtok(str, delimiters); } char * -ConfigParser::strtokFile() +ConfigParser::strtokFile(void) { - if (RecognizeQuotedValues) - return ConfigParser::NextToken(); - static int fromFile = 0; static FILE *wordFile = NULL; + LOCAL_ARRAY(char, undoToken, CONFIG_LINE_LIMIT); - char *t; + char *t, *fn; LOCAL_ARRAY(char, buf, CONFIG_LINE_LIMIT); - if ((LastToken = ConfigParser::Undo())) - return LastToken; + if (!undo.empty()) { + strncpy(undoToken, undo.front().c_str(), sizeof(undoToken)); + undoToken[sizeof(undoToken) - 1] = '\0'; + undo.pop(); + return lastToken = undoToken; + } + if (RecognizeQuotedValues) + return lastToken = ConfigParser::NextToken(); + + lastToken = NULL; do { if (!fromFile) { - ConfigParser::TokenType tokenType; - t = ConfigParser::NextElement(tokenType, true); - if (!t) { + t = (strtok(NULL, w_space)); + + if (!t || *t == '#') { return NULL; - } else if (tokenType == ConfigParser::QuotedToken) { + } else if (*t == '\"' || *t == '\'') { /* quote found, start reading from file */ - debugs(3, 8,"Quoted token found : " << t); + fn = ++t; + + while (*t && *t != '\"' && *t != '\'') + ++t; - if ((wordFile = fopen(t, "r")) == NULL) { - debugs(3, DBG_CRITICAL, "Can not open file " << t << " for reading"); - return NULL; + *t = '\0'; + + if ((wordFile = fopen(fn, "r")) == NULL) { + debugs(28, DBG_CRITICAL, "strtokFile: " << fn << " not found"); + return (NULL); } #if _SQUID_WINDOWS_ @@ -138,7 +124,7 @@ fromFile = 1; } else { - return LastToken = t; + return lastToken = t; } } @@ -169,182 +155,91 @@ /* skip blank lines */ } while ( *t == '#' || !*t ); - return LastToken = t; + return lastToken = t; } +/// returns token after stripping any comments +/// must be called in non-quoted context only char * -ConfigParser::UnQuote(char *token, char **end) +ConfigParser::StripComment(char *token) { - char quoteChar = *token; - assert(quoteChar == '"' || quoteChar == '\''); - char *s = token + 1; - /* scan until the end of the quoted string, unescaping " and \ */ - while (*s && *s != quoteChar) { - if (*s == '\\' && isalnum(*( s + 1))) { - debugs(3, DBG_CRITICAL, "Unsupported escape sequence: " << s); - self_destruct(); - } else if (*s == '$' && quoteChar == '"') { - debugs(3, DBG_CRITICAL, "Unsupported cfg macro: " << s); - self_destruct(); - } else if (*s == '%' && quoteChar == '"' && (!AllowMacros_ )) { - debugs(3, DBG_CRITICAL, "Macros are not supported here: " << s); - self_destruct(); - } else if (*s == '\\') { - const char * next = s+1; // may point to 0 - memmove(s, next, strlen(next) + 1); - } - ++s; - } + if (!token) + return NULL; - if (*s != quoteChar) { - debugs(3, DBG_CRITICAL, "missing '" << quoteChar << "' at the end of quoted string: " << (s-1)); - self_destruct(); + // we are outside the quoted string context + // assume that anything starting with a '#' is a comment + if (char *comment = strchr(token, '#')) { + *comment = '\0'; // remove the comment from this token + (void)strtok(NULL, ""); // remove the comment from the current line + if (!*token) + return NULL; // token was a comment } - *end = s; - return (token+1); -} -void -ConfigParser::SetCfgLine(char *line) -{ - CfgLine = line; - CfgPos = line; + return token; } -char * -ConfigParser::TokenParse(char * &nextToken, ConfigParser::TokenType &type, bool legacy) +void +ConfigParser::ParseQuotedString(char **var, bool *wasQuoted) { - if (!nextToken || *nextToken == '\0') - return NULL; - type = ConfigParser::SimpleToken; - nextToken += strspn(nextToken, w_space); - if (*nextToken == '"' || *nextToken == '\'') { - type = ConfigParser::QuotedToken; - char *token = UnQuote(nextToken, &nextToken); - *nextToken = '\0'; - ++nextToken; - return token; - } - - char *token = nextToken; - if (char *t = strchr(nextToken, '#')) - *t = '\0'; - const char *sep; - if (legacy) - sep = w_space; - else - sep = w_space "("; - nextToken += strcspn(nextToken, sep); - - if (!legacy && *nextToken == '(') - type = ConfigParser::FunctionNameToken; + if (const char *phrase = NextElement(wasQuoted)) + *var = xstrdup(phrase); else - type = ConfigParser::SimpleToken; - - if (*nextToken != '\0') { - *nextToken = '\0'; - ++nextToken; - } - - if (*token == '\0') - return NULL; - - return token; + self_destruct(); } -char * -ConfigParser::NextElement(ConfigParser::TokenType &type, bool legacy) +void +ConfigParser::ParseQuotedString(String *var, bool *wasQuoted) { - char *token = TokenParse(CfgPos, type, legacy); - return token; + if (const char *phrase = NextElement(wasQuoted)) + var->reset(phrase); + else + self_destruct(); } char * -ConfigParser::NextToken() +ConfigParser::NextElement(bool *wasQuoted) { - if ((LastToken = ConfigParser::Undo())) - return LastToken; + if (wasQuoted) + *wasQuoted = false; - char *token = NULL; - do { - while (token == NULL && !CfgFiles.empty()) { - ConfigParser::CfgFile *wordfile = CfgFiles.top(); - token = wordfile->parse(LastTokenType); - if (!token) { - assert(!wordfile->isOpen()); - CfgFiles.pop(); - delete wordfile; - } - } - - if (!token) - token = NextElement(LastTokenType); + // Get all of the remaining string + char *token = strtok(NULL, ""); + if (token == NULL) + return NULL; - if (token && LastTokenType == ConfigParser::FunctionNameToken && strcmp("parameters", token) == 0) { - char *path = NextToken(); - if (LastTokenType != ConfigParser::QuotedToken) { - debugs(3, DBG_CRITICAL, "Quoted filename missing: " << token); - self_destruct(); - return NULL; - } + // skip leading whitespace (may skip the entire token that way) + while (xisspace(*token)) ++token; - // The next token in current cfg file line must be a ")" - char *end = NextToken(); - if (LastTokenType != ConfigParser::SimpleToken || strcmp(end, ")") != 0) { - debugs(3, DBG_CRITICAL, "missing ')' after " << token << "(\"" << path << "\""); - self_destruct(); - return NULL; - } + if (*token != '"') + return StripComment(strtok(token, w_space)); - if (CfgFiles.size() > 16) { - debugs(3, DBG_CRITICAL, "WARNING: can't open %s for reading parameters: includes are nested too deeply (>16)!\n" << path); - self_destruct(); - return NULL; - } + if (wasQuoted) + *wasQuoted = true; - ConfigParser::CfgFile *wordfile = new ConfigParser::CfgFile(); - if (!path || !wordfile->startParse(path)) { - debugs(3, DBG_CRITICAL, "Error opening config file: " << token); - delete wordfile; - self_destruct(); - return NULL; - } - CfgFiles.push(wordfile); - token = NULL; - } else if (token && LastTokenType == ConfigParser::FunctionNameToken) { - debugs(3, DBG_CRITICAL, "Unknown cfg function: " << token); - self_destruct(); - return NULL; + char *s = token + 1; + /* scan until the end of the quoted string, unescaping " and \ */ + while (*s && *s != '"') { + if (*s == '\\') { + const char * next = s+1; // may point to 0 + memmove(s, next, strlen(next) + 1); } - } while (token == NULL && !CfgFiles.empty()); - - return (LastToken = token); -} - -char * -ConfigParser::NextQuotedOrToEol() -{ - char *token; + ++s; + } - if ((token = CfgPos) == NULL) { - debugs(3, DBG_CRITICAL, "token is missing"); + if (*s != '"') { + debugs(3, DBG_CRITICAL, "missing '\"' at the end of quoted string" ); self_destruct(); - return NULL; } - token += strspn(token, w_space); + strtok(s-1, "\""); /*Reset the strtok to point after the " */ + *s = '\0'; - if (*token == '\"' || *token == '\'') { - //TODO: eat the spaces at the end and check if it is untill the end of file. - char *end; - token = UnQuote(token, &end); - *end = '\0'; - CfgPos = end + 1; - LastTokenType = ConfigParser::QuotedToken; - } else - LastTokenType = ConfigParser::SimpleToken; + return (token+1); +} - CfgPos = NULL; - return (LastToken = token); +char * +ConfigParser::NextToken() +{ + return NextElement(NULL); } const char * @@ -370,66 +265,3 @@ quotedStr.append('"'); return quotedStr.termedBuf(); } - -bool -ConfigParser::CfgFile::startParse(char *path) -{ - assert(wordFile == NULL); - if ((wordFile = fopen(path, "r")) == NULL) { - debugs(3, DBG_CRITICAL, "file :" << path << " not found"); - return false; - } - -#if _SQUID_WINDOWS_ - setmode(fileno(wordFile), O_TEXT); -#endif - - filePath = path; - return getFileLine(); -} - -bool -ConfigParser::CfgFile::getFileLine() -{ - // Else get the next line - if (fgets(parseBuffer, CONFIG_LINE_LIMIT, wordFile) == NULL) { - /* stop reading from file */ - fclose(wordFile); - wordFile = NULL; - parseBuffer[0] = '\0'; - return false; - } - parsePos = parseBuffer; - currentLine = parseBuffer; - lineNo++; - return true; -} - -char * -ConfigParser::CfgFile::parse(ConfigParser::TokenType &type) -{ - if (!wordFile) - return NULL; - - if (!*parseBuffer) - return NULL; - - char *token; - while (!(token = nextElement(type))) { - if (!getFileLine()) - return NULL; - } - return token; -} - -char * -ConfigParser::CfgFile::nextElement(ConfigParser::TokenType &type) -{ - return TokenParse(parsePos, type); -} - -ConfigParser::CfgFile::~CfgFile() -{ - if (wordFile) - fclose(wordFile); -} diff -u -r -N squid-3.4.0.1/src/ConfigParser.h squid-3.4.0.2/src/ConfigParser.h --- squid-3.4.0.1/src/ConfigParser.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/ConfigParser.h 2013-10-04 00:32:47.000000000 +1200 @@ -36,7 +36,6 @@ #include "SquidString.h" #include -#include #if HAVE_STRING #include #endif @@ -66,145 +65,48 @@ { public: - /** - * Parsed tokens type: simple tokens, quoted tokens or function - * like parameters. - */ - enum TokenType {SimpleToken, QuotedToken, FunctionNameToken}; - void destruct(); static void ParseUShort(unsigned short *var); static void ParseBool(bool *var); + static void ParseString(char **var); + static void ParseString(String *var); + /// Parse an unquoted token (no spaces) or a "quoted string" that + /// may include spaces. In some contexts, quotes strings may also + /// include macros. Quoted strings may escape any character with + /// a backslash (\), which is currently only useful for inner + /// quotes. TODO: support quoted strings anywhere a token is accepted. + static void ParseQuotedString(char **var, bool *wasQuoted = NULL); + static void ParseQuotedString(String *var, bool *wasQuoted = NULL); static const char *QuoteString(const String &var); static void ParseWordList(wordlist **list); - - /** - * Backward compatibility wrapper for the ConfigParser::NextToken method. - * If the configuration_includes_quoted_values configuration parameter is - * set to 'off' this interprets the quoted tokens as filenames. - */ static char * strtokFile(); + static void strtokFileUndo(); + static void strtokFilePutBack(const char *); /** - * Returns the body of the next element. The element is either a token or - * a quoted string with optional escape sequences and/or macros. The body - * of a quoted string element does not include quotes or escape sequences. - * Future code will want to see Elements and not just their bodies. - */ + Returns the body of the next element. The element is either a token or + a quoted string with optional escape sequences and/or macros. The body + of a quoted string element does not include quotes or escape sequences. + Future code will want to see Elements and not just their bodies. + */ static char *NextToken(); - /// \return true if the last parsed token was quoted - static bool LastTokenWasQuoted() {return (LastTokenType == ConfigParser::QuotedToken);} - - /** - * \return the next quoted string or the raw string data until the end of line. - * This method allows %macros in unquoted strings to keep compatibility - * for the logformat option. - */ - static char *NextQuotedOrToEol(); - - /** - * Undo last NextToken call. The next call to NextToken() method will return - * again the last parsed element. - * Can not be called repeatedly to undo multiple NextToken calls. In this case - * the behaviour is undefined. - */ - static void TokenUndo(); - - /** - * The next NextToken call will return the token as next element - * It can be used repeatedly to add more than one tokens in a FIFO list. - */ - static void TokenPutBack(const char *token); - - /// Set the configuration file line to parse. - static void SetCfgLine(char *line); - - /// Allow %macros inside quoted strings - static void EnableMacros() {AllowMacros_ = true;} - - /// Do not allow %macros inside quoted strings - static void DisableMacros() {AllowMacros_ = false;} - /// configuration_includes_quoted_values in squid.conf static int RecognizeQuotedValues; protected: - /** - * Class used to store required information for the current - * configuration file. - */ - class CfgFile - { - public: - CfgFile(): wordFile(NULL), parsePos(NULL), lineNo(0) { parseBuffer[0] = '\0';} - ~CfgFile(); - /// True if the configuration file is open - bool isOpen() {return wordFile != NULL;} - - /** - * Open the file given by 'path' and initializes the CfgFile object - * to start parsing - */ - bool startParse(char *path); - - /** - * Do the next parsing step: - * reads the next line from file if required. - * \return the body of next element or a NULL pointer if there are no more token elements in the file. - * \param type will be filled with the ConfigParse::TokenType for any element found, or left unchanged if NULL is returned. - */ - char *parse(TokenType &type); - - private: - bool getFileLine(); ///< Read the next line from the file - /** - * Return the body of the next element. If the wasQuoted is given - * set to true if the element was quoted. - */ - char *nextElement(TokenType &type); - FILE *wordFile; ///< Pointer to the file. - char parseBuffer[CONFIG_LINE_LIMIT]; ///< Temporary buffer to store data to parse - char *parsePos; ///< The next element position in parseBuffer string - public: - std::string filePath; ///< The file path - std::string currentLine; ///< The current line to parse - int lineNo; ///< Current line number - }; - - /** - * Return the last TokenUndo() or TokenPutBack() queued element, or NULL - * if none exist - */ - static char *Undo(); - - /** - * Unquotes the token, which must be quoted. - * \param end if it is not NULL, it is set to the end of token. - */ - static char *UnQuote(char *token, char **end = NULL); + static char *NextElement(bool *wasQuoted); + static char *StripComment(char *token); - /** - * Does the real tokens parsing job: Ignore comments, unquote an - * element if required. - * \return the next token, or NULL if there are no available tokens in the nextToken string. - * \param nextToken updated to point to the pos after parsed token. - * \param type The token type - * \param legacy If it is true function-like parameters are not allowed - */ - static char *TokenParse(char * &nextToken, TokenType &type, bool legacy = false); - - /// Wrapper method for TokenParse. - static char *NextElement(TokenType &type, bool legacy = false); - static std::stack CfgFiles; ///< The stack of open cfg files - static TokenType LastTokenType; ///< The type of last parsed element - static char *LastToken; ///< Points to the last parsed token - static char *CfgLine; ///< The current line to parse - static char *CfgPos; ///< Pointer to the next element in cfgLine string - static std::queue Undo_; ///< The list with TokenUndo() or TokenPutBack() queued elements - static bool AllowMacros_; +private: + static char *lastToken; + static std::queue undo; }; int parseConfigFile(const char *file_name); +/// Used for temporary hacks to allow old code to handle quoted values +/// without replacing every strtok() call. +extern char *xstrtok(char *str, const char *delimiters); + #endif /* SQUID_CONFIGPARSER_H */ diff -u -r -N squid-3.4.0.1/src/DiskIO/AIO/AIODiskIOModule.cc squid-3.4.0.2/src/DiskIO/AIO/AIODiskIOModule.cc --- squid-3.4.0.1/src/DiskIO/AIO/AIODiskIOModule.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/AIO/AIODiskIOModule.cc 2013-10-04 00:32:47.000000000 +1200 @@ -50,7 +50,7 @@ {} void -AIODiskIOModule::shutdown() +AIODiskIOModule::gracefulShutdown() {} DiskIOStrategy * diff -u -r -N squid-3.4.0.1/src/DiskIO/AIO/AIODiskIOModule.h squid-3.4.0.2/src/DiskIO/AIO/AIODiskIOModule.h --- squid-3.4.0.1/src/DiskIO/AIO/AIODiskIOModule.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/AIO/AIODiskIOModule.h 2013-10-04 00:32:47.000000000 +1200 @@ -42,7 +42,7 @@ static AIODiskIOModule &GetInstance(); AIODiskIOModule(); virtual void init(); - virtual void shutdown(); + virtual void gracefulShutdown(); virtual char const *type () const; virtual DiskIOStrategy* createStrategy(); diff -u -r -N squid-3.4.0.1/src/DiskIO/AIO/aio_win32.cc squid-3.4.0.2/src/DiskIO/AIO/aio_win32.cc --- squid-3.4.0.1/src/DiskIO/AIO/aio_win32.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/AIO/aio_win32.cc 2013-10-04 00:32:47.000000000 +1200 @@ -32,8 +32,11 @@ */ #include "squid.h" +#include "DiskIO/AIO/aio_win32.h" #include "comm.h" -#include "aio_win32.h" +#include "fd.h" +#include "StatCounters.h" +#include "win32.h" #if HAVE_ERRNO_H #include diff -u -r -N squid-3.4.0.1/src/DiskIO/Blocking/BlockingDiskIOModule.cc squid-3.4.0.2/src/DiskIO/Blocking/BlockingDiskIOModule.cc --- squid-3.4.0.1/src/DiskIO/Blocking/BlockingDiskIOModule.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/Blocking/BlockingDiskIOModule.cc 2013-10-04 00:32:47.000000000 +1200 @@ -49,7 +49,7 @@ {} void -BlockingDiskIOModule::shutdown() +BlockingDiskIOModule::gracefulShutdown() {} DiskIOStrategy* diff -u -r -N squid-3.4.0.1/src/DiskIO/Blocking/BlockingDiskIOModule.h squid-3.4.0.2/src/DiskIO/Blocking/BlockingDiskIOModule.h --- squid-3.4.0.1/src/DiskIO/Blocking/BlockingDiskIOModule.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/Blocking/BlockingDiskIOModule.h 2013-10-04 00:32:47.000000000 +1200 @@ -41,7 +41,7 @@ static BlockingDiskIOModule &GetInstance(); BlockingDiskIOModule(); virtual void init(); - virtual void shutdown(); + virtual void gracefulShutdown(); virtual char const *type () const; virtual DiskIOStrategy* createStrategy(); diff -u -r -N squid-3.4.0.1/src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc squid-3.4.0.2/src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc --- squid-3.4.0.1/src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc 2013-10-04 00:32:47.000000000 +1200 @@ -79,7 +79,7 @@ } void -DiskDaemonDiskIOModule::shutdown() +DiskDaemonDiskIOModule::gracefulShutdown() { initialised = false; } diff -u -r -N squid-3.4.0.1/src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.h squid-3.4.0.2/src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.h --- squid-3.4.0.1/src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.h 2013-10-04 00:32:47.000000000 +1200 @@ -41,7 +41,7 @@ static DiskDaemonDiskIOModule &GetInstance(); DiskDaemonDiskIOModule(); virtual void init(); - virtual void shutdown(); + virtual void gracefulShutdown(); virtual char const *type () const; virtual DiskIOStrategy* createStrategy(); diff -u -r -N squid-3.4.0.1/src/DiskIO/DiskIOModule.cc squid-3.4.0.2/src/DiskIO/DiskIOModule.cc --- squid-3.4.0.1/src/DiskIO/DiskIOModule.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/DiskIOModule.cc 2013-10-04 00:32:47.000000000 +1200 @@ -95,7 +95,7 @@ while (GetModules().size()) { DiskIOModule *fs = GetModules().back(); GetModules().pop_back(); - fs->shutdown(); + fs->gracefulShutdown(); } } diff -u -r -N squid-3.4.0.1/src/DiskIO/DiskIOModule.h squid-3.4.0.2/src/DiskIO/DiskIOModule.h --- squid-3.4.0.1/src/DiskIO/DiskIOModule.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/DiskIOModule.h 2013-10-04 00:32:47.000000000 +1200 @@ -65,7 +65,7 @@ virtual void init() = 0; //virtual void registerWithCacheManager(void); - virtual void shutdown() = 0; + virtual void gracefulShutdown() = 0; virtual DiskIOStrategy *createStrategy() = 0; virtual char const *type () const = 0; diff -u -r -N squid-3.4.0.1/src/DiskIO/DiskThreads/aiops_win32.cc squid-3.4.0.2/src/DiskIO/DiskThreads/aiops_win32.cc --- squid-3.4.0.1/src/DiskIO/DiskThreads/aiops_win32.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/DiskThreads/aiops_win32.cc 2013-10-04 00:32:47.000000000 +1200 @@ -35,6 +35,7 @@ #include "squid.h" #include "DiskIO/DiskThreads/CommIO.h" #include "DiskThreads.h" +#include "fd.h" #include "SquidConfig.h" #include "SquidTime.h" #include "Store.h" @@ -209,7 +210,7 @@ MemAllocator *pool; if ((pool = squidaio_get_pool(size)) != NULL) { - pool->free(p); + pool->freeOne(p); } else xfree(p); } @@ -221,7 +222,7 @@ int len = strlen(str) + 1; if ((pool = squidaio_get_pool(len)) != NULL) { - pool->free(str); + pool->freeOne(str); } else xfree(str); } @@ -295,7 +296,9 @@ done_queue.blocked = 0; - CommIO::NotifyIOCompleted(); + // Initialize the thread I/O pipes before creating any threads + // see bug 3189 comment 5 about race conditions. + CommIO::Initialize(); /* Create threads and get them to sit in their wait loop */ squidaio_thread_pool = memPoolCreate("aio_thread", sizeof(squidaio_thread_t)); @@ -715,7 +718,7 @@ resultp->aio_errno = requestp->err; } - squidaio_request_pool->free(requestp); + squidaio_request_pool->freeOne(requestp); } /* squidaio_cleanup_request */ int diff -u -r -N squid-3.4.0.1/src/DiskIO/DiskThreads/CommIO.cc squid-3.4.0.2/src/DiskIO/DiskThreads/CommIO.cc --- squid-3.4.0.1/src/DiskIO/DiskThreads/CommIO.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/DiskThreads/CommIO.cc 2013-10-04 00:32:47.000000000 +1200 @@ -37,6 +37,7 @@ #include "DiskIO/DiskThreads/CommIO.h" #include "fd.h" #include "globals.h" +#include "win32.h" void CommIO::Initialize() diff -u -r -N squid-3.4.0.1/src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.cc squid-3.4.0.2/src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.cc --- squid-3.4.0.1/src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.cc 2013-10-04 00:32:47.000000000 +1200 @@ -52,7 +52,7 @@ } void -DiskThreadsDiskIOModule::shutdown() +DiskThreadsDiskIOModule::gracefulShutdown() { DiskThreadsIOStrategy::Instance.done(); } diff -u -r -N squid-3.4.0.1/src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.h squid-3.4.0.2/src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.h --- squid-3.4.0.1/src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.h 2013-10-04 00:32:47.000000000 +1200 @@ -42,7 +42,7 @@ DiskThreadsDiskIOModule(); virtual void init(); //virtual void registerWithCacheManager(void); - virtual void shutdown(); + virtual void gracefulShutdown(); virtual char const *type () const; virtual DiskIOStrategy* createStrategy(); diff -u -r -N squid-3.4.0.1/src/DiskIO/IpcIo/IpcIoDiskIOModule.cc squid-3.4.0.2/src/DiskIO/IpcIo/IpcIoDiskIOModule.cc --- squid-3.4.0.1/src/DiskIO/IpcIo/IpcIoDiskIOModule.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/IpcIo/IpcIoDiskIOModule.cc 2013-10-04 00:32:47.000000000 +1200 @@ -18,7 +18,7 @@ {} void -IpcIoDiskIOModule::shutdown() +IpcIoDiskIOModule::gracefulShutdown() {} DiskIOStrategy* diff -u -r -N squid-3.4.0.1/src/DiskIO/IpcIo/IpcIoDiskIOModule.h squid-3.4.0.2/src/DiskIO/IpcIo/IpcIoDiskIOModule.h --- squid-3.4.0.1/src/DiskIO/IpcIo/IpcIoDiskIOModule.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/IpcIo/IpcIoDiskIOModule.h 2013-10-04 00:32:47.000000000 +1200 @@ -10,7 +10,7 @@ static IpcIoDiskIOModule &GetInstance(); IpcIoDiskIOModule(); virtual void init(); - virtual void shutdown(); + virtual void gracefulShutdown(); virtual char const *type () const; virtual DiskIOStrategy* createStrategy(); diff -u -r -N squid-3.4.0.1/src/DiskIO/Mmapped/MmappedDiskIOModule.cc squid-3.4.0.2/src/DiskIO/Mmapped/MmappedDiskIOModule.cc --- squid-3.4.0.1/src/DiskIO/Mmapped/MmappedDiskIOModule.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/Mmapped/MmappedDiskIOModule.cc 2013-10-04 00:32:47.000000000 +1200 @@ -18,7 +18,7 @@ {} void -MmappedDiskIOModule::shutdown() +MmappedDiskIOModule::gracefulShutdown() {} DiskIOStrategy* diff -u -r -N squid-3.4.0.1/src/DiskIO/Mmapped/MmappedDiskIOModule.h squid-3.4.0.2/src/DiskIO/Mmapped/MmappedDiskIOModule.h --- squid-3.4.0.1/src/DiskIO/Mmapped/MmappedDiskIOModule.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/DiskIO/Mmapped/MmappedDiskIOModule.h 2013-10-04 00:32:47.000000000 +1200 @@ -10,7 +10,7 @@ static MmappedDiskIOModule &GetInstance(); MmappedDiskIOModule(); virtual void init(); - virtual void shutdown(); + virtual void gracefulShutdown(); virtual char const *type () const; virtual DiskIOStrategy* createStrategy(); diff -u -r -N squid-3.4.0.1/src/dns_internal.cc squid-3.4.0.2/src/dns_internal.cc --- squid-3.4.0.1/src/dns_internal.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/dns_internal.cc 2013-10-04 00:32:47.000000000 +1200 @@ -268,6 +268,9 @@ static void idnsCheckMDNS(idns_query *q) { + if (!Config.onoff.dns_mdns || q->permit_mdns) + return; + size_t slen = strlen(q->name); if (slen > 6 && memcmp(q->name +(slen-6),".local", 6) == 0) { q->permit_mdns = true; @@ -279,6 +282,10 @@ { nns_mdns_count=0; + // mDNS is disabled + if (!Config.onoff.dns_mdns) + return; + // mDNS resolver addresses are explicit multicast group IPs if (Ip::EnableIpv6) { idnsAddNameserver("FF02::FB"); @@ -717,21 +724,23 @@ storeAppendPrintf(sentry, "Internal DNS Statistics:\n"); storeAppendPrintf(sentry, "\nThe Queue:\n"); storeAppendPrintf(sentry, " DELAY SINCE\n"); - storeAppendPrintf(sentry, " ID SIZE SENDS FIRST SEND LAST SEND\n"); - storeAppendPrintf(sentry, "------ ---- ----- ---------- ---------\n"); + storeAppendPrintf(sentry, " ID SIZE SENDS FIRST SEND LAST SEND M FQDN\n"); + storeAppendPrintf(sentry, "------ ---- ----- ---------- --------- - ----\n"); for (n = lru_list.head; n; n = n->next) { q = (idns_query *)n->data; - storeAppendPrintf(sentry, "%#06x %4d %5d %10.3f %9.3f\n", + storeAppendPrintf(sentry, "%#06x %4d %5d %10.3f %9.3f %c %s\n", (int) q->query_id, (int) q->sz, q->nsends, tvSubDsec(q->start_t, current_time), - tvSubDsec(q->sent_t, current_time)); + tvSubDsec(q->sent_t, current_time), + (q->permit_mdns? 'M':' '), + q->name); } if (Config.dns.packet_max > 0) - storeAppendPrintf(sentry, "DNS jumbo-grams: %zd Bytes\n", Config.dns.packet_max); + storeAppendPrintf(sentry, "\nDNS jumbo-grams: %zd Bytes\n", Config.dns.packet_max); else - storeAppendPrintf(sentry, "DNS jumbo-grams: not working\n"); + storeAppendPrintf(sentry, "\nDNS jumbo-grams: not working\n"); storeAppendPrintf(sentry, "\nNameservers:\n"); storeAppendPrintf(sentry, "IP ADDRESS # QUERIES # REPLIES Type\n"); @@ -1603,6 +1612,8 @@ #endif debugs(78, DBG_IMPORTANT, "or use the 'dns_nameservers' option in squid.conf."); + if (Ip::EnableIpv6) + idnsAddNameserver("::1"); idnsAddNameserver("127.0.0.1"); } @@ -1816,7 +1827,7 @@ debugs(78, 3, "idnsPTRLookup: buf is " << q->sz << " bytes for " << ip << ", id = 0x" << std::hex << q->query_id); - q->permit_mdns = true; + q->permit_mdns = Config.onoff.dns_mdns; idnsStartQuery(q, callback, data); } diff -u -r -N squid-3.4.0.1/src/external_acl.cc squid-3.4.0.2/src/external_acl.cc --- squid-3.4.0.1/src/external_acl.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/external_acl.cc 2013-10-04 00:32:47.000000000 +1200 @@ -44,7 +44,6 @@ #include "cache_cf.h" #include "client_side.h" #include "comm/Connection.h" -#include "ConfigParser.h" #include "ExternalACL.h" #include "ExternalACLEntry.h" #include "fde.h" @@ -331,16 +330,14 @@ a->local_addr.setLocalhost(); a->quote = external_acl::QUOTE_METHOD_URL; - token = ConfigParser::NextToken(); + token = strtok(NULL, w_space); if (!token) self_destruct(); a->name = xstrdup(token); - // Allow supported %macros inside quoted tokens - ConfigParser::EnableMacros(); - token = ConfigParser::NextToken(); + token = strtok(NULL, w_space); /* Parse options */ while (token) { @@ -389,9 +386,8 @@ break; } - token = ConfigParser::NextToken(); + token = strtok(NULL, w_space); } - ConfigParser::DisableMacros(); /* check that child startup value is sane. */ if (a->children.n_startup > a->children.n_max) @@ -507,7 +503,7 @@ *p = format; p = &format->next; - token = ConfigParser::NextToken(); + token = strtok(NULL, w_space); } /* There must be at least one format token */ diff -u -r -N squid-3.4.0.1/src/fd.cc squid-3.4.0.2/src/fd.cc --- squid-3.4.0.1/src/fd.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/fd.cc 2013-10-04 00:32:47.000000000 +1200 @@ -369,6 +369,7 @@ if (Squid_MaxFD - newReserve < min(256, Squid_MaxFD / 2)) fatalf("Too few filedescriptors available in the system (%d usable of %d).\n", Squid_MaxFD - newReserve, Squid_MaxFD); - debugs(51, DBG_CRITICAL, "Reserved FD adjusted from " << RESERVED_FD << " to " << newReserve << " due to failures"); + debugs(51, DBG_CRITICAL, "Reserved FD adjusted from " << RESERVED_FD << " to " << newReserve << + " due to failures (" << (Squid_MaxFD - newReserve) << "/" << Squid_MaxFD << " file descriptors available)"); RESERVED_FD = newReserve; } diff -u -r -N squid-3.4.0.1/src/format/Config.cc squid-3.4.0.2/src/format/Config.cc --- squid-3.4.0.1/src/format/Config.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/format/Config.cc 2013-10-04 00:32:47.000000000 +1200 @@ -1,5 +1,4 @@ #include "squid.h" -#include "ConfigParser.h" #include "cache_cf.h" #include "Debug.h" #include "format/Config.h" @@ -12,10 +11,10 @@ { char *name, *def; - if ((name = ConfigParser::NextToken()) == NULL) + if ((name = strtok(NULL, w_space)) == NULL) self_destruct(); - if ((def = ConfigParser::NextQuotedOrToEol()) == NULL) { + if ((def = strtok(NULL, "\r\n")) == NULL) { self_destruct(); return; } diff -u -r -N squid-3.4.0.1/src/format/Format.h squid-3.4.0.2/src/format/Format.h --- squid-3.4.0.1/src/format/Format.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/format/Format.h 2013-10-04 00:32:47.000000000 +1200 @@ -2,7 +2,6 @@ #define _SQUID_FORMAT_FORMAT_H #include "base/RefCount.h" -#include "ConfigParser.h" /* * Squid configuration allows users to define custom formats in * several components. @@ -30,7 +29,7 @@ { public: Format(const char *name); - virtual ~Format(); + ~Format(); /* very inefficent parser, but who cares, this needs to be simple */ /* First off, let's tokenize, we'll optimize in a second pass. diff -u -r -N squid-3.4.0.1/src/FwdState.cc squid-3.4.0.2/src/FwdState.cc --- squid-3.4.0.1/src/FwdState.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/FwdState.cc 2013-10-04 00:32:47.000000000 +1200 @@ -1100,7 +1100,7 @@ ctimeout = ftimeout; if (serverDestinations[0]->getPeer() && request->flags.sslBumped) { - debugs(50, 4, "fwdConnectStart: Ssl bumped connections through parrent proxy are not allowed"); + debugs(50, 4, "fwdConnectStart: Ssl bumped connections through parent proxy are not allowed"); ErrorState *anErr = new ErrorState(ERR_CANNOT_FORWARD, Http::scServiceUnavailable, request); fail(anErr); self = NULL; // refcounted @@ -1119,9 +1119,11 @@ else serverConn = NULL; if (Comm::IsConnOpen(serverConn)) { + pinned_connection->stopPinnedConnectionMonitoring(); flags.connected_okay = true; ++n_tries; request->flags.pinned = true; + request->hier.note(serverConn, pinned_connection->pinning.host); if (pinned_connection->pinnedAuth()) request->flags.auth = true; comm_add_close_handler(serverConn->fd, fwdServerClosedWrapper, this); diff -u -r -N squid-3.4.0.1/src/globals.h squid-3.4.0.2/src/globals.h --- squid-3.4.0.1/src/globals.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/globals.h 2013-10-04 00:32:47.000000000 +1200 @@ -137,6 +137,7 @@ extern int ssl_ex_index_ssl_peeked_cert; /* -1 */ extern int ssl_ex_index_ssl_errors; /* -1 */ extern int ssl_ex_index_ssl_cert_chain; /* -1 */ +extern int ssl_ex_index_ssl_validation_counter; /* -1 */ extern const char *external_acl_message; /* NULL */ extern int opt_send_signal; /* -1 */ diff -u -r -N squid-3.4.0.1/src/HelperChildConfig.cc squid-3.4.0.2/src/HelperChildConfig.cc --- squid-3.4.0.1/src/HelperChildConfig.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/HelperChildConfig.cc 2013-10-04 00:32:47.000000000 +1200 @@ -1,6 +1,5 @@ #include "squid.h" #include "cache_cf.h" -#include "ConfigParser.h" #include "Debug.h" #include "HelperChildConfig.h" #include "globals.h" @@ -45,7 +44,7 @@ void HelperChildConfig::parseConfig() { - char const *token = ConfigParser::NextToken(); + char const *token = strtok(NULL, w_space); if (!token) self_destruct(); @@ -59,7 +58,7 @@ } /* Parse extension options */ - for (; (token = ConfigParser::NextToken()) ;) { + for (; (token = strtok(NULL, w_space)) ;) { if (strncmp(token, "startup=", 8) == 0) { n_startup = xatoui(token + 8); } else if (strncmp(token, "idle=", 5) == 0) { diff -u -r -N squid-3.4.0.1/src/HttpHeader.cc squid-3.4.0.2/src/HttpHeader.cc --- squid-3.4.0.1/src/HttpHeader.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/HttpHeader.cc 2013-10-04 00:32:47.000000000 +1200 @@ -107,6 +107,7 @@ {"Expires", HDR_EXPIRES, ftDate_1123}, {"From", HDR_FROM, ftStr}, {"Host", HDR_HOST, ftStr}, + {"HTTP2-Settings", HDR_HTTP2_SETTINGS, ftStr}, /* for now */ {"If-Match", HDR_IF_MATCH, ftStr}, /* for now */ {"If-Modified-Since", HDR_IF_MODIFIED_SINCE, ftDate_1123}, {"If-None-Match", HDR_IF_NONE_MATCH, ftStr}, /* for now */ @@ -254,6 +255,7 @@ static HttpHeaderMask RequestHeadersMask; /* set run-time using RequestHeaders */ static http_hdr_type RequestHeadersArr[] = { HDR_AUTHORIZATION, HDR_FROM, HDR_HOST, + HDR_HTTP2_SETTINGS, HDR_IF_MATCH, HDR_IF_MODIFIED_SINCE, HDR_IF_NONE_MATCH, HDR_IF_RANGE, HDR_MAX_FORWARDS, HDR_ORIGIN, @@ -264,7 +266,7 @@ static HttpHeaderMask HopByHopHeadersMask; static http_hdr_type HopByHopHeadersArr[] = { - HDR_CONNECTION, HDR_KEEP_ALIVE, /*HDR_PROXY_AUTHENTICATE,*/ HDR_PROXY_AUTHORIZATION, + HDR_CONNECTION, HDR_HTTP2_SETTINGS, HDR_KEEP_ALIVE, /*HDR_PROXY_AUTHENTICATE,*/ HDR_PROXY_AUTHORIZATION, HDR_TE, HDR_TRAILER, HDR_TRANSFER_ENCODING, HDR_UPGRADE, HDR_PROXY_CONNECTION }; diff -u -r -N squid-3.4.0.1/src/HttpHeader.h squid-3.4.0.2/src/HttpHeader.h --- squid-3.4.0.1/src/HttpHeader.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/HttpHeader.h 2013-10-04 00:32:47.000000000 +1200 @@ -83,6 +83,7 @@ HDR_EXPIRES, /**< RFC 2608, 2616 */ HDR_FROM, /**< RFC 2608, 2616 */ HDR_HOST, /**< RFC 2608, 2616 */ + HDR_HTTP2_SETTINGS, /**< HTTP/2.0 upgrade header. see draft-ietf-httpbis-http2-04 */ /*HDR_IF,*/ /* RFC 2518 */ HDR_IF_MATCH, /**< RFC 2608, 2616 */ HDR_IF_MODIFIED_SINCE, /**< RFC 2608, 2616 */ diff -u -r -N squid-3.4.0.1/src/HttpRequest.cc squid-3.4.0.2/src/HttpRequest.cc --- squid-3.4.0.1/src/HttpRequest.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/HttpRequest.cc 2013-10-04 00:32:47.000000000 +1200 @@ -228,7 +228,6 @@ copy->vary_headers = vary_headers ? xstrdup(vary_headers) : NULL; // XXX: what to do with copy->peer_domain? - copy->myportname = myportname; copy->tag = tag; copy->extacl_log = extacl_log; copy->extacl_message = extacl_message; @@ -273,6 +272,8 @@ extacl_passwd = aReq->extacl_passwd; #endif + myportname = aReq->myportname; + // main property is which connection the request was received on (if any) clientConnectionManager = aReq->clientConnectionManager; diff -u -r -N squid-3.4.0.1/src/ip/QosConfig.cc squid-3.4.0.2/src/ip/QosConfig.cc --- squid-3.4.0.1/src/ip/QosConfig.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/ip/QosConfig.cc 2013-10-04 00:32:47.000000000 +1200 @@ -209,7 +209,7 @@ self_destruct(); #endif - while ( (token = ConfigParser::NextToken()) ) { + while ( (token = strtok(NULL, w_space)) ) { // Work out TOS or mark. Default to TOS for backwards compatibility if (!(mark || tos)) { diff -u -r -N squid-3.4.0.1/src/log/Config.cc squid-3.4.0.2/src/log/Config.cc --- squid-3.4.0.1/src/log/Config.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/log/Config.cc 2013-10-04 00:32:47.000000000 +1200 @@ -1,6 +1,5 @@ #include "squid.h" #include "cache_cf.h" -#include "ConfigParser.h" #include "Debug.h" #include "log/Config.h" @@ -11,20 +10,18 @@ { char *name, *def; - if ((name = ConfigParser::NextToken()) == NULL) + if ((name = strtok(NULL, w_space)) == NULL) self_destruct(); - ::Format::Format *nlf = new ::Format::Format(name); - - ConfigParser::EnableMacros(); - if ((def = ConfigParser::NextQuotedOrToEol()) == NULL) { + if ((def = strtok(NULL, "\r\n")) == NULL) { self_destruct(); return; } - ConfigParser::DisableMacros(); debugs(3, 2, "Log Format for '" << name << "' is '" << def << "'"); + ::Format::Format *nlf = new ::Format::Format(name); + if (!nlf->parse(def)) { self_destruct(); return; diff -u -r -N squid-3.4.0.1/src/main.cc squid-3.4.0.2/src/main.cc --- squid-3.4.0.1/src/main.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/main.cc 2013-10-04 00:32:47.000000000 +1200 @@ -163,10 +163,6 @@ void WINAPI WIN32_svcHandler(DWORD); #endif -#if !defined(SQUID_BUILD_INFO) -#define SQUID_BUILD_INFO "" -#endif - static char *opt_syslog_facility = NULL; static int icpPortNumOverride = 1; /* Want to detect "-u 0" */ static int configured_once = 0; @@ -808,7 +804,7 @@ if (oldWorkers != Config.workers) { debugs(1, DBG_CRITICAL, "WARNING: Changing 'workers' (from " << oldWorkers << " to " << Config.workers << - ") is not supported and ignored"); + ") requires a full restart. It has been ignored by reconfigure."); Config.workers = oldWorkers; } diff -u -r -N squid-3.4.0.1/src/mgr/CountersAction.h squid-3.4.0.2/src/mgr/CountersAction.h --- squid-3.4.0.1/src/mgr/CountersAction.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/mgr/CountersAction.h 2013-10-04 00:32:47.000000000 +1200 @@ -7,7 +7,6 @@ #define SQUID_MGR_COUNTERS_ACTION_H #include "mgr/Action.h" -#include namespace Mgr { diff -u -r -N squid-3.4.0.1/src/mgr/InfoAction.h squid-3.4.0.2/src/mgr/InfoAction.h --- squid-3.4.0.1/src/mgr/InfoAction.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/mgr/InfoAction.h 2013-10-04 00:32:47.000000000 +1200 @@ -8,7 +8,6 @@ #include "mgr/Action.h" #include "StoreStats.h" -#include namespace Mgr { diff -u -r -N squid-3.4.0.1/src/mgr/IntervalAction.h squid-3.4.0.2/src/mgr/IntervalAction.h --- squid-3.4.0.1/src/mgr/IntervalAction.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/mgr/IntervalAction.h 2013-10-04 00:32:47.000000000 +1200 @@ -7,7 +7,6 @@ #define SQUID_MGR_INTERVAL_ACTION_H #include "mgr/Action.h" -#include namespace Mgr { diff -u -r -N squid-3.4.0.1/src/neighbors.cc squid-3.4.0.2/src/neighbors.cc --- squid-3.4.0.1/src/neighbors.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/neighbors.cc 2013-10-04 00:32:47.000000000 +1200 @@ -204,8 +204,6 @@ return do_ping; ACLFilledChecklist checklist(p->access, request, NULL); - checklist.src_addr = request->client_addr; - checklist.my_addr = request->my_addr; return (checklist.fastCheck() == ACCESS_ALLOWED); } diff -u -r -N squid-3.4.0.1/src/Notes.cc squid-3.4.0.2/src/Notes.cc --- squid-3.4.0.1/src/Notes.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/Notes.cc 2013-10-04 00:32:47.000000000 +1200 @@ -92,8 +92,9 @@ Note::Pointer Notes::parse(ConfigParser &parser) { - String key = ConfigParser::NextToken(); - String value = ConfigParser::NextToken(); + String key, value; + ConfigParser::ParseString(&key); + ConfigParser::ParseQuotedString(&value); Note::Pointer note = add(key); Note::Value::Pointer noteValue = note->addValue(value); diff -u -r -N squid-3.4.0.1/src/Parsing.cc squid-3.4.0.2/src/Parsing.cc --- squid-3.4.0.1/src/Parsing.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/Parsing.cc 2013-10-04 00:32:47.000000000 +1200 @@ -147,7 +147,7 @@ int64_t GetInteger64(void) { - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (token == NULL) self_destruct(); @@ -162,7 +162,7 @@ int GetInteger(void) { - char *token = ConfigParser::NextToken(); + char *token = ConfigParser::strtokFile(); int i; if (token == NULL) @@ -216,7 +216,7 @@ unsigned short GetShort(void) { - char *token = ConfigParser::NextToken(); + char *token = strtok(NULL, w_space); if (token == NULL) self_destruct(); diff -u -r -N squid-3.4.0.1/src/peer_proxy_negotiate_auth.cc squid-3.4.0.2/src/peer_proxy_negotiate_auth.cc --- squid-3.4.0.1/src/peer_proxy_negotiate_auth.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/peer_proxy_negotiate_auth.cc 2013-10-04 00:32:47.000000000 +1200 @@ -210,21 +210,29 @@ static krb5_keytab_entry entry; static krb5_kt_cursor cursor; static krb5_creds *creds = NULL; -#if HAVE_HEIMDAL_KERBEROS +#if HAVE_HEIMDAL_KERBEROS && !HAVE_KRB5_GET_RENEWED_CREDS static krb5_creds creds2; #endif static krb5_principal principal = NULL; static krb5_deltat skew; +#if HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC + krb5_get_init_creds_opt *options; +#else krb5_get_init_creds_opt options; +#endif krb5_error_code code = 0; krb5_deltat rlife; #if HAVE_PROFILE_H && HAVE_KRB5_GET_PROFILE && HAVE_PROFILE_GET_INTEGER && HAVE_PROFILE_RELEASE profile_t profile; #endif -#if HAVE_HEIMDAL_KERBEROS +#if HAVE_HEIMDAL_KERBEROS && !HAVE_KRB5_GET_RENEWED_CREDS krb5_kdc_flags flags; - krb5_realm *client_realm; +#if HAVE_KRB5_PRINCIPAL_GET_REALM + const char *client_realm; +#else + krb5_realm client_realm; +#endif #endif char *mem_cache; @@ -236,7 +244,7 @@ (creds->times.endtime - time(0) > skew) && (creds->times.renew_till - time(0) > 2 * skew)) { if (creds->times.endtime - time(0) < 2 * skew) { -#if !HAVE_HEIMDAL_KERBEROS +#if HAVE_KRB5_GET_RENEWED_CREDS /* renew ticket */ code = krb5_get_renewed_creds(kparam.context, creds, principal, @@ -256,10 +264,15 @@ << error_message(code)); return (1); } +#if HAVE_KRB5_PRINCIPAL_GET_REALM + client_realm = krb5_principal_get_realm(kparam.context, principal); +#else client_realm = krb5_princ_realm(kparam.context, creds2.client); +#endif code = krb5_make_principal(kparam.context, &creds2.server, - *client_realm, KRB5_TGS_NAME, *client_realm, NULL); + (krb5_const_realm)&client_realm, KRB5_TGS_NAME, + (krb5_const_realm)&client_realm, NULL); if (code) { debugs(11, 5, HERE << "Error while getting krbtgt principal : " << @@ -400,7 +413,11 @@ creds = (krb5_creds *) xmalloc(sizeof(*creds)); memset(creds, 0, sizeof(*creds)); +#if HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC + krb5_get_init_creds_opt_alloc(kparam.context, &options); +#else krb5_get_init_creds_opt_init(&options); +#endif code = krb5_string_to_deltat((char *) MAX_RENEW_TIME, &rlife); if (code != 0 || rlife == 0) { debugs(11, 5, @@ -408,11 +425,22 @@ " : " << error_message(code)); return (1); } +#if HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC + krb5_get_init_creds_opt_set_renew_life(options, rlife); + code = + krb5_get_init_creds_keytab(kparam.context, creds, principal, + keytab, 0, NULL, options); +#if HAVE_KRB5_GET_INIT_CREDS_FREE_CONTEXT + krb5_get_init_creds_opt_free(kparam.context, options); +#else + krb5_get_init_creds_opt_free(options); +#endif +#else krb5_get_init_creds_opt_set_renew_life(&options, rlife); - code = krb5_get_init_creds_keytab(kparam.context, creds, principal, keytab, 0, NULL, &options); +#endif if (code) { debugs(11, 5, HERE << diff -u -r -N squid-3.4.0.1/src/SquidConfig.h squid-3.4.0.2/src/SquidConfig.h --- squid-3.4.0.1/src/SquidConfig.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/SquidConfig.h 2013-10-04 00:32:47.000000000 +1200 @@ -355,6 +355,7 @@ int memory_cache_disk; int hostStrictVerify; int client_dst_passthru; + int dns_mdns; } onoff; int pipeline_max_prefetch; diff -u -r -N squid-3.4.0.1/src/ssl/ErrorDetail.cc squid-3.4.0.2/src/ssl/ErrorDetail.cc --- squid-3.4.0.1/src/ssl/ErrorDetail.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/ssl/ErrorDetail.cc 2013-10-04 00:32:47.000000000 +1200 @@ -19,8 +19,10 @@ SslErrors TheSslErrors; static SslErrorEntry TheSslErrorArray[] = { + {SQUID_X509_V_ERR_INFINITE_VALIDATION, + "SQUID_X509_V_ERR_INFINITE_VALIDATION"}, {SQUID_X509_V_ERR_CERT_CHANGE, - "SQUID_X509_V_ERR_CERT_CHANGE"}, + "SQUID_X509_V_ERR_CERT_CHANGE"}, {SQUID_ERR_SSL_HANDSHAKE, "SQUID_ERR_SSL_HANDSHAKE"}, {SQUID_X509_V_ERR_DOMAIN_MISMATCH, @@ -87,6 +89,132 @@ "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH"}, {X509_V_ERR_KEYUSAGE_NO_CERTSIGN, "X509_V_ERR_KEYUSAGE_NO_CERTSIGN"}, +#if defined(X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER) + { + X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER, //33 + "X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER" + }, +#endif +#if defined(X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION) + { + X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION, //34 + "X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION" + }, +#endif +#if defined(X509_V_ERR_KEYUSAGE_NO_CRL_SIGN) + { + X509_V_ERR_KEYUSAGE_NO_CRL_SIGN, //35 + "X509_V_ERR_KEYUSAGE_NO_CRL_SIGN" + }, +#endif +#if defined(X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION) + { + X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION, //36 + "X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION" + }, +#endif +#if defined(X509_V_ERR_INVALID_NON_CA) + { + X509_V_ERR_INVALID_NON_CA, //37 + "X509_V_ERR_INVALID_NON_CA" + }, +#endif +#if defined(X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED) + { + X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED, //38 + "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED" + }, +#endif +#if defined(X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE) + { + X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE, //39 + "X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE" + }, +#endif +#if defined(X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED) + { + X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED, //40 + "X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED" + }, +#endif +#if defined(X509_V_ERR_INVALID_EXTENSION) + { + X509_V_ERR_INVALID_EXTENSION, //41 + "X509_V_ERR_INVALID_EXTENSION" + }, +#endif +#if defined(X509_V_ERR_INVALID_POLICY_EXTENSION) + { + X509_V_ERR_INVALID_POLICY_EXTENSION, //42 + "X509_V_ERR_INVALID_POLICY_EXTENSION" + }, +#endif +#if defined(X509_V_ERR_NO_EXPLICIT_POLICY) + { + X509_V_ERR_NO_EXPLICIT_POLICY, //43 + "X509_V_ERR_NO_EXPLICIT_POLICY" + }, +#endif +#if defined(X509_V_ERR_DIFFERENT_CRL_SCOPE) + { + X509_V_ERR_DIFFERENT_CRL_SCOPE, //44 + "X509_V_ERR_DIFFERENT_CRL_SCOPE" + }, +#endif +#if defined(X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE) + { + X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE, //45 + "X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE" + }, +#endif +#if defined(X509_V_ERR_UNNESTED_RESOURCE) + { + X509_V_ERR_UNNESTED_RESOURCE, //46 + "X509_V_ERR_UNNESTED_RESOURCE" + }, +#endif +#if defined(X509_V_ERR_PERMITTED_VIOLATION) + { + X509_V_ERR_PERMITTED_VIOLATION, //47 + "X509_V_ERR_PERMITTED_VIOLATION" + }, +#endif +#if defined(X509_V_ERR_EXCLUDED_VIOLATION) + { + X509_V_ERR_EXCLUDED_VIOLATION, //48 + "X509_V_ERR_EXCLUDED_VIOLATION" + }, +#endif +#if defined(X509_V_ERR_SUBTREE_MINMAX) + { + X509_V_ERR_SUBTREE_MINMAX, //49 + "X509_V_ERR_SUBTREE_MINMAX" + }, +#endif +#if defined(X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE) + { + X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE, //51 + "X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE" + }, +#endif +#if defined(X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX) + { + X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX, //52 + "X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX" + }, +#endif +#if defined(X509_V_ERR_UNSUPPORTED_NAME_SYNTAX) + { + X509_V_ERR_UNSUPPORTED_NAME_SYNTAX, //53 + "X509_V_ERR_UNSUPPORTED_NAME_SYNTAX" + }, +#endif +#if defined(X509_V_ERR_CRL_PATH_VALIDATION_ERROR) + { + X509_V_ERR_CRL_PATH_VALIDATION_ERROR, //54 + "X509_V_ERR_CRL_PATH_VALIDATION_ERROR" + }, +#endif {X509_V_ERR_APPLICATION_VERIFICATION, "X509_V_ERR_APPLICATION_VERIFICATION"}, { SSL_ERROR_NONE, "SSL_ERROR_NONE"}, diff -u -r -N squid-3.4.0.1/src/ssl/gadgets.cc squid-3.4.0.2/src/ssl/gadgets.cc --- squid-3.4.0.1/src/ssl/gadgets.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/ssl/gadgets.cc 2013-10-04 00:32:47.000000000 +1200 @@ -410,7 +410,7 @@ serial = BN_bin2bn(md, n, NULL); // if the serial is "0" set it to '1' - if (BN_is_zero(serial)) + if (BN_is_zero(serial) == true) BN_one(serial); // serial size does not exceed 20 bytes diff -u -r -N squid-3.4.0.1/src/ssl/support.cc squid-3.4.0.2/src/ssl/support.cc --- squid-3.4.0.1/src/ssl/support.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/ssl/support.cc 2013-10-04 00:32:47.000000000 +1200 @@ -239,6 +239,23 @@ X509_NAME_oneline(X509_get_subject_name(peer_cert), buffer, sizeof(buffer)); + // detect infinite loops + uint32_t *validationCounter = static_cast(SSL_get_ex_data(ssl, ssl_ex_index_ssl_validation_counter)); + if (!validationCounter) { + validationCounter = new uint32_t(1); + SSL_set_ex_data(ssl, ssl_ex_index_ssl_validation_counter, validationCounter); + } else { + // overflows allowed if SQUID_CERT_VALIDATION_ITERATION_MAX >= UINT32_MAX + (*validationCounter)++; + } + + if ((*validationCounter) >= SQUID_CERT_VALIDATION_ITERATION_MAX) { + ok = 0; // or the validation loop will never stop + error_no = SQUID_X509_V_ERR_INFINITE_VALIDATION; + debugs(83, 2, "SQUID_X509_V_ERR_INFINITE_VALIDATION: " << + *validationCounter << " iterations while checking " << buffer); + } + if (ok) { debugs(83, 5, "SSL Certificate signature OK: " << buffer); @@ -282,30 +299,34 @@ else debugs(83, DBG_IMPORTANT, "SSL unknown certificate error " << error_no << " in " << buffer); - if (check) { - ACLFilledChecklist *filledCheck = Filled(check); - assert(!filledCheck->sslErrors); - filledCheck->sslErrors = new Ssl::CertErrors(Ssl::CertError(error_no, broken_cert)); - filledCheck->serverCert.resetAndLock(peer_cert); - if (check->fastCheck() == ACCESS_ALLOWED) { - debugs(83, 3, "bypassing SSL error " << error_no << " in " << buffer); - ok = 1; - } else { - debugs(83, 5, "confirming SSL error " << error_no); + // Check if the certificate error can be bypassed. + // Infinity validation loop errors can not bypassed. + if (error_no != SQUID_X509_V_ERR_INFINITE_VALIDATION) { + if (check) { + ACLFilledChecklist *filledCheck = Filled(check); + assert(!filledCheck->sslErrors); + filledCheck->sslErrors = new Ssl::CertErrors(Ssl::CertError(error_no, broken_cert)); + filledCheck->serverCert.resetAndLock(peer_cert); + if (check->fastCheck() == ACCESS_ALLOWED) { + debugs(83, 3, "bypassing SSL error " << error_no << " in " << buffer); + ok = 1; + } else { + debugs(83, 5, "confirming SSL error " << error_no); + } + delete filledCheck->sslErrors; + filledCheck->sslErrors = NULL; + filledCheck->serverCert.reset(NULL); } - delete filledCheck->sslErrors; - filledCheck->sslErrors = NULL; - filledCheck->serverCert.reset(NULL); - } - // If the certificate validator is used then we need to allow all errors and - // pass them to certficate validator for more processing - else if (Ssl::TheConfig.ssl_crt_validator) { - ok = 1; - // Check if we have stored certificates chain. Store if not. - if (!SSL_get_ex_data(ssl, ssl_ex_index_ssl_cert_chain)) { - STACK_OF(X509) *certStack = X509_STORE_CTX_get1_chain(ctx); - if (certStack && !SSL_set_ex_data(ssl, ssl_ex_index_ssl_cert_chain, certStack)) - sk_X509_pop_free(certStack, X509_free); + // If the certificate validator is used then we need to allow all errors and + // pass them to certficate validator for more processing + else if (Ssl::TheConfig.ssl_crt_validator) { + ok = 1; + // Check if we have stored certificates chain. Store if not. + if (!SSL_get_ex_data(ssl, ssl_ex_index_ssl_cert_chain)) { + STACK_OF(X509) *certStack = X509_STORE_CTX_get1_chain(ctx); + if (certStack && !SSL_set_ex_data(ssl, ssl_ex_index_ssl_cert_chain, certStack)) + sk_X509_pop_free(certStack, X509_free); + } } } } @@ -651,6 +672,15 @@ delete errs; } +// "free" function for SSL_get_ex_new_index("ssl_ex_index_ssl_validation_counter") +static void +ssl_free_int(void *, void *ptr, CRYPTO_EX_DATA *, + int, long, void *) +{ + uint32_t *counter = static_cast (ptr); + delete counter; +} + /// \ingroup ServerProtocolSSLInternal /// Callback handler function to release STACK_OF(X509) "ex" data stored /// in an SSL object. @@ -713,6 +743,7 @@ ssl_ex_index_ssl_peeked_cert = SSL_get_ex_new_index(0, (void *) "ssl_peeked_cert", NULL, NULL, &ssl_free_X509); ssl_ex_index_ssl_errors = SSL_get_ex_new_index(0, (void *) "ssl_errors", NULL, NULL, &ssl_free_SslErrors); ssl_ex_index_ssl_cert_chain = SSL_get_ex_new_index(0, (void *) "ssl_cert_chain", NULL, NULL, &ssl_free_CertChain); + ssl_ex_index_ssl_validation_counter = SSL_get_ex_new_index(0, (void *) "ssl_validation_counter", NULL, NULL, &ssl_free_int); } /// \ingroup ServerProtocolSSLInternal @@ -1553,11 +1584,7 @@ if (X509_check_issued(certificate, certificate) == X509_V_OK) debugs(83, 5, "Certificate is self-signed, will not be chained"); else { - if (sk_X509_push(chain, certificate)) - CRYPTO_add(&(certificate->references), 1, CRYPTO_LOCK_X509); - else - debugs(83, DBG_IMPORTANT, "WARNING: unable to add signing certificate to cert chain"); - // and add to the chain any certificate loaded from the file + // and add to the chain any other certificate exist in the file while (X509 *ca = PEM_read_bio_X509(bio.get(), NULL, NULL, NULL)) { if (!sk_X509_push(chain, ca)) debugs(83, DBG_IMPORTANT, "WARNING: unable to add CA certificate to cert chain"); diff -u -r -N squid-3.4.0.1/src/ssl/support.h squid-3.4.0.2/src/ssl/support.h --- squid-3.4.0.1/src/ssl/support.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/ssl/support.h 2013-10-04 00:32:47.000000000 +1200 @@ -55,6 +55,7 @@ */ // Custom SSL errors; assumes all official errors are positive +#define SQUID_X509_V_ERR_INFINITE_VALIDATION -4 #define SQUID_X509_V_ERR_CERT_CHANGE -3 #define SQUID_ERR_SSL_HANDSHAKE -2 #define SQUID_X509_V_ERR_DOMAIN_MISMATCH -1 @@ -62,6 +63,14 @@ #define SQUID_SSL_ERROR_MIN SQUID_X509_V_ERR_CERT_CHANGE #define SQUID_SSL_ERROR_MAX INT_MAX +// Maximum certificate validation callbacks. OpenSSL versions exceeding this +// limit are deemed stuck in an infinite validation loop (OpenSSL bug #3090) +// and will trigger the SQUID_X509_V_ERR_INFINITE_VALIDATION error. +// Can be set to a number up to UINT32_MAX +#ifndef SQUID_CERT_VALIDATION_ITERATION_MAX +#define SQUID_CERT_VALIDATION_ITERATION_MAX 16384 +#endif + namespace AnyP { class PortCfg; diff -u -r -N squid-3.4.0.1/src/stat.cc squid-3.4.0.2/src/stat.cc --- squid-3.4.0.1/src/stat.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/stat.cc 2013-10-04 00:32:47.000000000 +1200 @@ -673,6 +673,8 @@ storeAppendPrintf(sentry, "Squid Object Cache: Version %s\n", version_string); + storeAppendPrintf(sentry, "Build Info: " SQUID_BUILD_INFO "\n"); + #if _SQUID_WINDOWS_ if (WIN32_run_mode == _WIN_SQUID_RUN_MODE_SERVICE) { storeAppendPrintf(sentry,"\nRunning as %s Windows System Service on %s\n", diff -u -r -N squid-3.4.0.1/src/store_client.cc squid-3.4.0.2/src/store_client.cc --- squid-3.4.0.1/src/store_client.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/store_client.cc 2013-10-04 00:32:47.000000000 +1200 @@ -808,7 +808,7 @@ } if (curlen > expectlen) { - debugs(90, 3, "quick-abort? YES bad content length"); + debugs(90, 3, "quick-abort? YES bad content length (" << curlen << " of " << expectlen << " bytes received)"); return true; } diff -u -r -N squid-3.4.0.1/src/SwapDir.cc squid-3.4.0.2/src/SwapDir.cc --- squid-3.4.0.1/src/SwapDir.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/SwapDir.cc 2013-10-04 00:32:47.000000000 +1200 @@ -34,7 +34,6 @@ #include "cache_cf.h" #include "compat/strtoll.h" #include "ConfigOption.h" -#include "ConfigParser.h" #include "globals.h" #include "Parsing.h" #include "SquidConfig.h" @@ -277,7 +276,7 @@ ConfigOption *newOption = getOptionTree(); - while ((name = ConfigParser::NextToken()) != NULL) { + while ((name = strtok(NULL, w_space)) != NULL) { value = strchr(name, '='); if (value) { diff -u -r -N squid-3.4.0.1/src/tests/stub_cache_cf.cc squid-3.4.0.2/src/tests/stub_cache_cf.cc --- squid-3.4.0.1/src/tests/stub_cache_cf.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/tests/stub_cache_cf.cc 2013-10-04 00:32:47.000000000 +1200 @@ -48,6 +48,7 @@ void parse_time_t(time_t * var) STUB char * strtokFile(void) STUB_RETVAL(NULL) void ConfigParser::ParseUShort(unsigned short *var) STUB +void ConfigParser::ParseString(String*) STUB void dump_acl_access(StoreEntry * entry, const char *name, acl_access * head) STUB void dump_acl_list(StoreEntry*, ACLList*) STUB YesNoNone::operator void*() const { STUB_NOP; return NULL; } diff -u -r -N squid-3.4.0.1/src/tests/testACLMaxUserIP.cc squid-3.4.0.2/src/tests/testACLMaxUserIP.cc --- squid-3.4.0.1/src/tests/testACLMaxUserIP.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/tests/testACLMaxUserIP.cc 2013-10-04 00:32:47.000000000 +1200 @@ -6,7 +6,6 @@ #include "testACLMaxUserIP.h" #include "auth/AclMaxUserIp.h" -#include "ConfigParser.h" #if HAVE_STDEXCEPT #include @@ -30,9 +29,9 @@ testACLMaxUserIP::testParseLine() { /* a config line to pass with a lead-in token to seed the parser. */ - char * line = xstrdup("-s 1"); + char * line = xstrdup("token -s 1"); /* seed the parser */ - ConfigParser::SetCfgLine(line); + strtok(line, w_space); ACLMaxUserIP anACL("max_user_ip"); anACL.parse(); /* we want a maximum of one, and strict to be true */ diff -u -r -N squid-3.4.0.1/src/tests/testConfigParser.cc squid-3.4.0.2/src/tests/testConfigParser.cc --- squid-3.4.0.1/src/tests/testConfigParser.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/tests/testConfigParser.cc 2013-10-04 00:32:47.000000000 +1200 @@ -21,15 +21,24 @@ { char cfgline[2048]; char cfgparam[2048]; - snprintf(cfgline, 2048, "%s", s); + snprintf(cfgline, 2048, "Config %s", s); + + // Points to the start of quoted string + const char *tmp = strchr(cfgline, ' '); + + if (tmp == NULL) { + fprintf(stderr, "Invalid config line: %s\n", s); + return false; + } // Keep the initial value on cfgparam. The ConfigParser methods will write on cfgline - strncpy(cfgparam, cfgline, sizeof(cfgparam)-1); + strncpy(cfgparam, tmp+1, sizeof(cfgparam)-1); cfgparam[sizeof(cfgparam)-1] = '\0'; // Initialize parser to point to the start of quoted string - ConfigParser::SetCfgLine(cfgline); - String unEscaped = ConfigParser::NextToken(); + strtok(cfgline, w_space); + String unEscaped; + ConfigParser::ParseQuotedString(&unEscaped); const bool interpOk = (unEscaped.cmp(expectInterp) == 0); if (!interpOk) { diff -u -r -N squid-3.4.0.1/src/tests/testCoss.cc squid-3.4.0.2/src/tests/testCoss.cc --- squid-3.4.0.1/src/tests/testCoss.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/tests/testCoss.cc 2013-10-04 00:32:47.000000000 +1200 @@ -1,6 +1,5 @@ #define SQUID_UNIT_TEST 1 #include "squid.h" -#include "ConfigParser.h" #include "testCoss.h" #include "Store.h" #include "SwapDir.h" @@ -92,9 +91,9 @@ char *path=xstrdup(TESTDIR); - char *config_line=xstrdup("100 max-size=102400 block-size=512 IOEngine=Blocking"); + char *config_line=xstrdup("foo 100 max-size=102400 block-size=512 IOEngine=Blocking"); - ConfigParser::SetCfgLine(config_line); + strtok(config_line, w_space); aStore->parse(0, path); @@ -156,9 +155,9 @@ char *path=xstrdup(TESTDIR); - char *config_line=xstrdup("100 max-size=102400 block-size=512 IOEngine=Blocking"); + char *config_line=xstrdup("foo 100 max-size=102400 block-size=512 IOEngine=Blocking"); - ConfigParser::SetCfgLine(config_line); + strtok(config_line, w_space); aStore->parse(0, path); @@ -284,8 +283,8 @@ commonInit(); char *path=xstrdup(TESTDIR); - char *config_line=xstrdup("100 max-size=102400 block-size=512"); - ConfigParser::SetCfgLine(config_line); + char *config_line=xstrdup("foo 100 max-size=102400 block-size=512"); + strtok(config_line, w_space); aStore->parse(0, path); safe_free(path); safe_free(config_line); diff -u -r -N squid-3.4.0.1/src/tests/testHttpReply.cc squid-3.4.0.2/src/tests/testHttpReply.cc --- squid-3.4.0.1/src/tests/testHttpReply.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/tests/testHttpReply.cc 2013-10-04 00:32:47.000000000 +1200 @@ -188,7 +188,7 @@ error = Http::scNone; // status line with nul-byte - input.append("HTTP/1.1\0200 Okay\n\n", 19); /* real case seen */ + input.append("HTTP/1.1" "\0" "200 Okay\n\n", 19); /* real case seen */ hdr_len = headersEnd(input.content(),input.contentSize()); CPPUNIT_ASSERT(!engine.sanityCheckStartLine(&input, hdr_len, &error) ); CPPUNIT_ASSERT_EQUAL(error, Http::scInvalidHeader); diff -u -r -N squid-3.4.0.1/src/tests/testRock.cc squid-3.4.0.2/src/tests/testRock.cc --- squid-3.4.0.1/src/tests/testRock.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/tests/testRock.cc 2013-10-04 00:32:47.000000000 +1200 @@ -1,7 +1,6 @@ #define SQUID_UNIT_TEST 1 #include "squid.h" -#include "ConfigParser.h" #include "DiskIO/DiskIOModule.h" #include "fs/rock/RockSwapDir.h" #include "globals.h" @@ -67,9 +66,9 @@ char *path=xstrdup(TESTDIR); - char *config_line=xstrdup("10 max-size=16384"); + char *config_line=xstrdup("foo 10 max-size=16384"); - ConfigParser::SetCfgLine(config_line); + strtok(config_line, w_space); store->parse(0, path); store_maxobjsize = 1024*1024*2; diff -u -r -N squid-3.4.0.1/src/tests/testUfs.cc squid-3.4.0.2/src/tests/testUfs.cc --- squid-3.4.0.1/src/tests/testUfs.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/tests/testUfs.cc 2013-10-04 00:32:47.000000000 +1200 @@ -104,11 +104,11 @@ char *path=xstrdup(TESTDIR); - char *config_line=xstrdup("100 1 1"); + char *config_line=xstrdup("foo 100 1 1"); visible_appname_string = xstrdup(PACKAGE "/" VERSION); - ConfigParser::SetCfgLine(config_line); + strtok(config_line, w_space); aStore->parse(0, path); store_maxobjsize = 1024*1024*2; @@ -244,8 +244,8 @@ mem_policy = createRemovalPolicy(Config.replPolicy); char *path=xstrdup(TESTDIR); - char *config_line=xstrdup("100 1 1"); - ConfigParser::SetCfgLine(config_line); + char *config_line=xstrdup("foo 100 1 1"); + strtok(config_line, w_space); aStore->parse(0, path); safe_free(path); safe_free(config_line); diff -u -r -N squid-3.4.0.1/src/tunnel.cc squid-3.4.0.2/src/tunnel.cc --- squid-3.4.0.1/src/tunnel.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/tunnel.cc 2013-10-04 00:32:47.000000000 +1200 @@ -100,6 +100,7 @@ bool noConnections() const; char *url; HttpRequest::Pointer request; + AccessLogEntryPointer al; Comm::ConnectionList serverDestinations; const char * getHost() const { @@ -845,7 +846,7 @@ nfmark_t GetNfmarkToServer(HttpRequest * request); void -tunnelStart(ClientHttpRequest * http, int64_t * size_ptr, int *status_ptr) +tunnelStart(ClientHttpRequest * http, int64_t * size_ptr, int *status_ptr, const AccessLogEntryPointer &al) { debugs(26, 3, HERE); /* Create state structure. */ @@ -890,6 +891,7 @@ tunnelState->server.size_ptr = size_ptr; tunnelState->status_ptr = status_ptr; tunnelState->client.conn = http->getConn()->clientConnection; + tunnelState->al = al; comm_add_close_handler(tunnelState->client.conn->fd, tunnelClientClosed, @@ -921,7 +923,7 @@ mb.Printf("CONNECT %s HTTP/1.1\r\n", tunnelState->url); HttpStateData::httpBuildRequestHeader(tunnelState->request.getRaw(), NULL, /* StoreEntry */ - NULL, /* AccessLogEntry */ + tunnelState->al, /* AccessLogEntry */ &hdr_out, flags); /* flags */ packerToMemInit(&p, &mb); diff -u -r -N squid-3.4.0.1/src/wccp2.cc squid-3.4.0.2/src/wccp2.cc --- squid-3.4.0.1/src/wccp2.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/wccp2.cc 2013-10-04 00:32:47.000000000 +1200 @@ -39,7 +39,6 @@ #include "comm/Connection.h" #include "comm/Loops.h" #include "compat/strsep.h" -#include "ConfigParser.h" #include "event.h" #include "ip/Address.h" #include "md5.h" @@ -2014,7 +2013,7 @@ char *t; /* Snarf the method */ - if ((t = ConfigParser::NextToken()) == NULL) { + if ((t = strtok(NULL, w_space)) == NULL) { debugs(80, DBG_CRITICAL, "wccp2_*_method: missing setting."); self_destruct(); } @@ -2061,7 +2060,7 @@ char *t; /* Snarf the method */ - if ((t = ConfigParser::NextToken()) == NULL) { + if ((t = strtok(NULL, w_space)) == NULL) { debugs(80, DBG_CRITICAL, "wccp2_assignment_method: missing setting."); self_destruct(); } @@ -2117,7 +2116,7 @@ } /* Snarf the type */ - if ((t = ConfigParser::NextToken()) == NULL) { + if ((t = strtok(NULL, w_space)) == NULL) { debugs(80, DBG_CRITICAL, "wccp2ParseServiceInfo: missing service info type (standard|dynamic)"); self_destruct(); } @@ -2142,7 +2141,7 @@ memset(wccp_password, 0, sizeof(wccp_password)); /* Handle password, if any */ - if ((t = ConfigParser::NextToken()) != NULL) { + if ((t = strtok(NULL, w_space)) != NULL) { if (strncmp(t, "password=", 9) == 0) { security_type = WCCP2_MD5_SECURITY; strncpy(wccp_password, t + 9, WCCP2_PASSWORD_LEN); @@ -2318,7 +2317,7 @@ } /* Next: loop until we don't have any more tokens */ - while ((t = ConfigParser::NextToken()) != NULL) { + while ((t = strtok(NULL, w_space)) != NULL) { if (strncmp(t, "flags=", 6) == 0) { /* XXX eww, string pointer math */ flags = parse_wccp2_service_flags(t + 6); diff -u -r -N squid-3.4.0.1/src/win32.h squid-3.4.0.2/src/win32.h --- squid-3.4.0.1/src/win32.h 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/src/win32.h 2013-10-04 00:32:47.000000000 +1200 @@ -35,13 +35,6 @@ #if _SQUID_WINDOWS_ -#if HAVE_SYS_TIME_H -#include -#endif -#if HAVE_SYS_RESOURCE_H -#include -#endif - void WIN32_ExceptionHandlerInit(void); int Win32__WSAFDIsSet(int fd, fd_set* set); diff -u -r -N squid-3.4.0.1/tools/purge/conffile.cc squid-3.4.0.2/tools/purge/conffile.cc --- squid-3.4.0.1/tools/purge/conffile.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/conffile.cc 2013-10-04 00:32:47.000000000 +1200 @@ -34,10 +34,6 @@ // Initial revision // // -#if (defined(__GNUC__) || defined(__GNUG__)) && !defined(__clang__) -#pragma implementation -#endif - #include "conffile.hh" #include #include diff -u -r -N squid-3.4.0.1/tools/purge/conffile.hh squid-3.4.0.2/tools/purge/conffile.hh --- squid-3.4.0.1/tools/purge/conffile.hh 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/conffile.hh 2013-10-04 00:32:47.000000000 +1200 @@ -39,16 +39,12 @@ #define _CONFFILE_HH #if !defined(__cplusplus) -#if defined(__GNUC__) || defined(__GNUG__) -#pragma interface -#else #ifndef HAVE_BOOL #define HAVE_BOOL typedef int bool; #define false 0 #define true 1 #endif -#endif #endif /* __cplusplus */ diff -u -r -N squid-3.4.0.1/tools/purge/convert.cc squid-3.4.0.2/tools/purge/convert.cc --- squid-3.4.0.1/tools/purge/convert.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/convert.cc 2013-10-04 00:32:47.000000000 +1200 @@ -40,9 +40,6 @@ // Initial revision // // -#if (defined(__GNUC__) || defined(__GNUG__)) && !defined(__clang__) && !defined(__INTEL_COMPILER) -#pragma implementation -#endif #include "convert.hh" #include diff -u -r -N squid-3.4.0.1/tools/purge/convert.hh squid-3.4.0.2/tools/purge/convert.hh --- squid-3.4.0.1/tools/purge/convert.hh 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/convert.hh 2013-10-04 00:32:47.000000000 +1200 @@ -39,16 +39,12 @@ #define _CONVERT_HH #if !defined(__cplusplus) -#if defined(__GNUC__) || defined(__GNUG__) -#pragma interface -#else #ifndef HAVE_BOOL #define HAVE_BOOL 1 typedef char bool; #define false 0 #define true 1 #endif -#endif #endif /* __cplusplus */ #include diff -u -r -N squid-3.4.0.1/tools/purge/copyout.cc squid-3.4.0.2/tools/purge/copyout.cc --- squid-3.4.0.1/tools/purge/copyout.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/copyout.cc 2013-10-04 00:32:47.000000000 +1200 @@ -35,10 +35,6 @@ // Initial revision // // -#if (defined(__GNUC__) || defined(__GNUG__)) && !defined(__clang__) -#pragma implementation -#endif - #include "squid.h" #include "copyout.hh" diff -u -r -N squid-3.4.0.1/tools/purge/copyout.hh squid-3.4.0.2/tools/purge/copyout.hh --- squid-3.4.0.1/tools/purge/copyout.hh 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/copyout.hh 2013-10-04 00:32:47.000000000 +1200 @@ -35,16 +35,12 @@ #define _COPYOUT_HH #if !defined(__cplusplus) -#if defined(__GNUC__) || defined(__GNUG__) -#pragma interface -#else #ifndef HAVE_BOOL #define HAVE_BOOL typedef int bool; #define false 0 #define true 1 #endif -#endif #endif /* __cplusplus */ int diff -u -r -N squid-3.4.0.1/tools/purge/purge.cc squid-3.4.0.2/tools/purge/purge.cc --- squid-3.4.0.1/tools/purge/purge.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/purge.cc 2013-10-04 00:32:47.000000000 +1200 @@ -90,10 +90,6 @@ // Initial revision // // -#if (defined(__GNUC__) || defined(__GNUG__)) && !defined(__clang__) -#pragma implementation -#endif - #include "squid.h" #include "util.h" diff -u -r -N squid-3.4.0.1/tools/purge/signal.cc squid-3.4.0.2/tools/purge/signal.cc --- squid-3.4.0.1/tools/purge/signal.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/signal.cc 2013-10-04 00:32:47.000000000 +1200 @@ -41,11 +41,6 @@ // Initial revision // // - -#if (defined(__GNUC__) || defined(__GNUG__)) && !defined(__clang__) -#pragma implementation -#endif - #include "squid.h" #include "signal.hh" diff -u -r -N squid-3.4.0.1/tools/purge/signal.hh squid-3.4.0.2/tools/purge/signal.hh --- squid-3.4.0.1/tools/purge/signal.hh 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/signal.hh 2013-10-04 00:32:47.000000000 +1200 @@ -55,16 +55,12 @@ #endif #if !defined(__cplusplus) -#if defined(__GNUC__) || defined(__GNUG__) -#pragma interface -#else #ifndef HAVE_BOOL #define HAVE_BOOL typedef int bool; #define false 0 #define true 1 #endif -#endif #endif /* __cplusplus */ #if 1 // so far, all systems I know use void diff -u -r -N squid-3.4.0.1/tools/purge/socket.cc squid-3.4.0.2/tools/purge/socket.cc --- squid-3.4.0.1/tools/purge/socket.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/socket.cc 2013-10-04 00:32:47.000000000 +1200 @@ -42,10 +42,6 @@ // Initial revision // // -#if (defined(__GNUC__) || defined(__GNUG__)) && !defined(__clang__) && !defined(__INTEL_COMPILER) -#pragma implementation -#endif - #include "socket.hh" #include #include diff -u -r -N squid-3.4.0.1/tools/purge/socket.hh squid-3.4.0.2/tools/purge/socket.hh --- squid-3.4.0.1/tools/purge/socket.hh 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/socket.hh 2013-10-04 00:32:47.000000000 +1200 @@ -45,16 +45,12 @@ #define _SOCKET_HH #if !defined(__cplusplus) -#if defined(__GNUC__) || defined(__GNUG__) -#pragma interface -#else #ifndef HAVE_BOOL #define HAVE_BOOL typedef int bool; #define false 0 #define true 1 #endif -#endif #endif /* __cplusplus */ #include diff -u -r -N squid-3.4.0.1/tools/purge/squid-tlv.cc squid-3.4.0.2/tools/purge/squid-tlv.cc --- squid-3.4.0.1/tools/purge/squid-tlv.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/squid-tlv.cc 2013-10-04 00:32:47.000000000 +1200 @@ -32,10 +32,6 @@ // Initial revision // // -#if (defined(__GNUC__) || defined(__GNUG__)) && !defined(__clang__) -#pragma implementation -#endif - #include "squid.h" //#include #include "squid-tlv.hh" diff -u -r -N squid-3.4.0.1/tools/purge/squid-tlv.hh squid-3.4.0.2/tools/purge/squid-tlv.hh --- squid-3.4.0.1/tools/purge/squid-tlv.hh 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/purge/squid-tlv.hh 2013-10-04 00:32:47.000000000 +1200 @@ -35,16 +35,12 @@ #define SQUID_TLV_HH #if !defined(__cplusplus) -#if defined(__GNUC__) || defined(__GNUG__) -#pragma interface -#else #ifndef HAVE_BOOL #define HAVE_BOOL typedef int bool; #define false 0 #define true 1 #endif -#endif #endif /* __cplusplus */ #include diff -u -r -N squid-3.4.0.1/tools/squidclient.cc squid-3.4.0.2/tools/squidclient.cc --- squid-3.4.0.1/tools/squidclient.cc 2013-07-29 10:46:02.000000000 +1200 +++ squid-3.4.0.2/tools/squidclient.cc 2013-10-04 00:32:47.000000000 +1200 @@ -211,7 +211,8 @@ main(int argc, char *argv[]) { int conn, c, len, bytesWritten; - int port, to_stdout, reload; + uint16_t port; + bool to_stdout, reload; int ping, pcount; int keep_alive = 0; int opt_noaccept = 0; @@ -245,8 +246,8 @@ localhost = NULL; extra_hdrs[0] = '\0'; port = CACHE_HTTP_PORT; - to_stdout = 1; - reload = 0; + to_stdout = true; + reload = false; ping = 0; pcount = 0; ping_int = 1 * 1000; @@ -292,7 +293,7 @@ break; case 's': /* silent */ - to_stdout = 0; + to_stdout = false; break; case 'k': /* backward compat */ @@ -300,11 +301,11 @@ break; case 'r': /* reload */ - reload = 1; + reload = true; break; case 'p': /* port number */ - sscanf(optarg, "%d", &port); + sscanf(optarg, "%hd", &port); if (port < 1) port = CACHE_HTTP_PORT; /* default */ break;