mirror of
https://github.com/yuzu-mirror/mbedtls.git
synced 2026-04-04 14:08:39 +00:00
Merge pull request #7486 from AndrzejKurek/calloc-also-zeroizes
Document mbedtls_calloc zeroization
This commit is contained in:
commit
796bc2b8f9
8 changed files with 161 additions and 11 deletions
|
|
@ -73,23 +73,51 @@ static int calloc_self_test(int verbose)
|
|||
void *empty2 = mbedtls_calloc(0, 1);
|
||||
void *buffer1 = mbedtls_calloc(1, 1);
|
||||
void *buffer2 = mbedtls_calloc(1, 1);
|
||||
unsigned int buffer_3_size = 256;
|
||||
unsigned int buffer_4_size = 4097; /* Allocate more than the usual page size */
|
||||
unsigned char *buffer3 = mbedtls_calloc(buffer_3_size, 1);
|
||||
unsigned char *buffer4 = mbedtls_calloc(buffer_4_size, 1);
|
||||
|
||||
if (empty1 == NULL && empty2 == NULL) {
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(0): passed (NULL)\n");
|
||||
mbedtls_printf(" CALLOC(0,1): passed (NULL)\n");
|
||||
}
|
||||
} else if (empty1 == NULL || empty2 == NULL) {
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(0): failed (mix of NULL and non-NULL)\n");
|
||||
mbedtls_printf(" CALLOC(0,1): failed (mix of NULL and non-NULL)\n");
|
||||
}
|
||||
++failures;
|
||||
} else if (empty1 == empty2) {
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(0): passed (same non-null)\n");
|
||||
mbedtls_printf(" CALLOC(0,1): passed (same non-null)\n");
|
||||
}
|
||||
} else {
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(0): passed (distinct non-null)\n");
|
||||
mbedtls_printf(" CALLOC(0,1): passed (distinct non-null)\n");
|
||||
}
|
||||
}
|
||||
|
||||
mbedtls_free(empty1);
|
||||
mbedtls_free(empty2);
|
||||
|
||||
empty1 = mbedtls_calloc(1, 0);
|
||||
empty2 = mbedtls_calloc(1, 0);
|
||||
if (empty1 == NULL && empty2 == NULL) {
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(1,0): passed (NULL)\n");
|
||||
}
|
||||
} else if (empty1 == NULL || empty2 == NULL) {
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(1,0): failed (mix of NULL and non-NULL)\n");
|
||||
}
|
||||
++failures;
|
||||
} else if (empty1 == empty2) {
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(1,0): passed (same non-null)\n");
|
||||
}
|
||||
} else {
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(1,0): passed (distinct non-null)\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -122,6 +150,28 @@ static int calloc_self_test(int verbose)
|
|||
}
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < buffer_3_size; i++) {
|
||||
if (buffer3[i] != 0) {
|
||||
++failures;
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(%u): failed (memory not initialized to 0)\n",
|
||||
buffer_3_size);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < buffer_4_size; i++) {
|
||||
if (buffer4[i] != 0) {
|
||||
++failures;
|
||||
if (verbose) {
|
||||
mbedtls_printf(" CALLOC(%u): failed (memory not initialized to 0)\n",
|
||||
buffer_4_size);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
mbedtls_printf("\n");
|
||||
}
|
||||
|
|
@ -129,6 +179,8 @@ static int calloc_self_test(int verbose)
|
|||
mbedtls_free(empty2);
|
||||
mbedtls_free(buffer1);
|
||||
mbedtls_free(buffer2);
|
||||
mbedtls_free(buffer3);
|
||||
mbedtls_free(buffer4);
|
||||
return failures;
|
||||
}
|
||||
#endif /* MBEDTLS_SELF_TEST */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue