Skip to content

Commit 7bf1e14

Browse files
MONGOCRYPT-577 assert non-null returns from malloc()-family function
1 parent de39931 commit 7bf1e14

11 files changed

+30
-0
lines changed

kms-message/src/kms_b64.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,7 @@ kms_message_raw_to_b64 (const uint8_t *raw, size_t raw_len)
583583

584584
b64_len = (raw_len / 3 + 1) * 4 + 1;
585585
b64 = malloc (b64_len);
586+
KMS_ASSERT (b64);
586587
memset (b64, 0, b64_len);
587588
if (-1 == kms_message_b64_ntop (raw, raw_len, b64, b64_len)) {
588589
free (b64);
@@ -600,6 +601,7 @@ kms_message_b64_to_raw (const char *b64, size_t *out)
600601

601602
b64len = strlen (b64);
602603
raw = (uint8_t *) malloc (b64len + 1);
604+
KMS_ASSERT (raw);
603605
memset (raw, 0, b64len + 1);
604606
ret = kms_message_b64_pton (b64, raw, b64len);
605607
if (ret > 0) {
@@ -642,6 +644,7 @@ kms_message_b64url_to_raw (const char *b64url, size_t *out)
642644
/* Add four for padding '=' characters. */
643645
capacity = b64urllen + 4;
644646
b64 = malloc (capacity);
647+
KMS_ASSERT (b64);
645648
memset (b64, 0, capacity);
646649
if (-1 ==
647650
kms_message_b64url_to_b64 (b64url, b64urllen, b64, capacity)) {

kms-message/src/kms_crypto_libcrypto.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ kms_sha256 (void *unused_ctx,
5858
unsigned char *hash_out)
5959
{
6060
EVP_MD_CTX *digest_ctxp = EVP_MD_CTX_new ();
61+
KMS_ASSERT (digest_ctxp);
6162
bool rval = false;
6263

6364
if (1 != EVP_DigestInit_ex (digest_ctxp, EVP_sha256 (), NULL)) {
@@ -108,6 +109,7 @@ kms_sign_rsaes_pkcs1_v1_5 (void *unused_ctx,
108109
size_t signature_out_len = 256;
109110

110111
ctx = EVP_MD_CTX_new ();
112+
KMS_ASSERT (ctx);
111113
KMS_ASSERT (private_key_len <= LONG_MAX);
112114
pkey = d2i_PrivateKey (EVP_PKEY_RSA,
113115
NULL,

kms-message/src/kms_crypto_windows.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ kms_sign_rsaes_pkcs1_v1_5 (void *unused_ctx,
179179
}
180180

181181
blob_private = (LPBYTE) calloc (1, blob_private_len);
182+
KMS_ASSERT (blob_private);
182183

183184
success = CryptDecodeObjectEx (X509_ASN_ENCODING,
184185
PKCS_PRIVATE_KEY_INFO,
@@ -208,6 +209,7 @@ kms_sign_rsaes_pkcs1_v1_5 (void *unused_ctx,
208209
}
209210

210211
raw_private = (LPBYTE) calloc (1, raw_private_len);
212+
KMS_ASSERT (raw_private);
211213

212214
success = CryptDecodeObjectEx (X509_ASN_ENCODING,
213215
PKCS_RSA_PRIVATE_KEY,
@@ -234,6 +236,7 @@ kms_sign_rsaes_pkcs1_v1_5 (void *unused_ctx,
234236
}
235237

236238
hash_value = calloc (1, SHA_256_HASH_LEN);
239+
KMS_ASSERT (hash_value);
237240

238241
if(!kms_sha256 (NULL, input, input_len, hash_value)) {
239242
goto cleanup;

kms-message/src/kms_gcp_request.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ kms_gcp_request_oauth_new (const char *host,
8888
}
8989

9090
jwt_signature = calloc (1, SIGNATURE_LEN);
91+
KMS_ASSERT (jwt_signature);
9192
if (!req->crypto.sign_rsaes_pkcs1_v1_5 (
9293
req->crypto.sign_ctx,
9394
private_key_data,

kms-message/src/kms_kmip_reader_writer.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ kmip_writer_t *
4343
kmip_writer_new (void)
4444
{
4545
kmip_writer_t *writer = calloc (1, sizeof (kmip_writer_t));
46+
KMS_ASSERT (writer);
4647
writer->buffer = kms_request_str_new ();
4748
return writer;
4849
}
@@ -241,6 +242,7 @@ kmip_reader_t *
241242
kmip_reader_new (uint8_t *ptr, size_t len)
242243
{
243244
kmip_reader_t *reader = calloc (1, sizeof (kmip_reader_t));
245+
KMS_ASSERT (reader);
244246
reader->ptr = ptr;
245247
reader->len = len;
246248
return reader;

kms-message/src/kms_kmip_request.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ copy_writer_buffer (kms_request_t *req, kmip_writer_t *writer)
3131

3232
buf = kmip_writer_get_buffer (writer, &buflen);
3333
req->kmip.data = malloc (buflen);
34+
KMS_ASSERT (req->kmip.data);
3435
memcpy (req->kmip.data, buf, buflen);
3536
req->kmip.len = (uint32_t) buflen;
3637
}
@@ -79,6 +80,7 @@ kms_kmip_request_register_secretdata_new (void *reserved,
7980
kms_request_t *req;
8081

8182
req = calloc (1, sizeof (kms_request_t));
83+
KMS_ASSERT (req);
8284
req->provider = KMS_REQUEST_PROVIDER_KMIP;
8385

8486
if (len != KMS_KMIP_REQUEST_SECRETDATA_LENGTH) {
@@ -168,6 +170,7 @@ kms_kmip_request_activate_new (void *reserved, const char *unique_identifer)
168170
kms_request_t *req;
169171

170172
req = calloc (1, sizeof (kms_request_t));
173+
KMS_ASSERT (req);
171174
req->provider = KMS_REQUEST_PROVIDER_KMIP;
172175

173176
writer = kmip_writer_new ();
@@ -224,6 +227,7 @@ kms_kmip_request_get_new (void *reserved, const char *unique_identifer)
224227
kms_request_t *req;
225228

226229
req = calloc (1, sizeof (kms_request_t));
230+
KMS_ASSERT (req);
227231
req->provider = KMS_REQUEST_PROVIDER_KMIP;
228232

229233
writer = kmip_writer_new ();
@@ -294,6 +298,7 @@ kms_kmip_request_create_new (void *reserved) {
294298
kms_request_t *req;
295299

296300
req = calloc (1, sizeof (kms_request_t));
301+
KMS_ASSERT (req);
297302
req->provider = KMS_REQUEST_PROVIDER_KMIP;
298303

299304
writer = kmip_writer_new();
@@ -362,6 +367,7 @@ kmip_encrypt_decrypt (const char* unique_identifer, const uint8_t *data, size_t
362367
kms_request_t *req;
363368

364369
req = calloc (1, sizeof (kms_request_t));
370+
KMS_ASSERT (req);
365371
req->provider = KMS_REQUEST_PROVIDER_KMIP;
366372

367373
writer = kmip_writer_new();

kms-message/src/kms_kmip_response.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ kms_kmip_response_get_iv (kms_response_t *res, size_t *datalen) {
284284
goto fail;
285285
}
286286
data = malloc (len);
287+
KMS_ASSERT (data);
287288
memcpy (data, tmp, len);
288289
*datalen = len;
289290

@@ -364,6 +365,7 @@ kms_kmip_response_get_data (kms_response_t *res, size_t *datalen) {
364365
goto fail;
365366
}
366367
data = malloc (len);
368+
KMS_ASSERT (data);
367369
memcpy (data, tmp, len);
368370
*datalen = len;
369371

@@ -477,6 +479,7 @@ kms_kmip_response_get_secretdata (kms_response_t *res, size_t *secretdatalen)
477479
goto fail;
478480
}
479481
secretdata = malloc (len);
482+
KMS_ASSERT (secretdata);
480483
memcpy (secretdata, tmp, len);
481484
*secretdatalen = len;
482485

kms-message/src/kms_kmip_response_parser.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ kms_kmip_response_parser_new (void *reserved)
5555
kms_response_parser_t *parser = kms_response_parser_new ();
5656

5757
parser->kmip = malloc (sizeof (kms_kmip_response_parser_t));
58+
KMS_ASSERT (parser->kmip);
5859
_parser_init (parser->kmip);
5960

6061
return parser;
@@ -119,6 +120,7 @@ kms_kmip_response_parser_get_response (kms_kmip_response_parser_t *parser)
119120
}
120121

121122
res = calloc (1, sizeof (kms_response_t));
123+
KMS_ASSERT (res);
122124
res->provider = KMS_REQUEST_PROVIDER_KMIP;
123125
res->kmip.len = (uint32_t) parser->buf->len;
124126
res->kmip.data = (uint8_t *) kms_request_str_detach (parser->buf);

kms-message/test/test_kms_azure_online.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ azure_authenticate (void)
122122
test_env_init (&test_env);
123123

124124
opt = kms_request_opt_new ();
125+
ASSERT (opt);
125126
kms_request_opt_set_connection_close (opt, true);
126127
kms_request_opt_set_provider (opt, KMS_REQUEST_PROVIDER_AZURE);
127128

@@ -190,6 +191,7 @@ test_azure_wrapkey (void)
190191
bearer_token = azure_authenticate ();
191192

192193
opt = kms_request_opt_new ();
194+
ASSERT (opt);
193195
kms_request_opt_set_connection_close (opt, true);
194196
kms_request_opt_set_provider (opt, KMS_REQUEST_PROVIDER_AZURE);
195197
req = kms_azure_request_wrapkey_new (test_env.key_host,

kms-message/test/test_kms_gcp_online.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ gcp_authenticate (void)
9898
test_env_init (&test_env);
9999

100100
opt = kms_request_opt_new ();
101+
ASSERT (opt);
101102
kms_request_opt_set_connection_close (opt, true);
102103
kms_request_opt_set_provider (opt, KMS_REQUEST_PROVIDER_GCP);
103104

@@ -171,6 +172,7 @@ test_gcp (void)
171172
bearer_token = gcp_authenticate ();
172173

173174
opt = kms_request_opt_new ();
175+
ASSERT (opt);
174176
kms_request_opt_set_connection_close (opt, true);
175177
kms_request_opt_set_provider (opt, KMS_REQUEST_PROVIDER_GCP);
176178
req = kms_gcp_request_encrypt_new (test_env.kms_host,

0 commit comments

Comments
 (0)