mbedtls/library
Manuel Pégourié-Gonnard 97b5209bc0 Fix potential double free in cert writing code
In case an entry with the given OID already exists in the list passed to
mbedtls_asn1_store_named_data() and there is not enough memory to allocate
room for the new value, the existing entry will be freed but the preceding
entry in the list will sill hold a pointer to it. (And the following entries
in the list are no longer reachable.) This results in memory leak or a double
free.

The issue is we want to leave the list in a consistent state on allocation
failure. (We could add a warning that the list is left in inconsistent state
when the function returns NULL, but behaviour changes that require more care
from the user are undesirable, especially in a stable branch.)

The chosen solution is a bit inefficient in that there is a time where both
blocks are allocated, but at least it's safe and this should trump efficiency
here: this code is only used for generating certificates, which is unlikely to
be done on very constrained devices, or to be in the critical loop of
anything. Also, the sizes involved should be fairly small anyway.

fixes #367
2015-12-10 11:23:55 +01:00
..
.gitignore Split libs with make + general make cleanups 2015-06-25 10:59:56 +02:00
aes.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
aesni.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
arc4.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
asn1parse.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
asn1write.c Fix potential double free in cert writing code 2015-12-10 11:23:55 +01:00
base64.c Fix references to non-standard SIZE_T_MAX 2015-10-05 15:23:11 +01:00
bignum.c Fix two more compiler warnings 2015-12-01 10:27:00 +01:00
blowfish.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
camellia.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
ccm.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
certs.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
cipher.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
cipher_wrap.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
CMakeLists.txt Change version number to 2.2.0 2015-11-04 19:55:40 +00:00
ctr_drbg.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
debug.c Fix macroization of inline in C++ 2015-10-05 11:41:36 +01:00
des.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
dhm.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
ecdh.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
ecdsa.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
ecjpake.c Fix potential stack buffer overflow in ecjpake 2015-10-20 16:20:56 +02:00
ecp.c Optimize more common cases in ecp_muladd() 2015-10-23 15:50:37 +02:00
ecp_curves.c Fix macroization of inline in C++ 2015-10-05 11:41:36 +01:00
entropy.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
entropy_poll.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
error.c Clean up error codes 2015-09-08 11:21:21 +02:00
gcm.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
havege.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
hmac_drbg.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
Makefile Add skeleton for EC J-PAKE module 2015-09-07 12:43:09 +02:00
md.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
md2.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
md4.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
md5.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
md_wrap.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
memory_buffer_alloc.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
net.c Fix compile error in net.c with musl libc 2015-10-05 12:17:49 +01:00
oid.c Fix typo in an OID name 2015-10-21 16:40:29 +02:00
padlock.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
pem.c Merge of IOTSSL-476 - Random malloc in pem_read() 2015-10-05 00:26:36 +01:00
pk.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
pk_wrap.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
pkcs5.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
pkcs11.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
pkcs12.c Fix stack buffer overflow in pkcs12 2015-09-28 19:47:50 +02:00
pkparse.c Clean up compilation warnings 2015-10-02 13:32:17 +01:00
pkwrite.c Fix other occurrences of same bounds check issue 2015-10-21 12:50:45 +02:00
platform.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
ripemd160.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
rsa.c Try to prevent some misuse of RSA functions 2015-10-30 10:56:25 +01:00
sha1.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
sha256.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
sha512.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
ssl_cache.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
ssl_ciphersuites.c Add the ECJPAKE ciphersuite 2015-09-16 22:58:29 +02:00
ssl_cli.c Merge branch 'development' into misc 2015-10-27 16:57:34 +00:00
ssl_cookie.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
ssl_srv.c Merge branch 'development' into iotssl-461-ecjpake-finalization 2015-10-20 15:00:29 +02:00
ssl_ticket.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
ssl_tls.c Merge branch 'iotssl-519-asn1write-overflows-restricted' into development-restricted 2015-11-02 11:07:30 +09:00
threading.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
timing.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
version.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
version_features.c Merge branch 'development' into iotssl-461-ecjpake-finalization 2015-10-20 15:00:29 +02:00
x509.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
x509_create.c Fix other occurrences of same bounds check issue 2015-10-21 12:50:45 +02:00
x509_crl.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
x509_crt.c Merge branch 'iotssl-518-winpathlen-restricted' into development-restricted 2015-11-02 11:04:59 +09:00
x509_csr.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
x509write_crt.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
x509write_csr.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00
xtea.c Change main license to Apache 2.0 2015-09-04 14:21:07 +02:00