Skip to content

Commit

Permalink
Support tempfile creation in ssl_test
Browse files Browse the repository at this point in the history
  • Loading branch information
justinwsmith committed Mar 22, 2024
1 parent 2d2e86d commit d4b3a4c
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 25 deletions.
31 changes: 17 additions & 14 deletions crypto/test/test_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -88,28 +88,31 @@ bssl::UniquePtr<X509> CertFromPEM(const char *pem) {
}

#if defined(OPENSSL_WINDOWS)
#include <windows.h>
#ifndef PATH_MAX
#define PATH_MAX MAX_PATH
#endif
#include <fileapi.h>
FILE* createRawTempFILE() {
size_t createTempFILEpath(char buffer[PATH_MAX]) {
// On Windows, tmpfile() may attempt to create temp files in the root directory
// of the drive, which requires Admin privileges, resulting in test failure.
char pathname[PATH_MAX];
if(0 == GetTempPathA(PATH_MAX, pathname)) {
return nullptr;
return 0;
}
return GetTempFileNameA(pathname, "awslctest", 0, buffer);
}
#else
size_t createTempFILEpath(char buffer[PATH_MAX]) {
if(tmpnam(buffer) == nullptr) {
return 0;
}
return strnlen(buffer, PATH_MAX);
}
#endif

FILE* createRawTempFILE() {
char filename[PATH_MAX];
if(0 == GetTempFileNameA(pathname, "awslctest", 0, filename)) {
if(createTempFILEpath(filename) == 0) {
return nullptr;
}
return fopen(filename, "w+b");
}
#else
#include <stdio.h>
FILE* createRawTempFILE() {
return tmpfile();
}
#endif

TempFILE createTempFILE() {
return TempFILE(createRawTempFILE());
Expand Down
10 changes: 10 additions & 0 deletions crypto/test/test_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,16 @@ struct FileCloser {

using TempFILE = std::unique_ptr<FILE, FileCloser>;

#if defined(OPENSSL_WINDOWS)
#include <windows.h>
#ifndef PATH_MAX
#define PATH_MAX MAX_PATH
#endif
#else
#include <limits.h>
#endif

size_t createTempFILEpath(char buffer[PATH_MAX]);
FILE* createRawTempFILE();
TempFILE createTempFILE();

Expand Down
15 changes: 4 additions & 11 deletions ssl/ssl_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12111,17 +12111,10 @@ TEST(SSLTest, SSLFileTests) {

using ScopedFILE = std::unique_ptr<FILE, FileCloser>;

#if defined(OPENSSL_WINDOWS)
char rsa_pem_filename[FILENAME_MAX];
char ecdsa_pem_filename[FILENAME_MAX];
ASSERT_EQ(tmpnam_s(rsa_pem_filename, FILENAME_MAX), 0);
ASSERT_EQ(tmpnam_s(ecdsa_pem_filename, FILENAME_MAX), 0);
#else
char rsa_pem_filename[] = "/tmp/fileXXXXXX";
char ecdsa_pem_filename[] = "/tmp/fileXXXXXX";
ASSERT_TRUE(mkstemp(rsa_pem_filename));
ASSERT_TRUE(mkstemp(ecdsa_pem_filename));
#endif
char rsa_pem_filename[PATH_MAX];
char ecdsa_pem_filename[PATH_MAX];
ASSERT_TRUE(createTempFILEpath(rsa_pem_filename));
ASSERT_TRUE(createTempFILEpath(ecdsa_pem_filename));

ScopedFILE rsa_pem(fopen(rsa_pem_filename, "w"));
ScopedFILE ecdsa_pem(fopen(ecdsa_pem_filename, "w"));
Expand Down

0 comments on commit d4b3a4c

Please sign in to comment.