[LON-CAPA-cvs] cvs: loncom /interface printout.pl

raeburn raeburn at source.lon-capa.org
Sun Nov 12 10:41:45 EST 2017


raeburn		Sun Nov 12 15:41:45 2017 EDT

  Modified files:              
    /loncom/interface	printout.pl 
  Log:
  - Untaint system() calls by forcing list processing mode.
  
  
Index: loncom/interface/printout.pl
diff -u loncom/interface/printout.pl:1.164 loncom/interface/printout.pl:1.165
--- loncom/interface/printout.pl:1.164	Sun Jan 29 23:53:55 2017
+++ loncom/interface/printout.pl	Sun Nov 12 15:41:45 2017
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc.
 #
-# $Id: printout.pl,v 1.164 2017/01/29 23:53:55 raeburn Exp $
+# $Id: printout.pl,v 1.165 2017/11/12 15:41:45 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -980,18 +980,29 @@
 	    $eps_f = $perlvar{'lonPrtDir'}.'/'.$eps_f;
 
 	    &debug("Converting pdf $not_eps to postscript: $eps_f");
-	    system("pdftops $not_eps $eps_f");
-	    $pdfs_converted++;	# Need to fix ps in last pass.
+            my @args = ('pdftops',$not_eps,$eps_f);
+            system({$args[0]} @args); # Indirect object forces list processing mode.
+                                      # See perlfunc documentation for exec().
+            if ($? and $advanced_role) {
+                print '<p class="LC_warning">'
+                     .&mt('An error occurred during the conversion of [_1] to postscript.',
+                          '<span class="LC_filename">'.$prettyname.'</span>')
+                     .'</p>';
+            } else {
+                $pdfs_converted++; # Need to fix ps in last pass.
+            }
 	} else {
-	    system("convert $not_eps $eps_f");
-        if($? and $advanced_role){
-            print '<p class="LC_warning">'
-                 .&mt('An error occurred during the conversion of [_1].',
+            my @args = ('convert',$not_eps,$eps_f);
+            system({$args[0]} @args); # Indirect object forces list processing mode.
+                                      # See perlfunc documentation for exec().
+            if ($? and $advanced_role) {
+                print '<p class="LC_warning">'
+                     .&mt('An error occurred during the conversion of [_1].',
                           '<span class="LC_filename">'.$prettyname.'</span>')
-                 .'<br />'
-                 .&mt('If possible try to save this image using different settings and republish it.')
-                 .'</p>';
-        }
+                     .'<br />'
+                     .&mt('If possible try to save this image using different settings and republish it.')
+                     .'</p>';
+            }
 	}
 
 	if (not -e $eps_f) {




More information about the LON-CAPA-cvs mailing list