]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
tests: avoid the usage of tmpnam()
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 4 May 2016 06:07:37 +0000 (08:07 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 4 May 2016 06:07:39 +0000 (08:07 +0200)
Use a simpler version which is confined within the testsuite
build directories.

tests/Makefile.am
tests/set_x509_key_file.c
tests/set_x509_key_file_der.c
tests/set_x509_pkcs12_key.c
tests/utils.c
tests/utils.h

index f11057366ac02edbf9e38f3c0fd15a5a4b878baf..41c3b43b57fc5e11844f05343498489a72813485 100644 (file)
@@ -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)"
 
index b43dcd767f9b4fbf71390a61e02e67962b29007f..3661da5eb9363fbccaefe643d475e141afe3b653 100644 (file)
@@ -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)
index 7f2856cbeabf321aa35c8d142836e9e6b9471dfa..52c7c1e00b28b647b571bc84e62336845e02fdca 100644 (file)
 #include <gnutls/gnutls.h>
 #include <gnutls/x509.h>
 
-#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
index 83ff8beb7ed98022259b284c2af54aaa1cb89cfc..794d0e628d620d2b8634a9a6c28c728ee06f7b59 100644 (file)
 
 #include <stdio.h>
 #include <stdlib.h>
-
-#if defined(_WIN32)
-
-void doit(void)
-{
-       exit(77);
-}
-
-#else
-
 #include <assert.h>
 #include <gnutls/gnutls.h>
 #include <gnutls/x509.h>
@@ -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
index 62ed8533c2246d8127087209196a02e343f0f27b..2a0b944e07d8f8237c2d6d6263b0136aeb575eb6 100644 (file)
 #include <unistd.h>
 #include <errno.h>
 #ifndef _WIN32
-# include <netinet/in.h>
-# include <sys/socket.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
 #else
-# include <windows.h>          /* for Sleep */
-# include <winbase.h>  
+#include <windows.h>           /* for Sleep */
+#include <winbase.h>
 #endif
 
+#include <gnutls/gnutls.h>
+#include <gnutls/crypto.h>
+
 #include <sys/types.h>
 
 #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;
+}
index 24bfcd377814e86f51854e66ef5d86a8f6d71515..227a445ee15e7b4f1bbc3260b071886d958c252d 100644 (file)
@@ -23,6 +23,7 @@
 #ifndef UTILS_H
 #define UTILS_H
 
+#include <stdio.h>
 #include <signal.h>
 #include <string.h>
 #include <stdarg.h>
@@ -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);