Description: secure tmp files
 Use secure tmp files
Forwarded: not-needed
Author: Camm Maguire <camm@debian.org>

--- maxima-5.47.0.orig/src/gnuplot_def.lisp
+++ maxima-5.47.0/src/gnuplot_def.lisp
@@ -286,7 +286,7 @@
                (format nil "set term postscript eps color solid lw 2 size 16.4 cm, 12.3 cm font \",24\" ~a" gstrings)))
      (if (getf plot-options :gnuplot_out_file)
          (setq out-file (getf plot-options :gnuplot_out_file))
-         (setq out-file "maxplot.ps")))
+         (setq out-file (format nil "~a.ps" (random-name 16)))))
     ((eq (getf plot-options :gnuplot_term) '$dumb)
      (if (getf plot-options :gnuplot_dumb_term_command)
          (setq terminal-command
@@ -294,7 +294,7 @@
          (setq terminal-command "set term dumb 79 22"))
      (if (getf plot-options :gnuplot_out_file)
          (setq out-file (getf plot-options :gnuplot_out_file))
-         (setq out-file "maxplot.txt")))
+         (setq out-file (format nil "~a.txt" (random-name 16)))))
     ((eq (getf plot-options :gnuplot_term) '$default)
      (if (getf plot-options :gnuplot_default_term_command)
          (setq terminal-command
--- maxima-5.47.0.orig/src/plot.lisp
+++ maxima-5.47.0/src/plot.lisp
@@ -1755,6 +1755,13 @@ plot3d([cos(y)*(10.0+6*cos(x)), sin(y)*(
 
 (defvar $xmaxima_plot_command "xmaxima")
 
+(defun random-name (count)
+  (let ((chars "0123456789abcdefghijklmnopqrstuvwxyz") (name ""))
+    (setf *random-state* (make-random-state t))
+    (dotimes (i count)
+      (setq name (format nil "~a~a" name (aref chars (random 36)))))
+    name))
+
 (defun plot-set-gnuplot-script-file-name (options)
   (let ((gnuplot-term (getf options :gnuplot_term))
 	(gnuplot-out-file (getf options :gnuplot_out_file)))
@@ -1762,9 +1769,9 @@ plot3d([cos(y)*(10.0+6*cos(x)), sin(y)*(
              (eq gnuplot-term '$default) gnuplot-out-file)
 	(plot-file-path gnuplot-out-file t options)
       (plot-file-path
-       (format nil "maxout~d.~(~a~)"
-	       (getpid)
-               (ensure-string (getf options :plot_format))) nil options))))
+       (format nil "~a.~a" (random-name 16)
+               (ensure-string (getf options :plot_format)))
+       nil options))))
 
 (defun plot-temp-file0 (file &optional (preserve-file nil))
   (let ((filename 
@@ -2579,7 +2586,7 @@ plot2d ( x^2+y^2 = 1, [x, -2, 2], [y, -2
 
 (defun show-open-plot (ans file)
   (cond ($show_openplot
-         (with-open-file (st1 (plot-temp-file (format nil "maxout~d.xmaxima" (getpid))) :direction :output :if-exists :supersede)
+         (with-open-file (st1 (plot-temp-file (format nil "~a.xmaxima" (random-name 16))) :direction :output :if-exists :supersede)
            (princ  ans st1))
          ($system (concatenate 'string *maxima-prefix* 
                                (if (string= *autoconf-windows* "true") "\\bin\\" "/bin/") 
--- maxima-5.47.0.orig/src/xmaxima_def.lisp
+++ maxima-5.47.0/src/xmaxima_def.lisp
@@ -431,7 +431,7 @@
         (format $pstream "}~%"))))))
 
 (defmethod plot-shipout ((plot xmaxima-plot) options &optional output-file)
-  (let ((file (plot-file-path (format nil "maxout~d.xmaxima" (getpid)))))
+  (let ((file (plot-file-path (format nil "~a.xmaxima" (random-name 16)))))
     (cond ($show_openplot
            (with-open-file (fl
                             #+sbcl (sb-ext:native-namestring file)
