Sys::Syslog::syslog can accept a message without printf
Gisle Aas [Sat, 3 Dec 2005 03:35:32 +0000 (19:35 -0800)]
escapes and arguments.

Subject: Re: Perl PR: "Security holes in Sys::Syslog"
Message-ID: <lracfi2z23.fsf@caliper.activestate.com>

p4raw-id: //depot/perl@26247

ext/Sys/Syslog/Syslog.pm

index c56d37c..4f06357 100644 (file)
@@ -7,7 +7,7 @@ use strict;
 our @ISA = qw(Exporter);
 our @EXPORT = qw(openlog closelog setlogmask syslog);
 our @EXPORT_OK = qw(setlogsock);
-our $VERSION = '0.07';
+our $VERSION = '0.08';
 
 # it would be nice to try stream/unix first, since that will be
 # most efficient. However streams are dodgy - see _syslog_send_stream
@@ -65,6 +65,8 @@ daemon.
 
 B<You should use openlog() before calling syslog().>
 
+=item syslog $priority, $message
+
 =item syslog $priority, $format, @args
 
 If I<$priority> permits, logs I<($format, @args)>
@@ -320,7 +322,7 @@ sub syslog {
 
     $mask =~ s/(?<!%)%m/$!/g;
     $mask .= "\n" unless $mask =~ /\n$/;
-    $message = sprintf ($mask, @_);
+    $message = @_ ? sprintf($mask, @_) : $mask;
 
     $sum = $numpri + $numfac;
     my $buf = "<$sum>$whoami: $message\0";