/*
- * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
*result = 0;
return 1;
}
+ TEST_error("parse_boolean given: '%s'", value);
return 0;
}
{ \
OPENSSL_free(ctx->field); \
ctx->field = OPENSSL_strdup(value); \
- TEST_check(ctx->field != NULL); \
- return 1; \
+ return TEST_ptr(ctx->field); \
}
#define IMPLEMENT_SSL_TEST_INT_OPTION(struct_type, name, field) \
IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, resumption_expected)
IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_SERVER_CONF, server, broken_session_ticket)
+IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, use_sctp)
/* CertStatus */
{ "ExpectedClientSignHash", &parse_expected_client_sign_hash },
{ "ExpectedClientSignType", &parse_expected_client_sign_type },
{ "ExpectedClientCANames", &parse_expected_client_ca_names },
+ { "UseSCTP", &parse_test_use_sctp },
};
/* Nested client options. */
{ "SRPPassword", &parse_server_srp_password },
};
-/*
- * Since these methods are used to create tests, we use TEST_check liberally
- * for malloc failures and other internal errors.
- */
SSL_TEST_CTX *SSL_TEST_CTX_new()
{
SSL_TEST_CTX *ret;
- ret = OPENSSL_zalloc(sizeof(*ret));
- TEST_check(ret != NULL);
- ret->app_data_size = default_app_data_size;
- ret->max_fragment_size = default_max_fragment_size;
+
+ /* The return code is checked by caller */
+ if ((ret = OPENSSL_zalloc(sizeof(*ret))) != NULL) {
+ ret->app_data_size = default_app_data_size;
+ ret->max_fragment_size = default_max_fragment_size;
+ }
return ret;
}
int i;
size_t j;
- sk_conf = NCONF_get_section(conf, client_section);
- TEST_check(sk_conf != NULL);
+ if (!TEST_ptr(sk_conf = NCONF_get_section(conf, client_section)))
+ return 0;
for (i = 0; i < sk_CONF_VALUE_num(sk_conf); i++) {
int found = 0;
for (j = 0; j < OSSL_NELEM(ssl_test_client_options); j++) {
if (strcmp(option->name, ssl_test_client_options[j].name) == 0) {
if (!ssl_test_client_options[j].parse(client, option->value)) {
- fprintf(stderr, "Bad value %s for option %s\n",
- option->value, option->name);
+ TEST_info("Bad value %s for option %s",
+ option->value, option->name);
return 0;
}
found = 1;
}
}
if (!found) {
- fprintf(stderr, "Unknown test option: %s\n", option->name);
+ TEST_info("Unknown test option: %s", option->name);
return 0;
}
}
int i;
size_t j;
- sk_conf = NCONF_get_section(conf, server_section);
- TEST_check(sk_conf != NULL);
+ if (!TEST_ptr(sk_conf = NCONF_get_section(conf, server_section)))
+ return 0;
for (i = 0; i < sk_CONF_VALUE_num(sk_conf); i++) {
int found = 0;
for (j = 0; j < OSSL_NELEM(ssl_test_server_options); j++) {
if (strcmp(option->name, ssl_test_server_options[j].name) == 0) {
if (!ssl_test_server_options[j].parse(server, option->value)) {
- fprintf(stderr, "Bad value %s for option %s\n",
- option->value, option->name);
+ TEST_info("Bad value %s for option %s",
+ option->value, option->name);
return 0;
}
found = 1;
}
}
if (!found) {
- fprintf(stderr, "Unknown test option: %s\n", option->name);
+ TEST_info("Unknown test option: %s", option->name);
return 0;
}
}
SSL_TEST_CTX *SSL_TEST_CTX_create(const CONF *conf, const char *test_section)
{
- STACK_OF(CONF_VALUE) *sk_conf;
- SSL_TEST_CTX *ctx;
+ STACK_OF(CONF_VALUE) *sk_conf = NULL;
+ SSL_TEST_CTX *ctx = NULL;
int i;
size_t j;
- sk_conf = NCONF_get_section(conf, test_section);
- TEST_check(sk_conf != NULL);
-
- ctx = SSL_TEST_CTX_new();
- TEST_check(ctx != NULL);
+ if (!TEST_ptr(sk_conf = NCONF_get_section(conf, test_section))
+ || !TEST_ptr(ctx = SSL_TEST_CTX_new()))
+ goto err;
for (i = 0; i < sk_CONF_VALUE_num(sk_conf); i++) {
int found = 0;
option->value))
goto err;
} else if (strcmp(option->name, "server") == 0) {
- if (!parse_server_options(&ctx->extra.server, conf,
- option->value))
+ if (!TEST_true(parse_server_options(&ctx->extra.server, conf,
+ option->value)))
goto err;
} else if (strcmp(option->name, "server2") == 0) {
- if (!parse_server_options(&ctx->extra.server2, conf,
- option->value))
+ if (!TEST_true(parse_server_options(&ctx->extra.server2, conf,
+ option->value)))
goto err;
} else if (strcmp(option->name, "resume-client") == 0) {
- if (!parse_client_options(&ctx->resume_extra.client, conf,
- option->value))
+ if (!TEST_true(parse_client_options(&ctx->resume_extra.client, conf,
+ option->value)))
goto err;
} else if (strcmp(option->name, "resume-server") == 0) {
- if (!parse_server_options(&ctx->resume_extra.server, conf,
- option->value))
+ if (!TEST_true(parse_server_options(&ctx->resume_extra.server, conf,
+ option->value)))
goto err;
} else if (strcmp(option->name, "resume-server2") == 0) {
if (!parse_server_options(&ctx->resume_extra.server2, conf,
for (j = 0; j < OSSL_NELEM(ssl_test_ctx_options); j++) {
if (strcmp(option->name, ssl_test_ctx_options[j].name) == 0) {
if (!ssl_test_ctx_options[j].parse(ctx, option->value)) {
- fprintf(stderr, "Bad value %s for option %s\n",
- option->value, option->name);
+ TEST_info("Bad value %s for option %s",
+ option->value, option->name);
goto err;
}
found = 1;
}
}
if (!found) {
- fprintf(stderr, "Unknown test option: %s\n", option->name);
+ TEST_info("Unknown test option: %s", option->name);
goto err;
}
}