OpenConnect 8.20 release

David Woodhouse dwmw2 at infradead.org
Sun Feb 20 12:02:12 PST 2022


Well, that took a while. The 8.10 release was in May 2020, and we've
done quite a lot since then. With millions of people working from home
and relying on VPNs for remote work, we have received a great deal of
feedback, bug reports, feature requests, and new contributions in the
last 21 months.

Notable additions are:
 • Three new supported VPN protocols (Fortinet, F5 BigIP, and Array
   Networks)
 • Performance improvements on Linux, thanks to vhost-net and epoll
 • Important bugfixes for Juniper and Pulse
 • Compatibility with newer servers for Pulse, AnyConnect, and
   GlobalProtect protocols
 • IPv6 support for GlobalProtect
 • Numerous bugfixes and regular builds of the OpenConnect command-line
   application for Windows, including support for the Wintun driver,
 • Extensive improvements to the standard routing and DNS configuration
   scripts, particularly for IPv6 support and for *BSD and MacOS
   (https://gitlab.com/openconnect/vpnc-scripts)
 • Clearer error and logging messages, and improved documentation
   (https://www.infradead.org/openconnect)


The newly-supported Fortinet and F5 protocols are based on PPP. Yes,
the same Point-to-Point Protocol that you last thought about when you
used it for your dial-up Internet connection last millennium. It turns
out to underpin a number of proprietary VPN protocols. OpenConnect now
includes its own implementation of PPP, completely in userspace and
independent of pppd, which should enable us to easily support other
PPP-based protocols in the future.

In implementing support for Fortinet, we were particularly grateful for
the work of the Openfortivpn project (
https://github.com/adrienverge/openfortivpn), whose developers had
already figured out many aspects of the Fortinet protocol and had
implemented them as a wrapper around pppd.

Behind the scenes, we've greatly improved our test infrastructure and
test coverage as well. We're now relying more heavily on GitLab for
continuous integration and testing, and for issue reporting and code
contributions via merge requests.

You can see the complete changelog at 
https://www.infradead.org/openconnect/changelog.html

Multi-certificate support for AnyConnect is almost ready; the important
parts are merged but we just need to put the final pieces in place with
test cases. The other important thing coming up is SAML support for
various protocols. There will likely be a new release soon (a lot less
than another 21 months; maybe more like 21 days) with those features
merged, but it was about time we pushed *something* out for those users
who needed to use the fixes and compatibility improvements we already
had in the development tree.

Thanks to Daniel Lenski for writing most of this commit message, as
part of coaxing me to actually make the release at least :)

https://www.infradead.org/openconnect/download/openconnect-8.20.tar.gz
https://www.infradead.org/openconnect/download/openconnect-8.20.tar.gz.asc

Andreas Gnau (1):
      http: Allow passing header_cb to do_https_request

André Draszik (1):
      csd-wrapper: make it work again if binaries are compressed

Antonino Orlando (1):
      Add setCookie JNI method to LibOpenConnect.java

Ash Holland (1):
      Juniper: support password and 2FA fields in the same form

Daiki Ueno (3):
      Don't hard-code TSS 2.0 return codes for auth failure
      gnutls_tpm2_esys: Use Esys_Free instead of free
      gnutls_tpm2_esys: Mark globally defined templates as const

Daniel Lenski (382):
      explain why --form-entry shouldn't be used for passwords
      Merge branch 'explain_why_form_entry_should_not_be_used_for_passwords' into 'master'
      fix tncc_emulate.py with Python 3.7
      bugfix string/binary handling
      Merge branch 'fix_tncc_emulate.py_with_Python_3.7' into 'master'
      handle errors on initial TLS connection identically to subsequent reconnection
      don't switch to syslog logger until we're ready to background/daemonize
      Merge branch 'consistent_handling_of_initial_connection_errors' into 'master'
      Protocols should try explicitly request the same IP addresses on reconnect, since they will abort if new addresses are sent by the server.
      gpst.c should also return -EPERM when server changes IP address, not -EINVAL
      factor out check_address_sanity() from gpst.c and cstp.c, and use it in oncp.c and pulse.c as well
      add comment on openconnect__inet_aton(), which is not 100% compatible with "real" inet_aton()
      openconnect_make_cstp_connection should always set ssl_times.last_tx on successful connection
      Merge branch 'check_address_sanity' into 'master'
      enable csd-wrapper.sh/csd-post.sh to run insecurely (no cert validation) for compatibility with ancient cURL
      the -s/--silent option to cURL isn't related to cert validation; remove it from the PINNEDPUBKEY variable
      Merge branch 'enable_insecure_CSD_submission_for_ancient_cURL_versions' into 'master'
      fix CI
      Gitlab has CI images for Ubuntu 18.04, so let's include those too.
      re-add socket_wrapper and softhsm support to CentOS8 CI
      Merge branch 'fix_CI' into 'master'
      Merge branch 'hipreport' into 'master'
      fix duplicate bitfield constant
      Merge branch 'fix_duplicate_bitfield_constant' into 'master'
      Merge branch 'coverity' into 'master'
      Merge branch 'master' into 'master'
      bump emulated GlobalProtect version number
      changelog
      Merge branch 'bump_emulated_GlobalProtect_version_number' into 'master'
      Juniper unknown forms with action remediate.cgi seem to indicate TNCC/Host Checker failure: log error about this
      Merge branch 'Juniper_form_action_remediate.cgi_indicates_TNCC_failure' into 'master'
      style nitpicks, expand clarifying comment, changelog
      Merge branch 'token_input_in_second_password_in_Juniper_frmLogin' into 'master'
      add --allow-insecure-crypto, and corresponding API functions, to explicitly enable 3DES/RC4/SHA1
      modify tests/common.sh so that launch_simple_sr_server() → test → cleanup() can be used repeatedly in a single script
      add obsolete-server-crypto and pfs tests
      Merge branch 'explicitly_allow_3DES-CBC_for_GnuTLS' into 'master'
      GP: Fix the issue of a 0.0.0.0/0 "split"-include route by swapping the "split" route with the default netmask.
      add secure_cookie protocol field to suppress other protocols' cookies from --dump-http-traffic as well
      remove --no-cert-check from options list
      Add `./configure --enable-insecure-debugging` option.
      The resurrection of --no-cert-check was not met with universal acclaim
      bugfix: ensure vpnc-script receives TUNDEV even without -i option
      Merge branch 'add_secure_cookie_protocol_field' into 'master'
      Merge branch 'bugfix_TUNDEV' into 'master'
      finesse the URL-decoding of the GP login args
      Merge branch 'coverity' into 'master'
      Windows tuntap driver: accept modified ComponentId ('root\tap0901' instead of just 'tap0901')
      add delay_tunnel_reason and delay_close
      use delay_tunnel_reason for OC DTLS MTU detection and GPST ESP connection delays
      we should still try to cleanly close the session if tun device creation fails
      factor out print_connection_info()
      use setup_tun callback to defer printing connection status AND backgrounding until tun_is_up
      -b/--background: check for error when fork()ing
      reduce level of delay_tunnel/delay_close logging
      changelog
      less confusing output when authentication fails
      Merge branch 'less_confusing_output_when_authentication_fails' into 'master'
      GP: ask user to report unexpected value of <connected-gw-ip>
      Merge branch 'delay_tunnel_and_close' into 'master'
      Merge branch 'enable_insecure_debugging' into 'master'
      Merge branch 'GP_unexpected_value_of_connected-gw-ip' into 'master'
      Merge branch 'GP_demangle_default_route_as_split_route' into 'master'
      clarify some error messages which apply equally to TLS and DTLS sockets
      Merge branch 'GP_finesse_URL_decoding' into 'master'
      Merge branch 'clarify_some_error_messages_which_apply_equally_to_TLS_and_DTLS_sockets' into 'master'
      fix undefined pointer error from !143
      Merge branch 'bugfix_MR_143' into 'master'
      more logging around Trojan script invocation (CSD/HIP/TNCC)
      Merge branch 'more_logging_around_Trojan_script_invocation' into 'master'
      little bit more GP IPv6 support
      CSD XML tag and nostub are entirely protocol-specific and used in only one place
      GP: explicitly warn when server has a missing ESP configuration
      changelog
      Merge branch 'GP_IPv6_baby_steps' into 'master'
      include quit_reason in exit message
      tncc-emulate.py: add TNCC_USER_AGENT override variable
      Add `openconnect_get_auth_expiration` function to library and JNI
      implement `auth_expiration` for Pulse protocol
      Merge branch 'openconnect_get_auth_expiration' into 'master'
      add SIGUSR1 as trigger to print detailed connection information and stats
      defer the switch to syslog until AFTER the tunnel is fully up,
      changelog
      Merge branch 'tncc_override_user_agent' into 'master'
      Merge branch 'stats_and_connection_info' into 'master'
      Merge branch 'assign_privkey-bug' into 'master'
      Merge branch 'clobbered-loop-counter-bug' into 'master'
      only set OpenSSL security level to 0 when --allow-insecure-crypto is specified
      add openconnect__win32_setenv function to compat.c
      with --allow-insecure-crypto, additionally attempt to disable insecure systemwide minimum crypto settings
      in tests/obsolete-server-crypto, do not override GNUTLS_SYSTEM_PRIORITY_FILE when invoking OpenConnect
      update changelog with expanded scope
      Merge branch 'openssl-sec-level' into 'master'
      Pulse: one more known failcode (0x0e = client cert required)
      Juniper forms with 'id' but not 'name'
      Merge branch 'one_more_pulse_failcode' into 'master'
      allow specification of multiple certificate fingerprints on command-line via --servercert
      changelog
      Merge branch 'allow_multiple_servercert_arguments' into 'master'
      add pointer to vpnc-script repo to README
      Merge branch 'remove_protocol_specific_values_from_global_state_object' into 'master'
      changelog: more updates since v8.10
      Try to generate static website using GitLab pages
      static website tweaks
      add openconnect_disable_dtls() API function
      ensure that openconnect_disable_{dtls,ipv6} do nothing if vpninfo has ever been connected
      return EPERM, not EINVAL, when GP gateways reject the cookie upon get-config or GET-tunnel
      fix potential read overflow in compat.c replacement for strndup()
      add .gitattributes file to mark binaries
      Merge branch 'potential_read_overflow_in_openconnect__strndup' into 'master'
      Merge branch 'add_DTLS_disable_to_API' into 'master'
      bugfix: condition for incomplete ESP config with GP was inverted
      Merge branch 'fix/field-instead-of-global' into 'master'
      Merge branch 'fix/tncc-exception' into 'master'
      cstp: don't send X-AnyConnect-Platform header
      add changelog entry
      add changelog entry
      Merge branch 'jkuebart:fix/forms-without-action'
      MingW32 builds: generate NSIS installers for Windows
      NSIS installer: add compression, installer file properties, and docs
      include vpnc-script-win.js in installer
      add note about existence of installers in packaging docs
      remove unneeded inc/* and openconnect.8.inc from public/HTML docs
      create make-windows-installer.sh
      remove unneeded inc/* and openconnect.8.inc from public/HTML docs
      Merge branch 'master' into build_NSIS_based_installers_for_32bit_Windows
      fix pfs and obsolete-server-crypto tests on Ubuntu
      set OCCTL_SOCKET in tests/common.sh, if unset
      remove now-unneeded make-windows-installer.sh, re-embed vpnc-script-win.js, embed OpenVPN TAP-Windows installer
      Merge branch 'master' into build_NSIS_based_installers_for_32bit_Windows
      CI: update artifact paths for MinGW* builds
      add link to online documentation, put TAP-Windows in named section, and… changelog
      make buf_append_{be16,be32,le16} global
      oncp_control_queue → tcp_control_queue
      auth-juniper.c simplifications (including ignoring submit_button if NULL)
      add 'nullppp' protocol for testing
      add OC_PROTO_HIDDEN and use this to hide nullppp from protocols displayed or shown by openconnect_get_supported_protocols
      add ppp-over-tls tests (with pppd as the reference peer implementation)
      Fix three sanitizer complaints
      more accurate PPP-over-TLS MTU calculation
      improve ppp-over-tls tests
      give nullppp the option of cancelling/terminating itself after negotation
      CI: re-enable PPP tests for CentOS7, Fedora, and Ubuntu
      fix nakbuf leak
      clarify un-HDLC logging a bit
      unset delay_tunnel_reason as soon as PPP reaches network state
      automatically disable pppd tests if socat or pppd are missing
      factor out internal_get_url function
      ppp: add comment about likely meaninglessness of server's LL IPv6 address
      split htmlnode_next and htmlnode_dive
      ppp-over-tls tests: try to keep CentOS 6 CI working, and improve flaky startup of pppd
      factor out internal_split_cookies from auth-juniper.c
      ppp-over-tls test: figured out how to make socat invoke pppd
      allegedly universal MTU calculator: use for GPST and PPP
      ppp-over-tls tests: /etc/ppp script permissions problems
      add openconnect__strchrnul function to compat.c
      ppp-over-tls tests: more comments about how hard it is to use pppd as a test fixture
      fix <select>/<option> parsing bug
      ppp-over-tls tests: give up on CentOS 6
      Juniper: bugfix handling of loginForm.VerificationCode
      ppp-over-tls tests: fix PPP-over-IPv6 tests on Ubuntu
      use check_address_sanity for F5 too
      add test-f5-login.py script
      F5: implement f5_obtain_cookie
      F5: one of the GET requests in login flow appears unnecessary
      F5: fix old options leak on reconnect
      F5: pause-and-reconnect doesn't preserve IP addresses if we PPP-terminate
      add test-fortinet-login.py
      hard-code browser UA into test-fortinet-login.py
      parse real Fortinet config
      Fortinet: set HTTP user-agent to 'Mozilla/5.0 SV1' as openfortivpn does
      Fortinet: ignore 401/403 response to remote/index request
      Fortinet: explain to the user if connecting to an ancient server that doesn't support XML config
      Fortinet: socket switches abruptly from HTTP request to encapsulated PPP, with no HTTP-ish response
      Fortinet does not use HDLC framing
      Fortinet: server rejects asyncmap and header compression options
      Fortinet: note divergences of header values from openfortivpn, and absence of DTLS support
      Fortinet: implement auth_expiration
      Fortinet: remove unused function
      Fortinet: assume default route if no split routes received
      implement fortinet_obtain_cookie
      official Forticlient doesn't 'GET /remote/index', so let's not
      simpler fortinet_obtain_cookie()
      attempt to implement Fortinet challenge-based 2FA (ping #225)
      Fortinet: parse <split-dns> domains and DNS servers from config
      Fortinet's realm parameter comes from the URL-path
      add openconnect__strchrnul function to compat.c
      cleanup and clarify comments about tests that are XFAIL in CI
      add auth-fortinet tests
      add auth-f5 tests
      make F5 and Fortinet tests go through config-pulling (up to the point of tunnel connection), rather than stopping after authentication
      Fortinet: fix crash caused by absence of redirect
      Fortinet: fix token code generation
      turns out F5 can have an authgroup dropdown
      rename (resp_buf, form_buf) → (req_buf, resp_buf) in f5.c and fortinet.c
      test multi-domain logins in F5 tests
      F5: factor out plain_auth_form()
      don't require F5 forms other than first one to have any particular name/ID
      I do believe a changelog addition is in order
      flask-based tests: give up on CentOS7
      bugfix !165 Juniper forms handling
      main.c CLI: replace confusingly-used `FILE *pid_fp` with `int wrote_pid`
      fix openconnect_disable_dtls / --no-dtls
      bugfix internal_get_url
      add fake-juniper-server.py and tests/juniper-auth
      add test path including frmSelectRoles
      make --authgroup fill EITHER the role and/or the realm for Juniper
      Merge branch 'juniper-auth-tests' into 'juniper-auth-tests'
      Use oc_text_buf for internal_get_url()
      Add note-to-self comments about DTLS for F5/Fortinet
      Expand F5 and Fortinet documentation
      Multi-protocol support documentation
      Update README.md (developer-facing docs on GitLab)
      Reference F5 and Fortinet support in manual page
      Set Fortinet DPD interval from server's config
      Remove attempt_period from protocol-specific udp_setup() functions
      Accept IPv6 netmasks like /dead:beef::, in addition to /N
      Update 'Getting Started / Connecting' docs
      NC/Pulse idle timeout
      Parse Pulse error/termination packets and print error codes and strings
      Add changelog entry
      Fix logout and options requests in fake-f5-server.py
      Don't call connection script in ssl_reconnect if tunnel is not up
      Handle F5 split-exclude routes
      Pulse should fallback to Juniper logout
      Fix missing newlines in ssl_nonblock_{read,write}() error message
      Speculatively enable no_terminate_on_pause for Fortinet
      Fix f5-auth-and-config tests not to depend on cookies
      Add start_dtls_anon_handshake() for PPP protocols
      Split fortinet_configure() from fortinet_connect() to prepare for DTLS
      Fortinet: don't keep retrying if cookie is invalid on reconnect
      Add Fortinet DTLS support
      Merge branch 'nc_pulse_idle_timeout' into 'master'
      GlobalProtect IPv6 support
      Make CLI print IPv6 address correctly
      Reduce noisy logging of GlobalProtect IPv6 config tags
      Warn if <quarantine> is set in GlobalProtect XML config
      Add GlobalProtect IPv6 to docs and changelog
      F5, Fortinet: ignore errors in landing page once we've got a cookie
      Fix Fortinet IPv6 config and add tests for it
      Fix sloppy cookie construction for Fortinet
      Split ESP checksum functions into csum_partial and csum_finish
      Log address family of ESP packets sent/received
      GP config: hush warning about unknown <quarantine>no</quarantine>
      Add IPv6/ICMPv6 header and flags to win32-ipicmp.h
      GlobalProtect IPv6 ESP support
      Add fake-gp-server.py and gp-auth-and-config test
      Consolidate check_http_status from gpst.c and ppp.c
      GP auth: don't modify URL path if it ends with .esp
      Add tests of GlobalProtect auth with gateway selection and challenge-based 2FA
      GP: fix bug in blind retry of login credentials after portal-to-gateway redirect
      GP: Pass 'preferred-ipv6' parameter among auth requests, just like 'preferred-ip'
      Replace all use of inet_ntoa() with inet_ntop()
      Keep comments next to live code in fortinet.c
      Improve Fortinet auth
      Bugfix GlobalProtect ESP magic pings over Legacy IP
      Print an error message if dtls_addr is NULL in dtls_setup()
      Clarify 'Certificate Validation Failure' error from Cisco servers
      Fix handling of concatenated PPP data packets
      Rename oncp_rec_size → partial_rec_size
      Fix PPP packets split across TLS records
      Fix Fortinet realm name extraction
      Mark obsolete-server-crypto test as XFAIL in Fedora/GnuTLS/* CI
      Don't save `portal-*cookie` values if they're "empty"
      Receiving a portal-*cookie should allow us to automatically retry the login on the gateway
      Add tests of using portal-userauthcookie to continue through gateway
      Update changelog
      Mark juniper-sso-auth test as using LD_PRELOAD
      Docs should link to Gitlab as the main repository for vpnc-script and vpnc-script-win.js
      Follow disable_ipv6 for Pulse and Fortinet
      PPP: Replace no_terminate_on_pause flag with terminate_on_pause flag
      Cleanup fortinet-auth-config
      Fortinet requires us to check for an HTTP error response only over TLS
      More complete comment about issues with proxies in connection phase
      Assume that a 'portal-*cookie' will allow us to bypass gateway SAML
      Merge branch 'https' into 'master'
      Fix typo and clarify openconnect_get_connect_url comment slightly
      Update documentation for the --authenticate option
      With --user, enter username in all forms, not just the first
      Update changelog
      Merge branch 'automatically_enter_username_into_all_forms' into 'master'
      Encourage use of csd-post.sh, and discourage use of csd-wrapper.sh
      Use sysctl to un-disable IPv6 for all CI runs where PPP tests are enabled
      Mark sync/no-HDLC PPP tests as XFAIL for all CI images
      Verify that TPMv2 startup tools are present in order to enable auth-swtpm tests
      Merge branch 'ci' into 'master'
      Merge branch 'tests_trailing_space' into 'master'
      Use more idiomatic super().__init__() in html.py
      Only remove ERR_GET_FUNC for OpenSSL v3.0 and newer
      Merge branch 'ERR_GET_FUNC_OpenSSL_3.0' into 'master'
      Merge branch 'lgtm' into 'master'
      Merge branch 'ERR_GET_FUNC_OpenSSL_3.0' into 'master'
      Merge branch 'flake8' into 'master'
      Use hostname as Wintun ifname (if ifname not specified)
      Remove TAP-Windows driver from installer, and update docs to reference Wintun's default inclusion
      Distinguish ERROR_ACCESS return value from create_wintun()
      Check vpnc-script exit status on all platforms including Windows
      Don't set Legacy IP address on Windows tunnel interface within OpenConnect itself
      Add check_address_conflicts() to tun-win32.c
      Try to delete-and-reclaim IP addresses from down interfaces
      Update changelog to reflect Wintun and vpnc-script-win.js improvements
      Provide the vpnc-script with our PID (as $VPNPID)
      Merge branch 'set_VPNPID_for_vpnc_script' into 'master'
      Merge branch 'wintun_doc_and_naming_tweaks' into 'master'
      Merge branch 'deepsource' into 'master'
      Fix missing newline in Windows error message
      Annotate vpnc-script-win.js with a header documenting its exact source revision
      Merge branch 'wintun-0.13' into 'master'
      bugfix openconnect__strchrnul function in compat.c
      Dump initial oNCP negotiation request if --dump-http-traffic is specified
      Add links to latest Windows builds to www/packages.html and README.md
      Attempt to determine whether Fortinet server really supports reconnect-after-drop (without reauth)
      Do request "ancient HTML config" in order to distinguish truly-ancient Fortinet servers from some reconnection problems
      Enable Fortinet DPD even if server doesn't say that reconnect-after-drop is allowed
      Merge branch 'refine_Fortinet_reconnect_and_DPD' into 'master'
      Update documentation on state of Fortinet reconnects
      Add flag to allow do_http_request() to return the server response body even on error
      Add support for Fortinet's HTML-type multi-factor authentication
      Test both tokeninfo- and HTML-based MFA challenges for Fortinet
      Merge branch 'Fortinet_HTML_form_based_MFA' into 'master'
      Merge branch 'python3' into 'master'
      Merge branch 'discourage_use_of_csd-wrapper.sh' into 'master'
      Merge branch 'vpn_progress_n' into 'master'
      Avoid code duplication in www/html.py
      Re-add TAP-Windows driver to installer, and update docs to reference its inclusion
      Merge branch 'revert_to_using_TAPWindows_by_default' into 'master'
      Fix missing protocol flag for Juniper NC
      Fix/update comments in fake-*-server.py scripts
      If oNCP negotiation response is a redirect, cookie is invalid
      Juniper/NC ESP rekey fix
      Add changelog entry
      The option '--force-dpd' should be followed even if the server specifies a lesser DPD interval
      Update documentation of --force-dpd to reflect its new behavior
      Merge branch 'repeat' into 'master'
      Bugfix F5 'plain' login form
      Refuse to handle forms without ->auth_id (but do it in the right place, and noisily)
      Merge branch 'fix_F5_plain_auth_form' into 'master'
      Update changelog
      Merge branch 'csd-wrapper-compressed' into 'master'
      Merge branch 'm4' into 'master'
      Merge branch 'force_dpd_even_if_greater_than_server_interval' into 'master'
      openconnect_set_reported_os should reject illegal values
      When running on Windows, the default OS value should be 'win'
      Merge branch 'reject_bogus_OS_names' into 'master'
      Merge branch 'wintun-0.10.2-0.13' into 'master'
      .mailmap update
      dumb_socketpair(): try to use AF_UNIX socketpair on Windows 10 and newer
      dumb_socketpair(): generate named socket path more carefully
      dumb_socketpair(): fallback from AF_UNIX to AF_INET if AF_UNIX fails
      dumb_socketpair(): Try a whole series of plausible temporary/writable directories for AF_UNIX sockets
      Update changelog
      Merge branch 'Windows_10_has_AF_UNIX_socket' into 'master'
      Merge branch 'windows_ctrl_signal_handler' into 'master'
      Fix dumb_socketpair() comments
      Fix changelog links/labels
      Remove unnecessarily repeated IPv6-enablement in .gitlab-ci.yml
      Change library ordering when testing for library availability with autoconf
      Cleanup whitespace in all human-maintained files
      Build docs should mention that ./configure looks for vpnc-script in TWO places
      Update "Contributing" docs
      The GitLab repo is more than an "experiment" at this point
      Add new documentation on how to observe/MITM VPN clients
      Remove the 'verbose' global variable
      Pass verbosity level in vpnc-script environment as LOG_LEVEL
      Update changelog
      Mention other Windows vpnc-script improvement MRs in changelog
      Merge branch 'pass_LOG_LEVEL_to_vpnc_script' into 'master'
      Merge branch 'master' into 'master'
      Merge branch 'doc_updates' into 'master'
      Fix memory leak in pulse.c
      Update changelog
      Merge branch 'pulse-config-on-9.1' into 'master'
      Pulse IPv6 is now known to work on real-world servers
      Remove already-disabled code copied from oncp.c into pulse.c
      Mention that some Pulse VPNs need to spoof official UA/OS to make IPv6 work
      Print Pulse server's IPv6 internal gateway address (in addition to Legacy IP)
      Mention support for DTLSv1.2 in F5 BIG-IP v16 or newer
      Print warning if Fortinet server doesn't indicate support/no-support for reconnect-after-drop
      Clarify Fortinet no-valid-cookie error paths
      Merge branch 'pulse_IPv6_docs' into 'master'
      In dumb_socketpair(), delete Unix-domain socket path once no longer needed
      Merge branch 'tmp-fedora35' into 'master'

David Overton (2):
      Bugfix Legacy IP split include/exclude routes for Pulse
      Pulse: handle 0x2e20f000 main configuration packet

David Woodhouse (221):
      Fix COPR release builds for mingw-openconnect
      Work around SoftHSM lockup in CI
      Remove Fedora updates-testing packages now pushed to stable
      Update packages documentation
      Run Coverity only in openconnect/openconnect repo
      Check for Signed-off-by: in CI
      Merge branch 'add_set_cookie' of gitlab.com:randymoss/openconnect
      Fix Signed-off-by CI check
      Add basic NSIS installer
      Drop web page handling
      Fix pfs test for out-of-tree builds
      Fix up string handling for ciphersuite_config
      Add obsolete-server-crypto to XFAIL tests in Fedora package
      Add makensis to mingw COPR builds
      Fix obsolete-server-crypto in the GnuTLS build not the OpenSSL one.
      Fix up NSIS ProductVersion for RPM version strings
      Actually create installer packages for MinGW builds
      Merge branch 'handle_GP_cookie_rejected_errors' of gitlab.com:openconnect/openconnect
      Fix Win32 build warnings about _putenv_s() redeclaration
      Fix Windows build warning: No %zd for size_t on Windows
      Merge branch 'no_more_X-AnyConnect-Platform_header' of gitlab.com:openconnect/openconnect
      Fix non-Windows compilation. I hate autoconf.
      Update translations from GNOME
      Resync translations with sources
      Cast GetVolumeInformationByHandleW to (void *)
      Fix printf types in stats output
      add support for PPP-based protocols
      First attempt at F5 support
      Add basic attempt at Fortinet support
      Turn off -Wdeclaration-after-statement and allow C99
      Fix handling of downloaded files
      Include wintun dll in installer
      Fix installer deps
      Merge branch 'pre_PPP_cross_protocol_bits' of gitlab.com:openconnect/openconnect
      Merge branch 'ppp_core' of gitlab.com:openconnect/openconnect
      Fix build warnings
      Merge branch 'add_f5_and_fortinet' of gitlab.com:openconnect/openconnect
      Merge branch 'master' of gitlab.com:openconnect/openconnect
      Add basic docs for (or at least admit the existence of) f5/fortinet
      Resync translations with sources
      Import translations from GNOME
      Add Wintun support
      Fix output redirection under Windows
      Fix stray close paren in changelog
      Fix key filename mangling in auth-certificate test
      Fix test paths for out-of-tree builds
      Use out-of-tree builds in CI
      Fix Juniper auth tests for out-of-tree builds
      Merge branch 'juniper-auth-tests' of gitlab.com:openconnect/openconnect
      Fix link to Jailbreak
      Revert "www: updated links to vpnc-script"
      Update main web page
      Add 'proto' integer value to struct vpn_proto
      Fix --disable-ipv6 option
      Fix CI artifact list for out-of-tree builds
      Fix memory leak in F5 config parsing
      Avoid free of argv[] when ciphersuite_config provided
      Handle empty response buf in process_http_response()
      Fix DTLS MTU probe timeouts
      Fix -EAGAIN on writing DTLS socket for PPP mainloop
      Fix leak of ppp structure on reconnect
      Remove Cisco-specific option handling from dtls_setup()
      Consolidate the various add_option() functions
      Fix leak of simulated F5 netmask options
      Add DTLS support to ssl_nonblock_read() / ssl_nonblock_write()
      Factor out openconnect_install_ctx_verify() for OpenSSL
      Fix timeout handling for DTLS handshake retries
      Add DTLS_ESTABLISHED state
      ppp: Clean up negotiated IP/DNS option handling
      Implement ppp_reset()
      Split out core ppp_mainloop() and add basic DTLS support to it
      Fix handling of lost TERMACK
      Add full DTLS support for PPP
      Add F5 DTLS support
      Ignore errors fetching NC landing page if auth was successful
      Rework cstp_options and ip_info handling
      Merge branch 'master' of gitlab.com:openconnect/openconnect
      Add IPv6 support for Fortinet
      Only set ip_info addresses from PPP if they aren't already set
      Abort if PPP transport is closed in PPPS_ESTABLISH
      Abort when install_vpn_options() fails
      Don't fetch legacy Fortinet config
      Attempt to allow Fortinet reconnect over TCP
      Ensure pulse_connect() can never attempt to monitor fd -1
      Fix potential memory leaks in ppp.c
      Fix potential leak of 'domains' in parse_fortinet_xml_config()
      Fix potential NULL dereference in Java example code
      Partial fix for Fortinet auth
      Fix Juniper role select form to have an auth_id too
      Refuse to handle forms without ->auth_id
      Fix EXTRA_DIST to include all $(POTFILES)
      Fix setting of IP addresses in ip_info from PPP
      DTLS: Don't require secure renegotiation from Cisco
      Add OPENSSL_SUPPRESS_DEPRECATED
      openssl: Add SSL_OP_LEGACY_SERVER_CONNECT to allow-insecure-crypto
      Merge branch 'do_not_use_inet_ntoa' of gitlab.com:openconnect/openconnect
      Merge branch 'add_GP_flask_tests' of gitlab.com:openconnect/openconnect
      Fix DTLS state reporting
      Use BIO_dgram for OpenSSL DTLS
      Import json-parser library
      json: Fix undefined behaviour when converting integer to double
      json_parse_ex: Remove redundant assignment to unused 'b'.
      Initial shell of Array Networks SSL VPN support
      Add hackish array auth
      Start to implement config parsing for Array
      Implement DTLS support for Array
      Add documentation for array protocol, remove HIDDEN flag
      Only require json-parser for Fedora packages, not EPEL
      Fix Coverity complaints about array.c
      kill redundant free_certs argument to GnuTLS assign_privkey() function
      GnuTLS: Start to factor out load_certificate() for reuse
      Move cert/sslkey/cert_password into a 'struct cert_info'
      GnuTLS: Pass certinfo into load_certificate() and subordinate functions
      OpenSSL: Pass certinfo through load_certificate() functions
      GnuTLS: Extend certinfo to callbacks
      GnuTLS: Split out free_gtls_cert_info()
      GnuTLS: Really only install certs from load_primary_certificate()
      GnuTLS: Move TPMv1 context to certinfo
      GnuTLS: Move TPMv2 context to certinfo
      OpenSSL: Factor out load_certificate() from load_primary_certificate()
      OpenSSL: Fix user-visible strings and dialog auth_id for multicert
      GnuTLS: Fix user-visible strings and dialog auth_id for multicert
      tss2-esys: Don't try password for TPM2 keys with emptyauth set
      Tell TPMv2 the hash type based on size
      Support TLSv1.3 sign functions on SECP curves with TPMv2
      Allow TSS2 library to be chosen by --with-gnutls-tss2
      Add IBM TSS CI build on Fedora
      Implement RSA-PSS padding for TPMv2
      Resync translations with sources
      Update translations from GNOME
      Allow TPM_INTERFACE_TYPE=socsim to force swtpm even for Intel TSS
      Add tests for TPMv2 with both swtpm and hardware
      Add swtpm-tools to COPR build too, to enable auth-swtpm test
      Disable swtpm testing for ancient Fedora/EPEL
      Add NIST P384 curve to swtpm tests
      Actually add P384 files so they aren't generated locally
      Update TPMv2 documentation a little, add changelog for TLSv1.3 and swtpm
      Update translations from GNOME
      Update translations from GNOME
      Add openconnect_get_connect_url(), use it in --authenticate output
      GnuTLS: Refactor test sign/verify loop over available digests
      Add line length argument to buf_append_base64()
      Move oc_text_buf functions out to textbuf.c for easier unit testing
      Limit oc_text_buf to 16MiB, start adding test cases
      Fix fallback/big-endian store_le16() and store_le32()
      Fix buftest to build on Windows
      Update translations from GNOME
      Don't leak memory in buftest
      Validate line_len argument to buf_append_base64() too
      Fix first line length in buf_append_base64()
      Add more buf_append_base64() tests... and fix it.
      Fix store_le16/store_le32 harder
      Fix MinGW CI build to use their own docker images, now we have them.
      Increase SO_SNDBUF on UDP socket
      Add Android CI builds
      Bump Android dependencies
      Fix out-of-tree builds with ASAN
      Merge branch 'clarify_Certificate_Validation_Failure_error' of gitlab.com:openconnect/openconnect
      Fix static-analyzer CI builds
      Merge branch 'obsolete_http_configuration' of gitlab.com:DimitriPapadopoulos/openconnect
      Merge branch 'chmod-x_tun-win32.c' of gitlab.com:DimitriPapadopoulos/openconnect
      Revert "with --allow-insecure-crypto, additionally attempt to disable insecure systemwide minimum crypto settings"
      Disable ASAN tests for now
      Unconditionally bypass system crypto policy
      Add changelog for system policy disable
      Remove reference to --allow-obsolete-crypto bypassing policies
      Use https://www.infradead.org/openconnect/download/ URLs
      Switch to https for all URLs
      Update translations from GNOME
      Support non-AEAD ciphersuites in DTLSv1.2 with GnuTLS
      Offer OpenConnect-specific DTLSv1.2 AEAD suites with OpenSSL again
      Add +SIGN-ALL to GnuTLS DTLS ciphersuite configs
      We can admit that the FTP site exists too.
      Merge branch 'server' into 'master'
      Merge branch 'recognise' into 'master'
      Update translations from GNOME
      Fix Yubikey/Android PBKDF2 bug URLs
      Merge branch 'assert' into 'master'
      Merge branch 'm4' into 'master'
      Merge branch 'include' of gitlab.com:DimitriPapadopoulos/openconnect
      Merge branch 'yubi' of gitlab.com:DimitriPapadopoulos/openconnect
      Merge branch 'lzo' of gitlab.com:DimitriPapadopoulos/openconnect
      Stop polling cmd_fd while busy
      Add alloc_pkt() and free_pkt() helpers
      Reuse packets
      Merge branch 'vpnc-script_s' into 'master'
      Merge branch 'update_authenticate_docs_for_RESOLVE_and_CONNECT_URL' into 'master'
      Merge branch 'small_PPP_fixes' into 'master'
      Merge branch 'obey_IPv6_in_Pulse_and_Fortinet' into 'master'
      Merge branch 'suspect_code_indent' into 'master'
      Merge branch 'vpnc-script_links_on_GitLab' into 'master'
      Merge branch 'rondom-do-https-request-header-cb' into 'master'
      Merge branch 'GP_portal_to_gateway_auth_with_cookies' into 'master'
      Use epoll() instead of select()
      Merge branch 'epoll' of gitlab.com:openconnect/openconnect
      Merge branch 'include' into 'master'
      Merge branch 'linux_kernel_coding_style' into 'master'
      Fix epoll support for connection pause/restart
      Add SIGUSR2 to dtls-psk test
      Clear epoll_fd after forking to background self
      Stop accepting DTLS packets when the queue is full
      Initial vhost-net support
      Use vhost for dtls-psk and sigterm tests
      vhost: Avoid TX queue when writing directly is faster
      vhost: Add USED_EVENT and AVAIL_EVENT macros
      Fix double close of vhost_fd on error
      Check eventfd read/write returns
      Tweak vhost ring handling to stop Coverity thinking we leak packets
      Reads from the vhost_call_fd do return -EINTR when we loop multiple times
      Fix RSA-PSS padding with SHA384 for TPMv2 keys
      Do not truncate RSA-PSS salt length for small keys
      Make all cert rules order-only
      Merge branch 'codespell' into 'master'
      Update translations from GNOME
      Update translations from GNOME
      Merge branch 'wip/dueno/tss2-rc' of gitlab.com:dueno/openconnect
      Update translations from GNOME
      Resync translations with sources
      Avoid printing spurious ENOENT error from EPOLL_CTL_DEL
      Fix EXTRA_DIST for ocserv config files
      Tag version 8.20

Dimitri Papadopoulos (107):
      Better document obsolete code and why we keep it
      chmod -x
      ise → ize
      New option to define server name in config file
      Remove assert
      http:// -> https://
      Update m4 files
      Get rid of trailing spaces
      Remove duplicate includes
      Further fix Yubikey/Android PBKDF2 bug URL
      Latest version of lzo.c
      Merge branch 'trailing_spaces' into 'master'
      Fix URL of repository of vpnc-script
      Fix suspect code indent
      Fix bad function definition
      Fix open brace '{' following function definition
      Fix Linux kernel coding style errors and warnings
      Reorganize #include
      Fix Linux kernel coding style warning
      Merge branch 'STATIC_CONST_CHAR_ARRAY' into 'master'
      Fix Linux kernel coding style error
      Merge branch 'POINTER_LOCATION' into 'master'
      Fix Linux kernel coding style warning
      Merge branch 'ARRAY_SIZE' into 'master'
      Fix Linux kernel coding style warning
      Merge branch 'SPACE_BEFORE_TAB' into 'master'
      Fix Linux kernel coding style warning
      Merge branch 'REPEATED_WORD' into 'master'
      Fix Linux kernel coding style error
      Merge branch 'INLINE_LOCATION' into 'master'
      Fix Linux kernel coding style error
      Merge branch 'OPEN_BRACE' into 'master'
      Fix Linux kernel coding style warning
      Merge branch 'SUSPECT_CODE_INDENT' into 'master'
      Fix Linux kernel coding style warning
      Merge branch 'EMBEDDED_FUNCTION_NAME' into 'master'
      Fix Linux kernel coding style error
      Merge branch 'MULTISTATEMENT_MACRO_USE_DO_WHILE' into 'master'
      Fix Linux kernel coding style error
      Merge branch 'COMPLEX_MACRO' into 'master'
      Fix Linux kernel coding style warning
      Merge branch 'RETURN_VOID' into 'master'
      Fix Linux kernel coding style error
      Merge branch 'SWITCH_CASE_INDENT_LEVEL' into 'master'
      Fix Linux kernel coding style warning
      Merge branch 'DEFAULT_NO_BREAK' into 'master'
      Fix Linux kernel coding style warning
      Merge branch 'SPLIT_STRING' into 'master'
      Fix Linux kernel coding style warning
      Merge branch 'SINGLE_STATEMENT_DO_WHILE_MACRO' into 'master'
      Fix typo from 275d838
      Fix Linux kernel coding style warning
      Merge branch 'LINE_CONTINUATIONS' into 'master'
      Merge branch 'ooops' into 'master'
      Fix Linux kernel coding style warning
      Fix Linux kernel coding style error
      Shut static analyser up
      Merge branch 'INITIALISED_STATIC' into 'master'
      Merge branch 'DeviceIoControl_TAP_IOCTL_GET_VERSION' into 'master'
      Mark auth-swtpm test as XFAIL on Fedora/OpenSSL and Fedora/OpenSSL/clang
      Typos caught by codespell
      Build with OpenSSL 3.0 beta 2 Release Candidate
      Remove spurious trailing space
      LGTM warning: Unnecessary pass
      LGTM recommendation: Unused import
      LGTM recommendation: Unused import
      LGTM error: Missing call to `__init__` during object initialization
      LGTM recommendation: Unused local variable
      Build with OpenSSL 3.0 beta 2 Release Candidate
      Typos caught by codespell
      Merge branch 'codespell' into 'master'
      Flake8 errors and warnings
      Document --force-trojan as available on _WIN32
      LGTM recommendations: Except block handles 'BaseException'
      Nuke tabs in Python
      Wintun 0.10.2 (2021-02-16) → 0.13 (2021-08-02)
      Fix DeepSource alert
      Fix DeepSource alert
      Fix DeepSource alert
      Fix DeepSource alert
      This is a Python 3 script
      Fix DeepSource alert
      Fix DeepSource alert
      Fix DeepSource alert
      Fix DeepSource alert
      Fix DeepSource alert
      Add missing '\n' to vpn_progress() messages
      Remove extra '\n' from a vpn_perror() message
      Resync translations with sources
      These are Python 3 scripts
      Remove repeated words from documentation
      AC_CONFIG_MACRO_DIRS
      AC_LANG_C → AC_LANG([C])
      AC_PROG_LIBTOOL → LT_INIT
      Fix Windows installer so that it uninstalls cleanly
      Fix grammar/typos in comments and diagnostic messages
      AC_ERROR → AC_MSG_ERROR
      Load wintun.dll from the application directory only
      Follow Wintun example to the letter (versions 0.10.2 or 0.13)
      Windows: fix instability with Wintun as tunnel device driver
      Latest version of vendored dumb_socketpair()
      Option --version prints default script location
      Add jq as a build dependency to fix COPR builds
      Print detailed error information when opening cmd pipe/socketpair fails
      Use ARRAY_SIZE(array) macro instead of hard-coded sizeof(array)/N
      Fix typos not found by codespell
      html.py must run with either Python 2 or 3 to support COPR builds

Elias Norberg (1):
      Always set security level to 0 for openssl versions >= 1.1.0

Ivan Afonichev (1):
      Absolute redirect with '://' in URL param should be valid

Joachim Kuebart (10):
      fix: use field instead of global variable
      fix: support forms without "action"
      fix: keep going when forms have only hidden fields
      feat: support Microsoft SSO
      nit: silence deprecation warning
      fix: don't raise when TNCC_CERTS is unset
      add juniper-sso-auth test: add unit test for Azure MFA SSO
      fix: fix Juniper Azure SSO login
      fix: generalise check for user name field
      fix: add missing licence to fake-tncc.py.

Joerg Mayer (1):
      Add HAVE_EPOLL check to fix macOS build failure

Justin Kendrick (1):
      Add missing files to tarball for win32 build

Kevin Yue (1):
      Pass the `portal-*cookie` values received in the portal config to the gateway login

Luca Boccassi (1):
      libopenconnect: add public interface stubs for SAML support

Lukáš Karas (3):
      setup default port 443 in openconnect_vpninfo_new
      remove port setup in ssl connect
      check that port is in valid range

Nikos Mavrogiannopoulos (46):
      Fixed failing tests
      .mailmap: set gmail as primary email of Nikos
      .gitlab-ci.yml: fix on fedora32
      gnutls: try multiple hashes when checking for pub/priv key match
      .gitlab-ci.yml: updated to fedora33
      Merge branch 'tmp-fix-tests' into 'master'
      .gitlab-ci.yml: run coverity weekly with a scheduled run
      .gitlab-ci.yml: use prebuilt images from project's registry
      www: updated links to vpnc-script
      windows builds: run the right openconnect executable
      Merge branch 'tmp-link-vpnc-script-gitlab' into 'master'
      Merge branch 'tmp-use-presaved-images' into 'master'
      Merge branch 'vpninfo-port' into 'master'
      .gitlab-ci.yml: use centos8 build for coverity
      Merge branch 'Windows_tuntap_fix_196' into 'master'
      Free memory obtained from openconnect_get_peer_cert_DER
      .gitlab-ci.yml: added address and undefined sanitizer runs
      main: avoid unnecessary memory copy (and leak)
      Merge branch 'tmp-add-ubsan-asan' into 'master'
      .gitlab-ci.yml: added clang's static analyzer
      parse_hex: avoid zero length allocation
      run_hip_script: made error handling consistent
      process_http_response: avoid memory leak
      cleanup_gssapi_auth: avoid null pointer dereference
      start_cstp_connection: avoid unused assignment
      do_https_request: removed unused assignment
      parse_prelogin_xml: removed unnecessary initialization
      dtls_detect_mtu: removed unnecessary initialization
      buf_tlv: corrected TLV decoding
      append_compr_types: removed unnecessary assignment
      decrypt_stoken: avoid code without side effects
      oncp_connect: bail on error
      process_http_response: removed default error code
      oncp_connect: avoid code without side-effects
      openconnect_set_token_mode: propagate error code
      gnutls: removed unused assignments, and use gnutls_calloc()
      ntlm_manual_challenge: initialize hash to zero
      internal_parse_url: fix memory leak
      Merge branch 'tmp-add-scan-build' into 'master'
      dtls-psk: use ping -6 to ping an ipv6 address
      .gitlab-ci.yml: CentosOS7/OpenSSL: mark failing test as XFAIL
      Merge branch 'tmp-fix-centos7-failure' into 'master'
      .gitlab-ci.yml: build on fedora35
      .gitlab-ci.yml: remove unnecessary installations
      .gitlab-ci.yml: removed legacy references to rdrand
      Merge branch 'spelling' into 'master'

Randy Moss (1):
      Add `openconnect_set_cookie` function to library and jni Signed-off-by: Randy Moss <kasaxet794 at homedepinst.com>

Roberto Leinardi (1):
      Added platform name to the HIP report script

Sabin Rapan (1):
      Fix selection of TPM2 key gen tools

Steven Luo (1):
      Make correct TUNDEV value available to vpnc-script during pre-init

Tim De Baets (3):
      Install a custom signal handler on Windows using SetConsoleCtrlHandler()
      Issue OC_CMD_DETACH instead of OC_CMD_CANCEL on Ctrl+Break
      Update changelog

Tom Carroll (9):
      Free pcerts array for all assign_privkey paths.
      Use separate counters for inner and outer loop.
      Remove field free_certs from gtls_cert_info.
      Convert x509_privkey to abstract privkey in load_certificates.
      Remove NULL checks before deinit GnuTLS objects.
      gnutls.c:943:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
      Check gnutls_pubkey_init return code.
      Correct calculation of base64 encode buffer length.
      Use C99 initializer instead of memset.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5965 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openconnect-devel/attachments/20220220/866aa993/attachment-0001.p7s>


More information about the openconnect-devel mailing list