diff options
| author | bcook <> | 2015-09-12 15:25:33 +0000 | 
|---|---|---|
| committer | bcook <> | 2015-09-12 15:25:33 +0000 | 
| commit | 657e13c1455430e986037da3e68d98911f14b228 (patch) | |
| tree | 466cfec9ce727265863909f693eddb156dbbd598 | |
| parent | d9208300dec9ab7d0f92bfdd89445235cabc999b (diff) | |
| download | openbsd-657e13c1455430e986037da3e68d98911f14b228.tar.gz openbsd-657e13c1455430e986037da3e68d98911f14b228.tar.bz2 openbsd-657e13c1455430e986037da3e68d98911f14b228.zip | |
Cleanup enginetest a bit.
It was the only thing preventing -Werror from building on some systems due to
the unchecked asprintf's.
Diffstat (limited to '')
| -rw-r--r-- | src/regress/lib/libcrypto/engine/enginetest.c | 188 | 
1 files changed, 84 insertions, 104 deletions
| diff --git a/src/regress/lib/libcrypto/engine/enginetest.c b/src/regress/lib/libcrypto/engine/enginetest.c index 7a0b1a8751..0cb1d28d59 100644 --- a/src/regress/lib/libcrypto/engine/enginetest.c +++ b/src/regress/lib/libcrypto/engine/enginetest.c | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | * are met: | 10 | * are met: | 
| 11 | * | 11 | * | 
| 12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright | 
| 13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. | 
| 14 | * | 14 | * | 
| 15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in | 
| @@ -60,40 +60,35 @@ | |||
| 60 | #include <string.h> | 60 | #include <string.h> | 
| 61 | #include <openssl/e_os2.h> | 61 | #include <openssl/e_os2.h> | 
| 62 | 62 | ||
| 63 | #ifdef OPENSSL_NO_ENGINE | ||
| 64 | int main(int argc, char *argv[]) | ||
| 65 | { | ||
| 66 | printf("No ENGINE support\n"); | ||
| 67 | return(0); | ||
| 68 | } | ||
| 69 | #else | ||
| 70 | #include <openssl/buffer.h> | 63 | #include <openssl/buffer.h> | 
| 71 | #include <openssl/crypto.h> | 64 | #include <openssl/crypto.h> | 
| 72 | #include <openssl/engine.h> | 65 | #include <openssl/engine.h> | 
| 73 | #include <openssl/err.h> | 66 | #include <openssl/err.h> | 
| 74 | 67 | ||
| 75 | static void display_engine_list(void) | 68 | static void display_engine_list(void) | 
| 76 | { | 69 | { | 
| 77 | ENGINE *h; | 70 | ENGINE *h; | 
| 78 | int loop; | 71 | int loop; | 
| 79 | 72 | ||
| 80 | h = ENGINE_get_first(); | 73 | h = ENGINE_get_first(); | 
| 81 | loop = 0; | 74 | loop = 0; | 
| 82 | printf("listing available engine types\n"); | 75 | printf("listing available engine types\n"); | 
| 83 | while(h) | 76 | while (h) { | 
| 84 | { | ||
| 85 | printf("engine %i, id = \"%s\", name = \"%s\"\n", | 77 | printf("engine %i, id = \"%s\", name = \"%s\"\n", | 
| 86 | loop++, ENGINE_get_id(h), ENGINE_get_name(h)); | 78 | loop++, ENGINE_get_id(h), ENGINE_get_name(h)); | 
| 87 | h = ENGINE_get_next(h); | 79 | h = ENGINE_get_next(h); | 
| 88 | } | 80 | } | 
| 81 | |||
| 89 | printf("end of list\n"); | 82 | printf("end of list\n"); | 
| 90 | /* ENGINE_get_first() increases the struct_ref counter, so we | 83 | /* | 
| 91 | must call ENGINE_free() to decrease it again */ | 84 | * ENGINE_get_first() increases the struct_ref counter, so we must call | 
| 85 | * ENGINE_free() to decrease it again | ||
| 86 | */ | ||
| 92 | ENGINE_free(h); | 87 | ENGINE_free(h); | 
| 93 | } | 88 | } | 
| 94 | 89 | ||
| 95 | int main(int argc, char *argv[]) | 90 | int main(int argc, char *argv[]) | 
| 96 | { | 91 | { | 
| 97 | ENGINE *block[512]; | 92 | ENGINE *block[512]; | 
| 98 | char *id, *name; | 93 | char *id, *name; | 
| 99 | ENGINE *ptr; | 94 | ENGINE *ptr; | 
| @@ -107,156 +102,142 @@ int main(int argc, char *argv[]) | |||
| 107 | ERR_load_crypto_strings(); | 102 | ERR_load_crypto_strings(); | 
| 108 | 103 | ||
| 109 | memset(block, 0, 512 * sizeof(ENGINE *)); | 104 | memset(block, 0, 512 * sizeof(ENGINE *)); | 
| 110 | if(((new_h1 = ENGINE_new()) == NULL) || | 105 | if (((new_h1 = ENGINE_new()) == NULL) || | 
| 111 | !ENGINE_set_id(new_h1, "test_id0") || | 106 | !ENGINE_set_id(new_h1, "test_id0") || | 
| 112 | !ENGINE_set_name(new_h1, "First test item") || | 107 | !ENGINE_set_name(new_h1, "First test item") || | 
| 113 | ((new_h2 = ENGINE_new()) == NULL) || | 108 | ((new_h2 = ENGINE_new()) == NULL) || | 
| 114 | !ENGINE_set_id(new_h2, "test_id1") || | 109 | !ENGINE_set_id(new_h2, "test_id1") || | 
| 115 | !ENGINE_set_name(new_h2, "Second test item") || | 110 | !ENGINE_set_name(new_h2, "Second test item") || | 
| 116 | ((new_h3 = ENGINE_new()) == NULL) || | 111 | ((new_h3 = ENGINE_new()) == NULL) || | 
| 117 | !ENGINE_set_id(new_h3, "test_id2") || | 112 | !ENGINE_set_id(new_h3, "test_id2") || | 
| 118 | !ENGINE_set_name(new_h3, "Third test item") || | 113 | !ENGINE_set_name(new_h3, "Third test item") || | 
| 119 | ((new_h4 = ENGINE_new()) == NULL) || | 114 | ((new_h4 = ENGINE_new()) == NULL) || | 
| 120 | !ENGINE_set_id(new_h4, "test_id3") || | 115 | !ENGINE_set_id(new_h4, "test_id3") || | 
| 121 | !ENGINE_set_name(new_h4, "Fourth test item")) | 116 | !ENGINE_set_name(new_h4, "Fourth test item")) { | 
| 122 | { | ||
| 123 | printf("Couldn't set up test ENGINE structures\n"); | 117 | printf("Couldn't set up test ENGINE structures\n"); | 
| 124 | goto end; | 118 | goto end; | 
| 125 | } | 119 | } | 
| 120 | |||
| 126 | printf("\nenginetest beginning\n\n"); | 121 | printf("\nenginetest beginning\n\n"); | 
| 127 | display_engine_list(); | 122 | display_engine_list(); | 
| 128 | if(!ENGINE_add(new_h1)) | 123 | if (!ENGINE_add(new_h1)) { | 
| 129 | { | ||
| 130 | printf("Add failed!\n"); | 124 | printf("Add failed!\n"); | 
| 131 | goto end; | 125 | goto end; | 
| 132 | } | 126 | } | 
| 133 | display_engine_list(); | 127 | display_engine_list(); | 
| 134 | ptr = ENGINE_get_first(); | 128 | ptr = ENGINE_get_first(); | 
| 135 | if(!ENGINE_remove(ptr)) | 129 | if (!ENGINE_remove(ptr)) { | 
| 136 | { | ||
| 137 | printf("Remove failed!\n"); | 130 | printf("Remove failed!\n"); | 
| 138 | goto end; | 131 | goto end; | 
| 139 | } | 132 | } | 
| 140 | if (ptr) | 133 | if (ptr) | 
| 141 | ENGINE_free(ptr); | 134 | ENGINE_free(ptr); | 
| 142 | display_engine_list(); | 135 | display_engine_list(); | 
| 143 | if(!ENGINE_add(new_h3) || !ENGINE_add(new_h2)) | 136 | if (!ENGINE_add(new_h3) || !ENGINE_add(new_h2)) { | 
| 144 | { | ||
| 145 | printf("Add failed!\n"); | 137 | printf("Add failed!\n"); | 
| 146 | goto end; | 138 | goto end; | 
| 147 | } | 139 | } | 
| 148 | display_engine_list(); | 140 | display_engine_list(); | 
| 149 | if(!ENGINE_remove(new_h2)) | 141 | if (!ENGINE_remove(new_h2)) { | 
| 150 | { | ||
| 151 | printf("Remove failed!\n"); | 142 | printf("Remove failed!\n"); | 
| 152 | goto end; | 143 | goto end; | 
| 153 | } | 144 | } | 
| 154 | display_engine_list(); | 145 | display_engine_list(); | 
| 155 | if(!ENGINE_add(new_h4)) | 146 | if (!ENGINE_add(new_h4)) { | 
| 156 | { | ||
| 157 | printf("Add failed!\n"); | 147 | printf("Add failed!\n"); | 
| 158 | goto end; | 148 | goto end; | 
| 159 | } | 149 | } | 
| 160 | display_engine_list(); | 150 | display_engine_list(); | 
| 161 | if(ENGINE_add(new_h3)) | 151 | if (ENGINE_add(new_h3)) { | 
| 162 | { | ||
| 163 | printf("Add *should* have failed but didn't!\n"); | 152 | printf("Add *should* have failed but didn't!\n"); | 
| 164 | goto end; | 153 | goto end; | 
| 165 | } | 154 | } else | 
| 166 | else | ||
| 167 | printf("Add that should fail did.\n"); | 155 | printf("Add that should fail did.\n"); | 
| 168 | ERR_clear_error(); | 156 | ERR_clear_error(); | 
| 169 | if(ENGINE_remove(new_h2)) | 157 | if (ENGINE_remove(new_h2)) { | 
| 170 | { | ||
| 171 | printf("Remove *should* have failed but didn't!\n"); | 158 | printf("Remove *should* have failed but didn't!\n"); | 
| 172 | goto end; | 159 | goto end; | 
| 173 | } | 160 | } else | 
| 174 | else | ||
| 175 | printf("Remove that should fail did.\n"); | 161 | printf("Remove that should fail did.\n"); | 
| 176 | ERR_clear_error(); | 162 | ERR_clear_error(); | 
| 177 | if(!ENGINE_remove(new_h3)) | 163 | if (!ENGINE_remove(new_h3)) { | 
| 178 | { | ||
| 179 | printf("Remove failed!\n"); | 164 | printf("Remove failed!\n"); | 
| 180 | goto end; | 165 | goto end; | 
| 181 | } | 166 | } | 
| 182 | display_engine_list(); | 167 | display_engine_list(); | 
| 183 | if(!ENGINE_remove(new_h4)) | 168 | if (!ENGINE_remove(new_h4)) { | 
| 184 | { | ||
| 185 | printf("Remove failed!\n"); | 169 | printf("Remove failed!\n"); | 
| 186 | goto end; | 170 | goto end; | 
| 187 | } | 171 | } | 
| 188 | display_engine_list(); | 172 | display_engine_list(); | 
| 189 | /* Depending on whether there's any hardware support compiled | 173 | /* | 
| 190 | * in, this remove may be destined to fail. */ | 174 | * Depending on whether there's any hardware support compiled | 
| 175 | * in, this remove may be destined to fail. | ||
| 176 | */ | ||
| 191 | ptr = ENGINE_get_first(); | 177 | ptr = ENGINE_get_first(); | 
| 192 | if(ptr) | 178 | if (ptr) | 
| 193 | if(!ENGINE_remove(ptr)) | 179 | if (!ENGINE_remove(ptr)) | 
| 194 | printf("Remove failed!i - probably no hardware " | 180 | printf("Remove failed!i - probably no hardware " | 
| 195 | "support present.\n"); | 181 | "support present.\n"); | 
| 196 | if (ptr) | 182 | if (ptr) | 
| 197 | ENGINE_free(ptr); | 183 | ENGINE_free(ptr); | 
| 198 | display_engine_list(); | 184 | display_engine_list(); | 
| 199 | if(!ENGINE_add(new_h1) || !ENGINE_remove(new_h1)) | 185 | |
| 200 | { | 186 | if (!ENGINE_add(new_h1) || !ENGINE_remove(new_h1)) { | 
| 201 | printf("Couldn't add and remove to an empty list!\n"); | 187 | printf("Couldn't add and remove to an empty list!\n"); | 
| 202 | goto end; | 188 | goto end; | 
| 203 | } | 189 | } else | 
| 204 | else | ||
| 205 | printf("Successfully added and removed to an empty list!\n"); | 190 | printf("Successfully added and removed to an empty list!\n"); | 
| 191 | |||
| 206 | printf("About to beef up the engine-type list\n"); | 192 | printf("About to beef up the engine-type list\n"); | 
| 207 | for(loop = 0; loop < 512; loop++) | 193 | for (loop = 0; loop < 512; loop++) { | 
| 208 | { | 194 | if (asprintf(&id, "id%i", loop) == -1) | 
| 209 | asprintf(&id, "id%i", loop); | 195 | goto end; | 
| 210 | asprintf(&name, "Fake engine type %i", loop); | 196 | if (asprintf(&name, "Fake engine type %i", loop) == -1) | 
| 211 | if(((block[loop] = ENGINE_new()) == NULL) || | 197 | goto end; | 
| 212 | !id || !ENGINE_set_id(block[loop], id) || | 198 | |
| 213 | !name || !ENGINE_set_name(block[loop], name)) | 199 | if (((block[loop] = ENGINE_new()) == NULL) || | 
| 214 | { | 200 | !id || !ENGINE_set_id(block[loop], id) || | 
| 215 | printf("Couldn't create block of ENGINE structures.\n" | 201 | !name || !ENGINE_set_name(block[loop], name)) { | 
| 216 | "I'll probably also core-dump now, damn.\n"); | 202 | printf("Couldn't create block of ENGINE structures.\n"); | 
| 217 | goto end; | 203 | goto end; | 
| 218 | } | ||
| 219 | } | 204 | } | 
| 220 | for(loop = 0; loop < 512; loop++) | 205 | } | 
| 221 | { | 206 | |
| 222 | if(!ENGINE_add(block[loop])) | 207 | for (loop = 0; loop < 512; loop++) { | 
| 223 | { | 208 | if (!ENGINE_add(block[loop])) { | 
| 224 | printf("\nAdding stopped at %i, (%s,%s)\n", | 209 | printf("\nAdding stopped at %i, (%s,%s)\n", | 
| 225 | loop, ENGINE_get_id(block[loop]), | 210 | loop, ENGINE_get_id(block[loop]), | 
| 226 | ENGINE_get_name(block[loop])); | 211 | ENGINE_get_name(block[loop])); | 
| 227 | goto cleanup_loop; | 212 | goto cleanup_loop; | 
| 228 | } | 213 | } else | 
| 229 | else | ||
| 230 | printf("."); fflush(stdout); | 214 | printf("."); fflush(stdout); | 
| 231 | } | 215 | } | 
| 232 | cleanup_loop: | 216 | cleanup_loop: | 
| 233 | printf("\nAbout to empty the engine-type list\n"); | 217 | printf("\nAbout to empty the engine-type list\n"); | 
| 234 | while((ptr = ENGINE_get_first()) != NULL) | 218 | while ((ptr = ENGINE_get_first()) != NULL) { | 
| 235 | { | 219 | if (!ENGINE_remove(ptr)) { | 
| 236 | if(!ENGINE_remove(ptr)) | ||
| 237 | { | ||
| 238 | printf("\nRemove failed!\n"); | 220 | printf("\nRemove failed!\n"); | 
| 239 | goto end; | 221 | goto end; | 
| 240 | } | 222 | } | 
| 241 | ENGINE_free(ptr); | 223 | ENGINE_free(ptr); | 
| 242 | printf("."); fflush(stdout); | 224 | printf("."); fflush(stdout); | 
| 243 | } | 225 | } | 
| 244 | for(loop = 0; loop < 512; loop++) | 226 | for (loop = 0; loop < 512; loop++) { | 
| 245 | { | ||
| 246 | free((void *)ENGINE_get_id(block[loop])); | 227 | free((void *)ENGINE_get_id(block[loop])); | 
| 247 | free((void *)ENGINE_get_name(block[loop])); | 228 | free((void *)ENGINE_get_name(block[loop])); | 
| 248 | } | 229 | } | 
| 249 | printf("\nTests completed happily\n"); | 230 | printf("\nTests completed happily\n"); | 
| 250 | to_return = 0; | 231 | to_return = 0; | 
| 251 | end: | 232 | end: | 
| 252 | if(to_return) | 233 | if (to_return) | 
| 253 | ERR_print_errors_fp(stderr); | 234 | ERR_print_errors_fp(stderr); | 
| 254 | if(new_h1) ENGINE_free(new_h1); | 235 | if (new_h1) ENGINE_free(new_h1); | 
| 255 | if(new_h2) ENGINE_free(new_h2); | 236 | if (new_h2) ENGINE_free(new_h2); | 
| 256 | if(new_h3) ENGINE_free(new_h3); | 237 | if (new_h3) ENGINE_free(new_h3); | 
| 257 | if(new_h4) ENGINE_free(new_h4); | 238 | if (new_h4) ENGINE_free(new_h4); | 
| 258 | for(loop = 0; loop < 512; loop++) | 239 | for (loop = 0; loop < 512; loop++) | 
| 259 | if(block[loop]) | 240 | if (block[loop]) | 
| 260 | ENGINE_free(block[loop]); | 241 | ENGINE_free(block[loop]); | 
| 261 | ENGINE_cleanup(); | 242 | ENGINE_cleanup(); | 
| 262 | CRYPTO_cleanup_all_ex_data(); | 243 | CRYPTO_cleanup_all_ex_data(); | 
| @@ -264,5 +245,4 @@ end: | |||
| 264 | ERR_remove_thread_state(NULL); | 245 | ERR_remove_thread_state(NULL); | 
| 265 | CRYPTO_mem_leaks_fp(stderr); | 246 | CRYPTO_mem_leaks_fp(stderr); | 
| 266 | return to_return; | 247 | return to_return; | 
| 267 | } | 248 | } | 
| 268 | #endif | ||
