1. 02 6月, 2023 1 次提交
    • R
      Restrict the size of OBJECT IDENTIFIERs that OBJ_obj2txt will translate · b436274c
      Richard Levitte 提交于
      OBJ_obj2txt() would translate any size OBJECT IDENTIFIER to canonical
      numeric text form.  For gigantic sub-identifiers, this would take a very
      long time, the time complexity being O(n^2) where n is the size of that
      sub-identifier.
      
      To mitigate this, a restriction on the size that OBJ_obj2txt() will
      translate to canonical numeric text form is added, based on RFC 2578
      (STD 58), which says this:
      
      > 3.5. OBJECT IDENTIFIER values
      >
      > An OBJECT IDENTIFIER value is an ordered list of non-negative numbers.
      > For the SMIv2, each number in the list is referred to as a sub-identifier,
      > there are at most 128 sub-identifiers in a value, and each sub-identifier
      > has a maximum value of 2^32-1 (4294967295 decimal).
      
      Fixes otc/security#96
      Fixes CVE-2023-2650
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NTomas Mraz <tomas@openssl.org>
      Signed-off-by: Ncode4lala <fengziteng2@huawei.com>
      b436274c
  2. 12 4月, 2023 2 次提交
  3. 01 7月, 2022 1 次提交
  4. 10 8月, 2021 1 次提交
  5. 27 2月, 2020 1 次提交
  6. 28 9月, 2019 2 次提交
    • D
      Reorganize local header files · b5acbf91
      Dr. Matthias St. Pierre 提交于
      Apart from public and internal header files, there is a third type called
      local header files, which are located next to source files in the source
      directory. Currently, they have different suffixes like
      
        '*_lcl.h', '*_local.h', or '*_int.h'
      
      This commit changes the different suffixes to '*_local.h' uniformly.
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/9681)
      b5acbf91
    • D
      Reorganize private crypto header files · 0c994d54
      Dr. Matthias St. Pierre 提交于
      Currently, there are two different directories which contain internal
      header files of libcrypto which are meant to be shared internally:
      
      While header files in 'include/internal' are intended to be shared
      between libcrypto and libssl, the files in 'crypto/include/internal'
      are intended to be shared inside libcrypto only.
      
      To make things complicated, the include search path is set up in such
      a way that the directive #include "internal/file.h" could refer to
      a file in either of these two directoroes. This makes it necessary
      in some cases to add a '_int.h' suffix to some files to resolve this
      ambiguity:
      
        #include "internal/file.h"      # located in 'include/internal'
        #include "internal/file_int.h"  # located in 'crypto/include/internal'
      
      This commit moves the private crypto headers from
      
        'crypto/include/internal'  to  'include/crypto'
      
      As a result, the include directives become unambiguous
      
        #include "internal/file.h"       # located in 'include/internal'
        #include "crypto/file.h"         # located in 'include/crypto'
      
      hence the superfluous '_int.h' suffixes can be stripped.
      
      The files 'store_int.h' and 'store.h' need to be treated specially;
      they are joined into a single file.
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/9681)
      0c994d54
  7. 27 4月, 2018 1 次提交
  8. 20 3月, 2018 1 次提交
  9. 13 3月, 2018 1 次提交
  10. 08 12月, 2017 1 次提交
  11. 22 8月, 2017 1 次提交
    • P
      This has been added to avoid the situation where some host ctype.h functions · a1df06b3
      Pauli 提交于
      return true for characters > 127.  I.e. they are allowing extended ASCII
      characters through which then cause problems.  E.g. marking superscript '2' as
      a number then causes the common (ch - '0') conversion to number to fail
      miserably.  Likewise letters with diacritical marks can also cause problems.
      
      If a non-ASCII character set is being used (currently only EBCDIC), it is
      adjusted for.
      
      The implementation uses a single table with a bit for each of the defined
      classes.  These functions accept an int argument and fail for
      values out of range or for characters outside of the ASCII set.  They will
      work for both signed and unsigned character inputs.
      Reviewed-by: NAndy Polyakov <appro@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/4102)
      a1df06b3
  12. 07 7月, 2017 1 次提交
  13. 05 7月, 2017 1 次提交
  14. 23 6月, 2017 1 次提交
  15. 12 4月, 2017 1 次提交
  16. 01 3月, 2017 1 次提交
  17. 23 8月, 2016 1 次提交
  18. 22 6月, 2016 1 次提交
  19. 20 5月, 2016 1 次提交
    • R
      Rename lh_xxx,sk_xxx tp OPENSSL_{LH,SK}_xxx · 739a1eb1
      Rich Salz 提交于
      Rename sk_xxx to OPENSSL_sk_xxx and _STACK to OPENSSL_STACK
      Rename lh_xxx API to OPENSSL_LH_xxx and LHASH_NODE to OPENSSL_LH_NODE
      Make lhash stuff opaque.
      Use typedefs for function pointers; makes the code simpler.
      Remove CHECKED_xxx macros.
      Add documentation; remove old X509-oriented doc.
      Add API-compat names for entire old API
      Reviewed-by: NDr. Stephen Henson <steve@openssl.org>
      739a1eb1
  20. 19 5月, 2016 1 次提交
  21. 18 5月, 2016 2 次提交
  22. 13 4月, 2016 5 次提交
  23. 27 1月, 2016 1 次提交
    • R
      Remove /* foo.c */ comments · 34980760
      Rich Salz 提交于
      This was done by the following
              find . -name '*.[ch]' | /tmp/pl
      where /tmp/pl is the following three-line script:
              print unless $. == 1 && m@/\* .*\.[ch] \*/@;
              close ARGV if eof; # Close file to reset $.
      
      And then some hand-editing of other files.
      Reviewed-by: NViktor Dukhovni <viktor@openssl.org>
      34980760
  24. 12 1月, 2016 3 次提交
  25. 17 12月, 2015 1 次提交
    • R
      Rename some BUF_xxx to OPENSSL_xxx · 7644a9ae
      Rich Salz 提交于
      Rename BUF_{strdup,strlcat,strlcpy,memdup,strndup,strnlen}
      to OPENSSL_{strdup,strlcat,strlcpy,memdup,strndup,strnlen}
      Add #define's for the old names.
      Add CRYPTO_{memdup,strndup}, called by OPENSSL_{memdup,strndup} macros.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      7644a9ae
  26. 09 6月, 2015 1 次提交
  27. 14 5月, 2015 1 次提交
  28. 13 5月, 2015 2 次提交
    • H
      Call of memcmp with null pointers in obj_cmp() · 2b8dc08b
      Hanno Böck 提交于
      The function obj_cmp() (file crypto/objects/obj_dat.c) can in some
      situations call memcmp() with a null pointer and a zero length.
      
      This is invalid behaviour. When compiling openssl with undefined
      behaviour sanitizer (add -fsanitize=undefined to compile flags) this
      can be seen. One example that triggers this behaviour is the pkcs7
      command (but there are others, e.g. I've seen it with the timestamp
      function):
      apps/openssl pkcs7 -in test/testp7.pem
      
      What happens is that obj_cmp takes objects of the type ASN1_OBJECT and
      passes their ->data pointer to memcmp. Zero-sized ASN1_OBJECT
      structures can have a null pointer as data.
      
      RT#3816
      Signed-off-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      2b8dc08b
    • G
      Fix the heap corruption in libeay32!OBJ_add_object. · 56d88027
      Gunnar Kudrjavets 提交于
      Original 'sizeof(ADDED_OBJ)' was replaced with 'sizeof(*ao)'. However,
      they return different sizes. Therefore as the result heap gets corrupted
      and at some point later debug version of malloc() detects the corruption.
      
      On x86 we can observe that as follows:
      
      sizeof(*ao) == 4
      sizeof(*ao[0]) == sizeof(ADDED_OBJ) == 8
      
      Issue reproduces with either enabling CRT debug heap or Application
      Verifier's full-page heap.
      
      Basic debugging data from the moment the corruption is first detected:
      
      0:000:x86> |
      .  0    id: 283c        create  name: openssl.exe
      0:000:x86> kcn
       #
      00 MSVCR120D!_heap_alloc_dbg_impl
      01 MSVCR120D!_nh_malloc_dbg_impl
      02 MSVCR120D!_nh_malloc_dbg
      03 MSVCR120D!malloc
      04 LIBEAY32!default_malloc_ex
      05 LIBEAY32!CRYPTO_malloc
      06 LIBEAY32!lh_insert
      07 LIBEAY32!OBJ_add_object
      08 LIBEAY32!OBJ_create
      09 openssl!add_oid_section
      0a openssl!req_main
      0b openssl!do_cmd
      0c openssl!main
      0d openssl!__tmainCRTStartup
      0e openssl!mainCRTStartup
      0f KERNEL32!BaseThreadInitThunk
      10 ntdll_77d60000!__RtlUserThreadStart
      11 ntdll_77d60000!_RtlUserThreadStart
      Signed-off-by: NMatt Caswell <matt@openssl.org>
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      56d88027
  29. 11 5月, 2015 1 次提交
  30. 05 5月, 2015 1 次提交
    • R
      Use safer sizeof variant in malloc · b4faea50
      Rich Salz 提交于
      For a local variable:
              TYPE *p;
      Allocations like this are "risky":
              p = OPENSSL_malloc(sizeof(TYPE));
      if the type of p changes, and the malloc call isn't updated, you
      could get memory corruption.  Instead do this:
              p = OPENSSL_malloc(sizeof(*p));
      Also fixed a few memset() calls that I noticed while doing this.
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      b4faea50