From ab5977c0ad6a45a7d92a6ca25dc89f343eb9413e Mon Sep 17 00:00:00 2001 From: kichik Date: Fri, 8 Dec 2006 12:20:58 +0000 Subject: [PATCH] use the safer mkstemp instead of tmpnam git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4839 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/VPatch/Source/GenPat/POSIXUtil.cpp | 20 +++++++++++--------- Contrib/VPatch/Source/GenPat/main.cpp | 2 ++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Contrib/VPatch/Source/GenPat/POSIXUtil.cpp b/Contrib/VPatch/Source/GenPat/POSIXUtil.cpp index 27368542..111a87e1 100644 --- a/Contrib/VPatch/Source/GenPat/POSIXUtil.cpp +++ b/Contrib/VPatch/Source/GenPat/POSIXUtil.cpp @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -108,21 +109,22 @@ namespace POSIX { return string(buffer); } #else -//#ifdef POSIX - // This is a POSIX version of the function, together with #include - // but I will not add it in a final release version. string getTempFile() { - char filebuf [L_tmpnam]; + char t[] = "/tmp/genpatXXXXXX"; - // create a temporary filename - const char *fname = tmpnam (filebuf); + mode_t old_umask = umask(0077); - if (!fname) + int fd = mkstemp(t); + if (fd == -1) { cerr << "Cannot create temporary filename"; + return ""; + } + close(fd); - return string(fname); + umask(old_umask); + + return string(t); } -//#endif #endif } diff --git a/Contrib/VPatch/Source/GenPat/main.cpp b/Contrib/VPatch/Source/GenPat/main.cpp index 68d83a13..c6fcebab 100644 --- a/Contrib/VPatch/Source/GenPat/main.cpp +++ b/Contrib/VPatch/Source/GenPat/main.cpp @@ -166,6 +166,8 @@ int main( int argc, char * argv[] ) { targetCRC->mode = TChecksum::MD5; // default string tempFileName = POSIX::getTempFile(); + if (tempFileName == "") + return 2; // open the files bifstream source;