diff --git a/src/x509_key.c b/src/x509_key.c index ad4e76e9..e0f88825 100644 --- a/src/x509_key.c +++ b/src/x509_key.c @@ -315,6 +315,9 @@ int x509_key_generate(X509_KEY *key, int algor, const void *param, size_t paraml void x509_key_cleanup(X509_KEY *key) { if (key) { + if (!key->algor) { + return; + } switch (key->algor) { case OID_ec_public_key: switch (key->algor_param) { diff --git a/tests/x509_keytest.c b/tests/x509_keytest.c index e0b85ee4..32a4384d 100644 --- a/tests/x509_keytest.c +++ b/tests/x509_keytest.c @@ -338,22 +338,20 @@ static int test_x509_private_key_info_encrypt_to_pem(void) const uint8_t *attrs; size_t attrslen; - if (!(fp = fopen("test_x509_private_key_info_encrypt_to_pem.pem", "w"))) { + if (!(fp = tmpfile())) { error_print(); return -1; } if (x509_private_key_info_encrypt_to_pem(&x509_keys[i], pass, fp) != 1) { error_print(); + fclose(fp); return -1; } - fclose(fp); + rewind(fp); - if (!(fp = fopen("test_x509_private_key_info_encrypt_to_pem.pem", "r"))) { - error_print(); - return -1; - } if (x509_private_key_info_decrypt_from_pem(&key, &attrs, &attrslen, pass, fp) != 1) { error_print(); + fclose(fp); return -1; } fclose(fp); @@ -373,28 +371,23 @@ static int test_x509_private_key_info_encrypt_to_pem(void) static int test_x509_private_key_info_decrypt_from_pem(void) { - const char *file = "test_x509_private_key_info_decrypt_from_pem.pem"; const char *pass = "P@ssw0rd"; FILE *fp; int i; - if (!(fp = fopen(file, "w"))) { + if (!(fp = tmpfile())) { error_print(); return -1; } for (i = 0; i < sizeof(tests)/sizeof(tests[0]) && tests[i].algor == OID_ec_public_key; i++) { if (x509_private_key_info_encrypt_to_pem(&x509_keys[i], pass, fp) != 1) { error_print(); + fclose(fp); return -1; } } - fclose(fp); - - if (!(fp = fopen(file, "r"))) { - error_print(); - return -1; - } + rewind(fp); while (1) { int ret; X509_KEY key; @@ -403,6 +396,7 @@ static int test_x509_private_key_info_decrypt_from_pem(void) if ((ret = x509_private_key_info_decrypt_from_pem(&key, &attrs, &attrslen, pass, fp)) < 0) { error_print(); + fclose(fp); return -1; } else if (ret == 0) { break; diff --git a/tools/tlcp_client.c b/tools/tlcp_client.c index 070e6878..43eb4a73 100644 --- a/tools/tlcp_client.c +++ b/tools/tlcp_client.c @@ -93,8 +93,7 @@ int tlcp_client_main(int argc, char *argv[]) if (!strcmp(*argv, "-help")) { printf("usage: gmssl %s %s\n\n", prog, usage); printf("%s\n", help); - ret = 0; - goto end; + return 0; } else if (!strcmp(*argv, "-host")) { if (--argc < 1) goto bad; host = *(++argv);