From 56de80602f43bc72d90f172fc0efcf4b283b402e Mon Sep 17 00:00:00 2001 From: Zhigang Gong Date: Sat, 8 Feb 2014 14:12:03 +0800 Subject: [PATCH] GBE: fixed the unsafe tmpnam_r. Use mkstemps instead. Signed-off-by: Zhigang Gong Reviewed-by: "Yang, Rong R" --- backend/src/backend/program.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp index 893cda3..2492a8b 100644 --- a/backend/src/backend/program.cpp +++ b/backend/src/backend/program.cpp @@ -652,13 +652,17 @@ namespace gbe { char *err, size_t *errSize) { - char clStr[L_tmpnam+1], llStr[L_tmpnam+1]; - const std::string clName = std::string(tmpnam_r(clStr)) + ".cl"; /* unsafe! */ - const std::string llName = std::string(tmpnam_r(llStr)) + ".ll"; /* unsafe! */ + char clStr[] = "/tmp/XXXXXX.cl"; + char llStr[] = "/tmp/XXXXXX.ll"; + int clFd = mkstemps(clStr, 3); + int llFd = mkstemps(llStr, 3); + close(llFd); + const std::string clName = std::string(clStr); + const std::string llName = std::string(llStr); std::string clOpt; int optLevel = 1; - FILE *clFile = fopen(clName.c_str(), "w"); + FILE *clFile = fdopen(clFd, "w"); FATAL_IF(clFile == NULL, "Failed to open temporary file"); bool usePCH = OCL_USE_PCH; -- 2.7.4