]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Applied changes from #296 for better checking.
authorArmin Ronacher <armin.ronacher@active-4.com>
Fri, 6 Jun 2014 16:44:49 +0000 (22:44 +0600)
committerArmin Ronacher <armin.ronacher@active-4.com>
Fri, 6 Jun 2014 16:44:49 +0000 (22:44 +0600)
jinja2/bccache.py

index 7b368aa61acda41110b6104948a6fe74d6ae21ba..4c090964eb4518b4973fe5dfda2b8c93105fd962 100644 (file)
@@ -17,6 +17,7 @@
 from os import path, listdir
 import os
 import sys
+import stat
 import errno
 import marshal
 import tempfile
@@ -227,15 +228,17 @@ class FileSystemBytecodeCache(BytecodeCache):
         dirname = '_jinja2-cache-%d' % os.getuid()
         actual_dir = os.path.join(tmpdir, dirname)
 
-        # 448 == 0700
         try:
-            os.mkdir(actual_dir, 448)
+            os.mkdir(actual_dir, stat.S_IRWXU)
         except OSError as e:
             if e.errno != errno.EEXIST:
                 raise
         try:
-            os.chmod(actual_dir, 448)
-            if os.stat(actual_dir).st_uid != os.getuid():
+            os.chmod(actual_dir, stat.S_IRWXU)
+            actual_dir_stat = os.lstat(actual_dir)
+            if actual_dir_stat.st_uid != os.getuid() \
+               or not stat.S_ISDIR(actual_dir_stat.st_mode) \
+               or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU:
                 _unsafe_dir()
         except OSError:
             _unsafe_dir()