helpers.function (3298B)
1 #line 2 "suites/helpers.function" 2 /*----------------------------------------------------------------------------*/ 3 /* Headers */ 4 5 #include <test/arguments.h> 6 #include <test/helpers.h> 7 #include <test/macros.h> 8 #include <test/random.h> 9 #include <test/bignum_helpers.h> 10 #include <test/psa_crypto_helpers.h> 11 #include <test/threading_helpers.h> 12 13 #include <errno.h> 14 #include <limits.h> 15 #include <stdint.h> 16 #include <stdlib.h> 17 #include <string.h> 18 19 #if defined(MBEDTLS_ERROR_C) 20 #include "mbedtls/error.h" 21 #endif 22 #include "mbedtls/platform.h" 23 24 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) 25 #include "mbedtls/memory_buffer_alloc.h" 26 #endif 27 28 #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) 29 #include <unistd.h> 30 #endif 31 32 /*----------------------------------------------------------------------------*/ 33 /* Status and error constants */ 34 35 #define DEPENDENCY_SUPPORTED 0 /* Dependency supported by build */ 36 #define KEY_VALUE_MAPPING_FOUND 0 /* Integer expression found */ 37 #define DISPATCH_TEST_SUCCESS 0 /* Test dispatch successful */ 38 39 #define KEY_VALUE_MAPPING_NOT_FOUND -1 /* Integer expression not found */ 40 #define DEPENDENCY_NOT_SUPPORTED -2 /* Dependency not supported */ 41 #define DISPATCH_TEST_FN_NOT_FOUND -3 /* Test function not found */ 42 #define DISPATCH_INVALID_TEST_DATA -4 /* Invalid test parameter type. 43 Only int, string, binary data 44 and integer expressions are 45 allowed */ 46 #define DISPATCH_UNSUPPORTED_SUITE -5 /* Test suite not supported by the 47 build */ 48 49 /*----------------------------------------------------------------------------*/ 50 /* Global variables */ 51 52 /*----------------------------------------------------------------------------*/ 53 /* Helper flags for complex dependencies */ 54 55 /* Indicates whether we expect mbedtls_entropy_init 56 * to initialize some strong entropy source. */ 57 #if !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) && \ 58 (!defined(MBEDTLS_NO_PLATFORM_ENTROPY) || \ 59 defined(MBEDTLS_ENTROPY_HARDWARE_ALT) || \ 60 defined(ENTROPY_NV_SEED)) 61 #define ENTROPY_HAVE_STRONG 62 #endif 63 64 65 /*----------------------------------------------------------------------------*/ 66 /* Helper Functions */ 67 68 #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) 69 static int redirect_output(FILE *out_stream, const char *path) 70 { 71 int out_fd, dup_fd; 72 FILE *path_stream; 73 74 out_fd = fileno(out_stream); 75 dup_fd = dup(out_fd); 76 77 if (dup_fd == -1) { 78 return -1; 79 } 80 81 path_stream = fopen(path, "w"); 82 if (path_stream == NULL) { 83 close(dup_fd); 84 return -1; 85 } 86 87 fflush(out_stream); 88 if (dup2(fileno(path_stream), out_fd) == -1) { 89 close(dup_fd); 90 fclose(path_stream); 91 return -1; 92 } 93 94 fclose(path_stream); 95 return dup_fd; 96 } 97 98 static int restore_output(FILE *out_stream, int dup_fd) 99 { 100 int out_fd = fileno(out_stream); 101 102 fflush(out_stream); 103 if (dup2(dup_fd, out_fd) == -1) { 104 close(out_fd); 105 close(dup_fd); 106 return -1; 107 } 108 109 close(dup_fd); 110 return 0; 111 } 112 #endif /* __unix__ || __APPLE__ __MACH__ */