diff options
-rw-r--r-- | lib/x509_b64.c | 2 | ||||
-rw-r--r-- | tests/base64-raw.c | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/x509_b64.c b/lib/x509_b64.c index edfbe5c198..fcace95a6f 100644 --- a/lib/x509_b64.c +++ b/lib/x509_b64.c @@ -260,6 +260,8 @@ _gnutls_base64_decode(const uint8_t * data, size_t data_size, if (data_size == 0) { result->data = (unsigned char*)gnutls_strdup(""); + if (result->data == NULL) + return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); result->size = 0; return 0; } diff --git a/tests/base64-raw.c b/tests/base64-raw.c index 820d8744ed..8382e5012a 100644 --- a/tests/base64-raw.c +++ b/tests/base64-raw.c @@ -231,6 +231,12 @@ struct decode_tests_st decode_tests[] = { .res = 0 }, { + .name = "dec-spaces", + .pem = " ", + .raw = {(void*)"", 0}, + .res = GNUTLS_E_BASE64_DECODING_ERROR + }, + { .name = "dec-invalid-data", .pem = "XLJ/7hUZ3TtPIz2dlc5+YvELe+Q==", .raw = {(void*)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", 19}, |