boringssl/crypto
Adam Langley 82aa28fa81 Make |BUF_memdup| look for zero length, not NULL.
BUF_memdup tries to avoid mallocing zero bytes (and thus unduly
returning an error for a NULL return value) by testing whether the input
buffer is NULL. This goes back to the original OpenSSL code.

However, when |ext_npn_parse_serverhello| tries to use |BUF_memdup| to
copy an NPN value returned by a callback, some callbacks just set the
output /length/ to zero to indicate an empty value. Thus, when
|BUF_memdup| tests the pointer, it's an uninitialised value and MSan
throws an error.

Since passing a NULL pointer to |BUF_memdup| better imply that the
length is zero, while the reverse empirically isn't true, testing the
length seems safer.

Change-Id: I06626f7dfb761de631fd997bda60057b76b8da94
2015-10-06 18:11:33 -07:00
..
aes Revert section changes for ASM. 2015-09-30 22:09:52 +00:00
asn1 d2i: don't update input pointer on failure 2015-09-28 22:15:17 +00:00
base64 Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
bio fread returns a size_t, not int. 2015-08-28 22:46:40 +00:00
bn Revert section changes for ASM. 2015-09-30 22:09:52 +00:00
buf Make |BUF_memdup| look for zero length, not NULL. 2015-10-06 18:11:33 -07:00
bytestring Clarify that only top-level CBBs get CBB_cleanup. 2015-09-28 22:40:01 +00:00
chacha Revert section changes for ASM. 2015-09-30 22:09:52 +00:00
cipher Fix |max_tag_len| for TLS CBC AEADs. 2015-09-30 23:59:22 +00:00
cmac Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
conf Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
des Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
dh Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
digest Fix some malloc failure crashes. 2015-09-18 19:30:09 +00:00
dsa Fix dsa keygen for too-short seed 2015-09-01 19:09:22 +00:00
ec d2i: don't update input pointer on failure 2015-09-28 22:15:17 +00:00
ecdh Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
ecdsa Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
engine Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
err Forbid a server from negotiating both ALPN and NPN. 2015-09-01 20:46:42 +00:00
evp Add various tests for d2i_PrivateKey. 2015-09-28 22:18:23 +00:00
hkdf Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
hmac Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
lhash Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
md4 Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
md5 Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
modes Fix several minor points noticed by Kenny. 2015-09-24 22:08:50 +00:00
obj Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
pem Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
perlasm Revert section changes for ASM. 2015-09-30 22:09:52 +00:00
pkcs8 Reject iterationCount == 0 when parsing PBKDF2-params. 2015-10-02 16:19:04 +00:00
poly1305 Revert section changes for ASM. 2015-09-30 22:09:52 +00:00
rand Merge hwrand.c into rand.c. 2015-09-25 22:07:42 +00:00
rc4 Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
rsa RT 3493: fix RSA test 2015-09-23 23:56:40 +00:00
sha Revert section changes for ASM. 2015-09-30 22:09:52 +00:00
stack Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
test pkcs8.c: Add PBES2 to list of password-based encryption methods. 2015-08-28 20:33:33 +00:00
x509 d2i: don't update input pointer on failure 2015-09-28 22:15:17 +00:00
x509v3 Cleaner handling of "cnid" in do_x509_check 2015-09-23 23:59:43 +00:00
CMakeLists.txt Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
constant_time_test.c
cpu-arm-asm.S
cpu-arm.c Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
cpu-intel.c Surround immintrin.h includes with warning pragmas. 2015-07-20 20:08:26 +00:00
crypto.c Move arm_arch.h and fix up lots of include paths. 2015-08-26 01:57:59 +00:00
directory_posix.c Eliminate unnecessary includes from low-level crypto modules. 2015-04-13 20:49:18 +00:00
directory_win.c Eliminate unnecessary includes from low-level crypto modules. 2015-04-13 20:49:18 +00:00
directory.h
ex_data.c Reserve ex_data index zero for app_data. 2015-07-20 16:56:34 +00:00
header_removed.h
internal.h Buffer reads of urandom, if you promise no forking. 2015-09-09 01:02:54 +00:00
mem.c Fix some typos in license headers. 2015-07-29 19:23:51 +00:00
refcount_c11.c Cast refcounts to _Atomic before use. 2015-05-20 13:39:22 -07:00
refcount_lock.c Add infrastructure for reference counts. 2015-05-20 19:14:59 +00:00
refcount_test.c Specify argc and argv arguments to refcount_test:main. 2015-05-20 13:49:41 -07:00
thread_none.c Support Trusty, an embedded platform. 2015-05-08 18:34:55 +00:00
thread_pthread.c Support Trusty, an embedded platform. 2015-05-08 18:34:55 +00:00
thread_test.c Use the correct case for Windows headers. 2015-06-09 21:38:04 +00:00
thread_win.c Support Trusty, an embedded platform. 2015-05-08 18:34:55 +00:00
thread.c Remove leftovers of the old-style locks. 2015-05-20 19:18:44 +00:00
time_support.c Eliminate unnecessary includes from low-level crypto modules. 2015-04-13 20:49:18 +00:00