Fix issue with `benchmark_init` refactor where malloc failure could use null pointer. Added error checking on the `wolfCrypt_Init()`.

This commit is contained in:
David Garske 2017-07-21 09:31:12 -07:00
parent 7a972d9611
commit f0d6299581
1 changed files with 12 additions and 3 deletions

View File

@ -909,7 +909,10 @@ int benchmark_init(void)
} }
#endif /* WOLFSSL_STATIC_MEMORY */ #endif /* WOLFSSL_STATIC_MEMORY */
wolfCrypt_Init(); if ((ret = wolfCrypt_Init()) != 0) {
printf("wolfCrypt_Init failed %d\n", ret);
return EXIT_FAILURE;
}
bench_stats_init(); bench_stats_init();
@ -936,8 +939,11 @@ int benchmark_init(void)
bench_plain = (byte*)XMALLOC(block_size, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); bench_plain = (byte*)XMALLOC(block_size, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
bench_cipher = (byte*)XMALLOC(block_size, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); bench_cipher = (byte*)XMALLOC(block_size, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
if (bench_plain == NULL || bench_cipher == NULL) { if (bench_plain == NULL || bench_cipher == NULL) {
XFREE(bench_plain, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
XFREE(bench_cipher, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
printf("Benchmark block buffer alloc failed!\n"); printf("Benchmark block buffer alloc failed!\n");
ret = EXIT_FAILURE; return EXIT_FAILURE;
} }
XMEMSET(bench_plain, 0, block_size); XMEMSET(bench_plain, 0, block_size);
XMEMSET(bench_cipher, 0, block_size); XMEMSET(bench_cipher, 0, block_size);
@ -946,8 +952,11 @@ int benchmark_init(void)
bench_key = (byte*)XMALLOC(sizeof(bench_key_buf), HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); bench_key = (byte*)XMALLOC(sizeof(bench_key_buf), HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
bench_iv = (byte*)XMALLOC(sizeof(bench_iv_buf), HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); bench_iv = (byte*)XMALLOC(sizeof(bench_iv_buf), HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
if (bench_key == NULL || bench_iv == NULL) { if (bench_key == NULL || bench_iv == NULL) {
XFREE(bench_key, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
XFREE(bench_iv, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
printf("Benchmark cipher buffer alloc failed!\n"); printf("Benchmark cipher buffer alloc failed!\n");
ret = EXIT_FAILURE; return EXIT_FAILURE;
} }
XMEMCPY(bench_key, bench_key_buf, sizeof(bench_key_buf)); XMEMCPY(bench_key, bench_key_buf, sizeof(bench_key_buf));
XMEMCPY(bench_iv, bench_iv_buf, sizeof(bench_iv_buf)); XMEMCPY(bench_iv, bench_iv_buf, sizeof(bench_iv_buf));