diff options
author | David Benjamin <davidben@chromium.org> | 2015-02-09 07:20:06 +0300 |
---|---|---|
committer | Adam Langley <agl@google.com> | 2015-02-09 22:39:41 +0300 |
commit | 1eed2c0e40ad363da9b00966e1b19f451dee8fad (patch) | |
tree | 1f1f253a79dd9f950e5c4944cdcc4d8814faed9b | |
parent | 42ca3a46236b0456109e71af754a09d8da7d4b0c (diff) |
Fix some unchecked mallocs.
BUG=456599
Change-Id: Id0652c2aff1cb8a5de35350feb8410285b3fef20
Reviewed-on: https://boringssl-review.googlesource.com/3330
Reviewed-by: Adam Langley <agl@google.com>
-rw-r--r-- | crypto/rand/urandom.c | 4 | ||||
-rw-r--r-- | crypto/x509/by_dir.c | 6 | ||||
-rw-r--r-- | crypto/x509v3/v3_alt.c | 2 | ||||
-rw-r--r-- | ssl/ssl_ciph.c | 5 |
4 files changed, 15 insertions, 2 deletions
diff --git a/crypto/rand/urandom.c b/crypto/rand/urandom.c index 2ad4af06..a7e2ad82 100644 --- a/crypto/rand/urandom.c +++ b/crypto/rand/urandom.c @@ -188,6 +188,10 @@ int RAND_bytes(uint8_t *out, size_t requested) { if (!buf) { buf = (struct rand_buffer *)OPENSSL_malloc(BUF_SIZE); + if (!buf) { + abort(); + return 0; + } /* The buffer doesn't contain any random bytes yet * so we mark it as fully used so that it will be * filled below. */ diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c index 5a77b818..3573c86f 100644 --- a/crypto/x509/by_dir.c +++ b/crypto/x509/by_dir.c @@ -442,6 +442,12 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, if (!hent) { hent = OPENSSL_malloc(sizeof(BY_DIR_HASH)); + if (hent == NULL) + { + CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE); + ok = 0; + goto finish; + } hent->hash = h; hent->suffix = k; if (!sk_BY_DIR_HASH_push(ent->hashes, hent)) diff --git a/crypto/x509v3/v3_alt.c b/crypto/x509v3/v3_alt.c index 113cf45a..f547316e 100644 --- a/crypto/x509v3/v3_alt.c +++ b/crypto/x509v3/v3_alt.c @@ -583,6 +583,8 @@ static int do_othername(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx) return 0; objlen = p - value; objtmp = OPENSSL_malloc(objlen + 1); + if (objtmp == NULL) + return 0; strncpy(objtmp, value, objlen); objtmp[objlen] = 0; gen->d.otherName->type_id = OBJ_txt2obj(objtmp, 0); diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c index 60b97472..e7925332 100644 --- a/ssl/ssl_ciph.c +++ b/ssl/ssl_ciph.c @@ -1262,8 +1262,9 @@ const char *SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, if (buf == NULL) { len = 128; buf = OPENSSL_malloc(len); - if (buf == NULL) - return "OPENSSL_malloc Error"; + if (buf == NULL) { + return NULL; + } } else if (len < 128) { return "Buffer too small"; } |