X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=util.cpp;h=a85de446a87f9451610f90c401f716e2fab86e5e;hp=dadeb379cd6d4be0154d1de53de1ef6a7d551183;hb=b757a4a2ce9d24835b52a185134835762af2f50c;hpb=db58dd9934afbb1fe93e6d6d408335f4ed35afab diff --git a/util.cpp b/util.cpp index dadeb37..a85de44 100644 --- a/util.cpp +++ b/util.cpp @@ -16,16 +16,18 @@ using namespace std; -int make_tempfile(const std::string &contents) +int make_tempfile(const string &contents) { - char filename[] = "/tmp/cubemap.XXXXXX"; - int fd = open(filename, O_RDWR | O_TMPFILE, 0600); + int fd = open("/tmp", O_RDWR | O_TMPFILE, 0600); if (fd == -1) { + char filename[] = "/tmp/cubemap.XXXXXX"; + mode_t old_umask = umask(077); fd = mkstemp(filename); if (fd == -1) { log_perror("mkstemp"); return -1; } + umask(old_umask); if (unlink(filename) == -1) { log_perror("unlink"); @@ -50,14 +52,14 @@ int make_tempfile(const std::string &contents) return fd; } -bool read_tempfile_and_close(int fd, std::string *contents) +bool read_tempfile_and_close(int fd, string *contents) { bool ok = read_tempfile(fd, contents); safe_close(fd); // Implicitly deletes the file. return ok; } -bool read_tempfile(int fd, std::string *contents) +bool read_tempfile(int fd, string *contents) { ssize_t ret, has_read;