os.tmpnam is unsafe.
authorDaniel Hokka Zakrisson <dhokka@cs.princeton.edu>
Thu, 4 Dec 2008 14:42:10 +0000 (14:42 +0000)
committerDaniel Hokka Zakrisson <dhokka@cs.princeton.edu>
Thu, 4 Dec 2008 14:42:10 +0000 (14:42 +0000)
modprobe.py
plnet.py

index d7fa2e3..638ebfa 100644 (file)
@@ -5,6 +5,7 @@
 """Modprobe is a utility to read/modify/write /etc/modprobe.conf"""
 
 import os
+import tempfile
 
 class Modprobe():
     def __init__(self,filename="/etc/modprobe.conf"):
@@ -80,8 +81,8 @@ class Modprobe():
             return False
 
     def output(self,filename="/etc/modprobe.conf",program="NodeManager"):
-        tmpnam = os.tmpnam()
-        fb = file(tmpnam,"w")
+        (fd, tmpnam) = tempfile.mkstemp(dir=os.path.dirname(filename))
+        fb = os.fdopen(fd, "w")
         fb.write("# Written out by %s\n" % program)
 
         for command in ("alias","options","install","remove","blacklist"):
index 4b0dc76..dfb7fb6 100644 (file)
--- a/plnet.py
+++ b/plnet.py
@@ -3,6 +3,7 @@
 import os
 import socket
 import time
+import tempfile
 
 import sioc
 import modprobe
@@ -177,8 +178,8 @@ def InitInterfaces(logger, plc, data, root="", files_only=False):
     # Process ifcg-$dev changes / additions
     newdevs = []
     for (dev, inter) in interfaces.iteritems():
-        tmpnam = os.tmpnam()
-        f = file(tmpnam, "w")
+        (fd, tmpnam) = tempfile.mkstemp(dir=sysconfig)
+        f = os.fdopen(fd, "w")
         f.write("# Autogenerated by NodeManager/net.py.... do not edit!\n")
         if 'DRIVER' in inter:
             f.write("# using %s driver for device %s\n" % (inter['DRIVER'],dev))