summaryrefslogtreecommitdiff
path: root/tests/set-default-prio.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/set-default-prio.c')
-rw-r--r--tests/set-default-prio.c51
1 files changed, 41 insertions, 10 deletions
diff --git a/tests/set-default-prio.c b/tests/set-default-prio.c
index 48e8bf19ae..cf4f00b764 100644
--- a/tests/set-default-prio.c
+++ b/tests/set-default-prio.c
@@ -35,6 +35,7 @@
#include "cert-common.h"
const char *side;
+extern const char *_gnutls_default_priority_string;
static void tls_log_func(int level, const char *str)
{
@@ -44,6 +45,7 @@ static void tls_log_func(int level, const char *str)
struct test_st {
const char *name;
const char *add_prio;
+ const char *def_prio;
int exp_err;
unsigned err_pos;
unsigned exp_vers;
@@ -68,6 +70,11 @@ static void start(struct test_st *test)
else
success("running %s\n", test->name);
+ if (test && test->def_prio)
+ _gnutls_default_priority_string = test->def_prio;
+ else
+ _gnutls_default_priority_string = "NORMAL";
+
/* General init. */
global_init();
gnutls_global_set_log_function(tls_log_func);
@@ -82,20 +89,32 @@ static void start(struct test_st *test)
assert(gnutls_init(&server, GNUTLS_SERVER) >= 0);
gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE,
serverx509cred);
- if (test == NULL)
+ if (test == NULL) {
ret = gnutls_set_default_priority(server);
- else
+ if (ret < 0)
+ fail("error: %s\n", gnutls_strerror(ret));
+ } else {
ret = gnutls_set_default_priority_append(server, test->add_prio, &ep, 0);
- if (ret < 0) {
- if (test->exp_err == ret) {
- if (ep-test->add_prio != test->err_pos) {
- fprintf(stderr, "diff: %d\n", (int)(ep-test->add_prio));
- fail("error expected error on different position[%d]: %s\n",
- test->err_pos, test->add_prio);
+ if (ret < 0) {
+ if (test->exp_err == ret) {
+ /* the &ep value is only accurate when the default priorities are not overriden;
+ * otherwise it should be a pointer to the start of the string */
+ if (strchr(_gnutls_default_priority_string, '@') != 0) {
+ if (ep != test->add_prio) {
+ fail("error expected error on start of string[%d]: %s\n",
+ test->err_pos, test->add_prio);
+ }
+ } else {
+ if (ep-test->add_prio != test->err_pos) {
+ fprintf(stderr, "diff: %d\n", (int)(ep-test->add_prio));
+ fail("error expected error on different position[%d]: %s\n",
+ test->err_pos, test->add_prio);
+ }
+ }
+ goto cleanup;
}
- goto cleanup;
+ fail("error: %s\n", gnutls_strerror(ret));
}
- fail("error: %s\n", gnutls_strerror(ret));
}
gnutls_transport_set_push_function(server, server_push);
@@ -226,29 +245,41 @@ static void start(struct test_st *test)
struct test_st tests[] = {
{
.name = "additional flag",
+ .def_prio = "NORMAL",
.add_prio = "%FORCE_ETM",
.exp_err = 0
},
{
.name = "additional flag typo1",
+ .def_prio = "NORMAL",
.add_prio = ":%FORCE_ETM",
.exp_err = GNUTLS_E_INVALID_REQUEST,
.err_pos = 0
},
{
.name = "additional flag typo2",
+ .def_prio = "NORMAL",
.add_prio = "%FORCE_ETM::%NO_TICKETS",
.exp_err = GNUTLS_E_INVALID_REQUEST,
.err_pos = 11
},
{
.name = "additional flag typo3",
+ .def_prio = "NORMAL",
.add_prio = "%FORCE_ETM:%%NO_TICKETS",
.exp_err = GNUTLS_E_INVALID_REQUEST,
.err_pos = 11
},
{
+ .name = "additional flag typo3 (with resolved def prio)",
+ .def_prio = "@HELLO",
+ .add_prio = "%FORCE_ETM:%%NO_TICKETS",
+ .exp_err = GNUTLS_E_INVALID_REQUEST,
+ .err_pos = 0
+ },
+ {
.name = "additional flag for version (functional)",
+ .def_prio = "NORMAL",
.add_prio = "-VERS-ALL:+VERS-TLS1.1",
.exp_err = 0,
.exp_etm = 1,