From 460955dc2ecd8b5dea082a827fadbd908f50b7d8 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Wed, 4 May 2016 08:07:37 +0200 Subject: tests: avoid the usage of tmpnam() Use a simpler version which is confined within the testsuite build directories. --- tests/Makefile.am | 2 + tests/set_x509_key_file.c | 2 +- tests/set_x509_key_file_der.c | 18 ++------ tests/set_x509_pkcs12_key.c | 13 +----- tests/utils.c | 105 ++++++++++++++++++++++++++---------------- tests/utils.h | 4 ++ 6 files changed, 78 insertions(+), 66 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index f11057366a..41c3b43b57 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -64,6 +64,7 @@ endif noinst_LTLIBRARIES = libutils.la pkglib_LTLIBRARIES = libutils_la_SOURCES = utils.h utils.c seccomp.c +libutils_la_LIBADD = ../lib/libgnutls.la ctests = mini-record-2 simple gc set_pkcs12_cred certder certuniqueid \ mpi certificate_set_x509_crl dn parse_ca moredn record-sizes \ @@ -233,6 +234,7 @@ TESTS_ENVIRONMENT = \ GNUTLS_SYSTEM_PRIORITY_FILE=$(srcdir)/system.prio \ PSK_FILE=$(srcdir)/psk.passwd \ EXEEXT=$(EXEEXT) \ + builddir="$(builddir)" \ top_builddir="$(top_builddir)" \ srcdir="$(srcdir)" diff --git a/tests/set_x509_key_file.c b/tests/set_x509_key_file.c index b43dcd767f..3661da5eb9 100644 --- a/tests/set_x509_key_file.c +++ b/tests/set_x509_key_file.c @@ -75,7 +75,7 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&xcred) >= 0); - certfile = tmpnam(NULL); + certfile = get_tmpname(NULL); fp = fopen(certfile, "w"); if (fp == NULL) diff --git a/tests/set_x509_key_file_der.c b/tests/set_x509_key_file_der.c index 7f2856cbea..52c7c1e00b 100644 --- a/tests/set_x509_key_file_der.c +++ b/tests/set_x509_key_file_der.c @@ -31,15 +31,6 @@ #include #include -#if defined(_WIN32) - -void doit(void) -{ - exit(77); -} - -#else - #include "cert-common.h" #include "utils.h" @@ -87,8 +78,8 @@ void doit(void) { int ret; gnutls_certificate_credentials_t xcred; - char keyfile[L_tmpnam]; - char certfile[L_tmpnam]; + char keyfile[TMPNAME_SIZE]; + char certfile[TMPNAME_SIZE]; gnutls_datum_t tcert; global_init(); @@ -98,8 +89,8 @@ void doit(void) if (TMP_MAX < 2) exit(77); - assert(tmpnam(certfile)!=NULL); - assert(tmpnam(keyfile)!=NULL); + assert(get_tmpname(certfile)!=NULL); + assert(get_tmpname(keyfile)!=NULL); write_der(certfile, "CERTIFICATE", (char*)server_cert_pem); write_der(keyfile, "RSA PRIVATE KEY", (char*)server_key_pem); @@ -125,4 +116,3 @@ void doit(void) gnutls_global_deinit(); } -#endif diff --git a/tests/set_x509_pkcs12_key.c b/tests/set_x509_pkcs12_key.c index 83ff8beb7e..794d0e628d 100644 --- a/tests/set_x509_pkcs12_key.c +++ b/tests/set_x509_pkcs12_key.c @@ -27,16 +27,6 @@ #include #include - -#if defined(_WIN32) - -void doit(void) -{ - exit(77); -} - -#else - #include #include #include @@ -84,7 +74,7 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&xcred) >= 0); - certfile = tmpnam(NULL); + certfile = get_tmpname(NULL); fp = fopen(certfile, "w"); if (fp == NULL) @@ -113,4 +103,3 @@ void doit(void) gnutls_global_deinit(); } -#endif diff --git a/tests/utils.c b/tests/utils.c index 62ed8533c2..2a0b944e07 100644 --- a/tests/utils.c +++ b/tests/utils.c @@ -31,13 +31,16 @@ #include #include #ifndef _WIN32 -# include -# include +#include +#include #else -# include /* for Sleep */ -# include +#include /* for Sleep */ +#include #endif +#include +#include + #include #include "utils.h" @@ -54,41 +57,39 @@ const char *pkcs3 = "-----END DH PARAMETERS-----\n"; const char *pkcs3_2048 = - "-----BEGIN DH PARAMETERS-----\n" - "MIICDgKCAQEAvVNCqM8M9ZoVYBKEkV2KN8ELHHJ75aTZiK9z6170iKSgbITkOxsd\n" - "aBCLzHZd7d6/2aNofUeuWdDGHm73d8v53ma2HRVCNESeC2LKsEDFG9FjjUeugvfl\n" - "zb85TLZwWT9Lb35Ddhdk7CtxoukjS0/JkCE+8RGzmk5+57N8tNffs4aSSHSe4+cw\n" - "i4wULDxiG2p052czAMP3YR5egWvMuiByhy0vKShiZmOy1/Os5r6E/GUF+298gDjG\n" - "OeaEUF9snrTcoBwB4yNjVSEbuAh5fMd5zFtz2+dzrk9TYZ44u4DQYkgToW05WcmC\n" - "+LG0bLAH6lrJR5OMgyheZEo6F20z/d2yyQKCAQEAtzcuTHW61SFQiDRouk6eD0Yx\n" - "0k1RJdaQdlRf6/Dcc6lEqnbezL90THzvxkBwfJ5jG1VZE7JlVCvLRkBtgb0/6SCf\n" - "MATfEKG2JMOnKsJxvidmKEp4uN32LketXRrrEBl7rS+HABEfKAzqx+J6trBaq25E\n" - "7FVJFsyoa8IL8N8YUWwhE2UuEfmiqQQaeoIUYC/xD2arMXn9N0W84Nyy2S9IL4ct\n" - "e3Azi1Wc8MMfpbxxDRxXCnM2uMkLYWs1lQmcUUX+Uygv3P8lgS+RJ1Pi3+BWMx0S\n" - "ocsZXqOr6dbEF1WOLObQRK7h/MZp80iVUyrBgX0MbVFN9M5i2u4KKTG95VKRtgIC\n" - "AQA=\n" - "-----END DH PARAMETERS-----\n"; + "-----BEGIN DH PARAMETERS-----\n" + "MIICDgKCAQEAvVNCqM8M9ZoVYBKEkV2KN8ELHHJ75aTZiK9z6170iKSgbITkOxsd\n" + "aBCLzHZd7d6/2aNofUeuWdDGHm73d8v53ma2HRVCNESeC2LKsEDFG9FjjUeugvfl\n" + "zb85TLZwWT9Lb35Ddhdk7CtxoukjS0/JkCE+8RGzmk5+57N8tNffs4aSSHSe4+cw\n" + "i4wULDxiG2p052czAMP3YR5egWvMuiByhy0vKShiZmOy1/Os5r6E/GUF+298gDjG\n" + "OeaEUF9snrTcoBwB4yNjVSEbuAh5fMd5zFtz2+dzrk9TYZ44u4DQYkgToW05WcmC\n" + "+LG0bLAH6lrJR5OMgyheZEo6F20z/d2yyQKCAQEAtzcuTHW61SFQiDRouk6eD0Yx\n" + "0k1RJdaQdlRf6/Dcc6lEqnbezL90THzvxkBwfJ5jG1VZE7JlVCvLRkBtgb0/6SCf\n" + "MATfEKG2JMOnKsJxvidmKEp4uN32LketXRrrEBl7rS+HABEfKAzqx+J6trBaq25E\n" + "7FVJFsyoa8IL8N8YUWwhE2UuEfmiqQQaeoIUYC/xD2arMXn9N0W84Nyy2S9IL4ct\n" + "e3Azi1Wc8MMfpbxxDRxXCnM2uMkLYWs1lQmcUUX+Uygv3P8lgS+RJ1Pi3+BWMx0S\n" + "ocsZXqOr6dbEF1WOLObQRK7h/MZp80iVUyrBgX0MbVFN9M5i2u4KKTG95VKRtgIC\n" + "AQA=\n" "-----END DH PARAMETERS-----\n"; const char *pkcs3_3072 = - "-----BEGIN DH PARAMETERS-----\n" - "MIIDDgKCAYEAtRUay8nDgwE5dSVzW525wEu/d0vrFolvYJSevxg2myj5S+gr3Fgq\n" - "OGaZc4zrBxkxsELc7GuCqaXSOWL4yobT8N05yGbYWkWRPf4crRMx3P7/Gba9WsmH\n" - "BlL71uPf1IN9CanAlabkhV89RKiYaCpUI19+/sq+N2dO874ToBZCNhxZnTgRZ+po\n" - "Gdr6XWM0lQ8imIKSer0px3ZHI+/5gmyPry35tGpwlbyclJAg3wlTSdnqDcLxq7AF\n" - "OZ23PzC3ij7SFErOX9EFBdS2bjtU47O3OkPc9EIYMEv5nwnXICLHslwVifmURAjV\n" - "LfpObL8LYGN4Gac4tFxuDa0PMg0ES5ADugYBwdRFTAtCy5WOYXINzAAOrH9MommT\n" - "rMkELf7JOCaV2ktBsvTlrgMAXeyqbf2YSG6CGjj4QnUuqPybSgwPru7VlahsS2lo\n" - "qjutBPpgIxS53o97Wi3V5kQedKJiNuIDNnJMFNuTADAM+OYwClTH7ZSwTsxEgVpr\n" - "tMH+WnTI7KTJAoIBgQCrELwIUB4oNbf0x+fIpVndhDpl/WcFc/lDtmiRuym5gWbb\n" - "NPeI+1rdhnS2R3+nCJODFQTcPNMgIJuSu2EnDCSs5xJ2k08SAgSzyxEdjBpY7qJe\n" - "+lJPJ12zhcl0vgcvMhb/YgqVe2MKz0RvnYZPwHM/aJbjYjq/6OpK3fVw4M1ZccBK\n" - "QD4OHK8HOvGU7Wf6kRIcxUlfn15spMCIsrAZQBddWLmQgktsxJNUS+AnaPwTBoOv\n" - "nGCr1vzw8OS1DtS03VCmtqt3otXhJ3D2oCIG6ogxVAKfHR30KIfzZLBfmCjdzHmH\n" - "x4OwYTN1wy5juA438QtiDtcgK60ZqSzQO08ZklRncA/TkkyEH6kPn5KSh/hW9O3D\n" - "KZeAY/KF0/Bc1XNtqPEYFb7Vo3rbTsyjXkICN1Hk9S0OIKL42K7rWBepO9KuddSd\n" - "aXgH9staP0HXCyyW1VAyqo0TwcWDhE/R7IQQGGwGyd4rD0T+ySW/t09ox23O6X8J\n" - "FSp6mOVNcuvhB5U2gW8CAgEA\n" - "-----END DH PARAMETERS-----\n"; + "-----BEGIN DH PARAMETERS-----\n" + "MIIDDgKCAYEAtRUay8nDgwE5dSVzW525wEu/d0vrFolvYJSevxg2myj5S+gr3Fgq\n" + "OGaZc4zrBxkxsELc7GuCqaXSOWL4yobT8N05yGbYWkWRPf4crRMx3P7/Gba9WsmH\n" + "BlL71uPf1IN9CanAlabkhV89RKiYaCpUI19+/sq+N2dO874ToBZCNhxZnTgRZ+po\n" + "Gdr6XWM0lQ8imIKSer0px3ZHI+/5gmyPry35tGpwlbyclJAg3wlTSdnqDcLxq7AF\n" + "OZ23PzC3ij7SFErOX9EFBdS2bjtU47O3OkPc9EIYMEv5nwnXICLHslwVifmURAjV\n" + "LfpObL8LYGN4Gac4tFxuDa0PMg0ES5ADugYBwdRFTAtCy5WOYXINzAAOrH9MommT\n" + "rMkELf7JOCaV2ktBsvTlrgMAXeyqbf2YSG6CGjj4QnUuqPybSgwPru7VlahsS2lo\n" + "qjutBPpgIxS53o97Wi3V5kQedKJiNuIDNnJMFNuTADAM+OYwClTH7ZSwTsxEgVpr\n" + "tMH+WnTI7KTJAoIBgQCrELwIUB4oNbf0x+fIpVndhDpl/WcFc/lDtmiRuym5gWbb\n" + "NPeI+1rdhnS2R3+nCJODFQTcPNMgIJuSu2EnDCSs5xJ2k08SAgSzyxEdjBpY7qJe\n" + "+lJPJ12zhcl0vgcvMhb/YgqVe2MKz0RvnYZPwHM/aJbjYjq/6OpK3fVw4M1ZccBK\n" + "QD4OHK8HOvGU7Wf6kRIcxUlfn15spMCIsrAZQBddWLmQgktsxJNUS+AnaPwTBoOv\n" + "nGCr1vzw8OS1DtS03VCmtqt3otXhJ3D2oCIG6ogxVAKfHR30KIfzZLBfmCjdzHmH\n" + "x4OwYTN1wy5juA438QtiDtcgK60ZqSzQO08ZklRncA/TkkyEH6kPn5KSh/hW9O3D\n" + "KZeAY/KF0/Bc1XNtqPEYFb7Vo3rbTsyjXkICN1Hk9S0OIKL42K7rWBepO9KuddSd\n" + "aXgH9staP0HXCyyW1VAyqo0TwcWDhE/R7IQQGGwGyd4rD0T+ySW/t09ox23O6X8J\n" + "FSp6mOVNcuvhB5U2gW8CAgEA\n" "-----END DH PARAMETERS-----\n"; void _fail(const char *format, ...) { @@ -151,7 +152,7 @@ void escapeprint(const char *str, size_t len) { size_t i; - printf(" (length %d bytes):\n\t", (int) len); + printf(" (length %d bytes):\n\t", (int)len); for (i = 0; i < len; i++) { if (((str[i] & 0xFF) >= 'A' && (str[i] & 0xFF) <= 'Z') || ((str[i] & 0xFF) >= 'a' && (str[i] & 0xFF) <= 'z') || @@ -223,7 +224,7 @@ int main(int argc, char *argv[]) argv[0]); return 1; } - while (argc-- > 1); + while (argc-- > 1) ; doit(); @@ -234,3 +235,29 @@ int main(int argc, char *argv[]) return error_count ? 1 : 0; } +char *get_tmpname(char s[TMPNAME_SIZE]) +{ + unsigned char rnd[6]; + static char _s[TMPNAME_SIZE]; + int ret; + char *p; + const char *path; + + ret = gnutls_rnd(GNUTLS_RND_NONCE, rnd, sizeof(rnd)); + if (ret < 0) + return NULL; + + path = getenv("builddir"); + if (path == NULL) + path = "."; + + if (s == NULL) + p = _s; + else + p = s; + + snprintf(p, TMPNAME_SIZE, "%s/tmpfile-%02x%02x%02x%02x%02x%02x.tmp", path, (unsigned)rnd[0], (unsigned)rnd[1], + (unsigned)rnd[2], (unsigned)rnd[3], (unsigned)rnd[4], (unsigned)rnd[5]); + + return p; +} diff --git a/tests/utils.h b/tests/utils.h index 24bfcd3778..227a445ee1 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -23,6 +23,7 @@ #ifndef UTILS_H #define UTILS_H +#include #include #include #include @@ -67,6 +68,9 @@ extern void binprint(const void *str, size_t len); int disable_system_calls(void); void sec_sleep(int sec); +#define TMPNAME_SIZE 128 +char *get_tmpname(char s[TMPNAME_SIZE]); + /* This must be implemented elsewhere. */ extern void doit(void); -- cgit v1.2.1