diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2018-10-08 18:35:52 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2018-10-08 18:35:52 +0000 |
commit | aa7075b42cdc5f0a23d6aee0ca7ab5dfda8d8ed3 (patch) | |
tree | 999028229f570e68e6266c3c3a96423ecb7eb5c5 | |
parent | 42cc349feba90ab37143937a9165d3d87a2a5927 (diff) | |
parent | 7095d5577ff25bb41ca3171903ac03809cea9f35 (diff) | |
download | gnutls-aa7075b42cdc5f0a23d6aee0ca7ab5dfda8d8ed3.tar.gz |
Merge branch 'tmp-fix-584' into 'master'
Skip tests/tls13/prf.c if visibility 'protected' doesn't work
Closes #584
See merge request gnutls/gnutls!770
-rw-r--r-- | .gitlab-ci.yml | 2 | ||||
-rw-r--r-- | tests/tls13/prf.c | 9 | ||||
-rw-r--r-- | tests/utils.h | 5 |
3 files changed, 14 insertions, 2 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4c7d593cf7..06742b2069 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -464,7 +464,7 @@ Debian.x86_64: script: - ./bootstrap - mkdir -p build && cd build && - dash ../configure --disable-gcc-warnings --cache-file ../cache/config.cache --disable-doc --disable-guile --disable-full-test-suite && + dash ../configure --disable-gcc-warnings --cache-file ../cache/config.cache --disable-doc --disable-guile --disable-full-test-suite LDFLAGS='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' && make -j$(nproc) && make check -j$(nproc) - cd .. tags: diff --git a/tests/tls13/prf.c b/tests/tls13/prf.c index eb2d0e6096..75daff59d4 100644 --- a/tests/tls13/prf.c +++ b/tests/tls13/prf.c @@ -70,9 +70,13 @@ gnutls_datum_t hrnd = {(void*)"\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ static const gnutls_datum_t hsrnd = {(void*)"\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32}; +static int gnutls_rnd_works; + int __attribute__ ((visibility ("protected"))) gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) { + gnutls_rnd_works = 1; + memset(data, 0xff, len); /* Flip the first byte to avoid infinite loop in the RSA @@ -135,6 +139,11 @@ static void check_prfs(gnutls_session_t session) unsigned char key_material[512]; int ret; + if (!gnutls_rnd_works) { + fprintf(stderr, "gnutls_rnd() could not be overridden, see #584\n"); + exit(77); + } + TRY_OLD(13, "key expansion", 34, (uint8_t*)KEY_EXP_VALUE); TRY_OLD(6, "hello", 31, (uint8_t*)HELLO_VALUE); diff --git a/tests/utils.h b/tests/utils.h index d5409d661d..b905065c52 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -152,9 +152,12 @@ inline static void _check_wait_status(int status, unsigned sigonly) if (WIFSIGNALED(status)) { fail("Child died with signal %d\n", WTERMSIG(status)); } else { - if (!sigonly) + if (!sigonly) { + if (WEXITSTATUS(status) == 77) + exit(77); fail("Child died with status %d\n", WEXITSTATUS(status)); + } } } #endif |