Set umask explicitly before calling mkstemp().
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 24 Apr 2014 22:49:51 +0000 (00:49 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 24 Apr 2014 22:49:51 +0000 (00:49 +0200)
For the benefit of super-old glibc versions (pre-2.06).

Found by Coverity Scan.

util.cpp

index dadeb37..5659bed 100644 (file)
--- a/util.cpp
+++ b/util.cpp
@@ -21,11 +21,13 @@ int make_tempfile(const std::string &contents)
        char filename[] = "/tmp/cubemap.XXXXXX";
        int fd = open(filename, O_RDWR | O_TMPFILE, 0600);
        if (fd == -1) {
+               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");