[Logcheck-devel] Bug#750232: logtail2 should not not print the final log entry if it does not end with "\n"
Chris Stromsoe
cbs at ucla.edu
Mon Jun 2 17:25:40 UTC 2014
Package: logtail
Version: 1.3.15
Severity: wishlist
logtail2 does not do any sanity checking on the final line of input to
make sure that it is complete and "\n" terminated. If syslog is not set
to flush on every write, it's possible for consecutive runs of logcheck to
get a single log entry split in half for each run, resulting in false
positives from logcheck.
logtail2 should be updated to put back $_ if it is not "\n" terminated.
Maybe a change to something like:
sub print_from_offset {
my ($filename, $offset) = @_;
# this subroutine prints the contents of the file named $filename,
# starting offset $offset.
#print "print_from_offset $filename, $offset\n";
unless (open(LOGFILE, $filename)) {
print STDERR "File $logfile cannot be read: $!\n";
exit 66;
}
seek(LOGFILE, $offset, 0);
while (<LOGFILE>) {
last if eof(LOGFILE) && substr($_, -1, 1) ne "\n" && seek(LOGFILE, -1 * length($_), 1);
print $_ if
}
$size = tell LOGFILE;
close LOGFILE;
return $size;
}
More information about the Logcheck-devel
mailing list