Keine direkt vom Browser stammenden Strings bei open() verwenden.
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 11 May 2007 11:12:18 +0000 (11:12 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 11 May 2007 11:12:18 +0000 (11:12 +0000)
SL/BP.pm
bin/mozilla/bp.pl

index 94a1e6a..9365d23 100644 (file)
--- a/SL/BP.pm
+++ b/SL/BP.pm
@@ -263,7 +263,7 @@ sub delete_spool {
 sub print_spool {
   $main::lxdebug->enter_sub();
 
-  my ($self, $myconfig, $form, $spool) = @_;
+  my ($self, $myconfig, $form, $spool, $output) = @_;
 
   # connect to database
   my $dbh = $form->dbconnect($myconfig);
@@ -275,8 +275,10 @@ sub print_spool {
 
   foreach my $i (1 .. $form->{rowcount}) {
     if ($form->{"checked_$i"}) {
-      open(OUT, $form->{OUT}) or $form->error("$form->{OUT} : $!");
+      # $output is safe ( = does not come directly from the browser).
+      open(OUT, $output) or $form->error("$output : $!");
 
+      $form->{"spoolfile_$i"} =~ s|.*/||;
       $spoolfile = qq|$spool/$form->{"spoolfile_$i"}|;
 
       # send file to printer
index 457a35e..e430056 100644 (file)
@@ -325,10 +325,9 @@ sub print {
 
   for $i (1 .. $form->{rowcount}) {
     if ($form->{"checked_$i"}) {
-      $form->{OUT} = "| $selected_printer";
       $form->info($locale->text('Printing ... '));
 
-      if (BP->print_spool(\%myconfig, \%$form, $spool)) {
+      if (BP->print_spool(\%myconfig, \%$form, $spool, "| $selected_printer")) {
         print $locale->text('done');
         $form->redirect($locale->text('Marked entries printed!'));
       }