Skip to content
  1. Sep 29, 2017
  2. Sep 27, 2017
  3. Sep 26, 2017
  4. Sep 19, 2017
  5. Sep 11, 2017
  6. Sep 07, 2017
  7. Aug 28, 2017
  8. Aug 25, 2017
  9. Aug 24, 2017
  10. Aug 23, 2017
  11. Aug 22, 2017
  12. Aug 18, 2017
  13. Aug 17, 2017
  14. Aug 15, 2017
  15. Aug 09, 2017
  16. Aug 07, 2017
  17. Aug 04, 2017
  18. Jul 31, 2017
  19. Jul 29, 2017
  20. Jul 28, 2017
  21. Jul 27, 2017
  22. Jul 25, 2017
  23. Jul 24, 2017
  24. Jul 22, 2017
  25. Jul 20, 2017
  26. Jul 19, 2017
    • Matt Caswell's avatar
      Remove some dead code · e3d1a4e5
      Matt Caswell authored
      
      
      The intention of the removed code was to check if the previous operation
      carried. However this does not work. The "mask" value always ends up being
      a constant and is all ones - thus it has no effect. This check is no longer
      required because of the previous commit.
      
      Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/3832)
      
      (cherry picked from commit d5475e31)
      e3d1a4e5
    • Matt Caswell's avatar
      Fix undefined behaviour in e_aes_cbc_hmac_sha256.c and e_aes_cbc_hmac_sha1.c · ec642d5a
      Matt Caswell authored
      
      
      In TLS mode of operation the padding value "pad" is obtained along with the
      maximum possible padding value "maxpad". If pad > maxpad then the data is
      invalid. However we must continue anyway because this is constant time code.
      
      We calculate the payload length like this:
      
          inp_len = len - (SHA_DIGEST_LENGTH + pad + 1);
      
      However if pad is invalid then inp_len ends up -ve (actually large +ve
      because it is a size_t).
      
      Later we do this:
      
          /* verify HMAC */
          out += inp_len;
          len -= inp_len;
      
      This ends up with "out" pointing before the buffer which is undefined
      behaviour. Next we calculate "p" like this:
      
          unsigned char *p =
              out + len - 1 - maxpad - SHA256_DIGEST_LENGTH;
      
      Because of the "out + len" term the -ve inp_len value is cancelled out
      so "p" points to valid memory (although technically the pointer arithmetic
      is undefined behaviour again).
      
      We only ever then dereference "p" and never "out" directly so there is
      never an invalid read based on the bad pointer - so there is no security
      issue.
      
      This commit fixes the undefined behaviour by ensuring we use maxpad in
      place of pad, if the supplied pad is invalid.
      
      With thanks to Brian Carpenter for reporting this issue.
      
      Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/3832)
      
      (cherry picked from commit 335d0a46)
      ec642d5a
  27. Jul 18, 2017
  28. Jul 16, 2017
  29. Jul 15, 2017
  30. Jul 06, 2017
  31. Jul 05, 2017