1. 15 Jun, 2018 1 commit
  2. 14 Jun, 2018 4 commits
  3. 13 Jun, 2018 7 commits
  4. 12 Jun, 2018 7 commits
  5. 11 Jun, 2018 7 commits
  6. 09 Jun, 2018 3 commits
  7. 08 Jun, 2018 10 commits
  8. 07 Jun, 2018 1 commit
    • Marcus Huewe's avatar
      Do not free a session before calling the remove_session_cb · c0a58e03
      Marcus Huewe authored
      If the remove_session_cb accesses the session's data (for instance,
      via SSL_SESSION_get_protocol_version), a potential use after free
      can occur. For this, consider the following scenario when adding
      a new session via SSL_CTX_add_session:
      
      - The session cache is full
        (SSL_CTX_sess_number(ctx) > SSL_CTX_sess_get_cache_size(ctx))
      - Only the session cache has a reference to ctx->session_cache_tail
        (that is, ctx->session_cache_tail->references == 1)
      
      Since the cache is full, remove_session_lock is called to remove
      ctx->session_cache_tail from the cache. That is, it
      SSL_SESSION_free()s the session, which free()s the data. Afterwards,
      the free()d session is passed to the remove_session_cb. If the callback
      accesses the session's data, we have a use after free.
      
      The free before calling the callback behavior was introduced in
      commit e4612d02
      
       ("Remove sessions
      from external cache, even if internal cache not used.").
      
      CLA: trivial
      
      Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
      Reviewed-by: default avatarMatt Caswell <matt@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/6222)
      c0a58e03