1# The client fails to use sendsyslog syscall due to bad address. 2# The client writes one message wiht sendsyslog. 3# The syslogd passes it via UDP to the loghost. 4# The server receives the message on its UDP socket. 5# Find the message in client, file, pipe, syslogd, server log. 6# Create a ktrace dump of the client and check that sendsyslog(2) failed. 7# Check that there is no kernel dropped message. 8 9use strict; 10use warnings; 11use Errno ':POSIX'; 12require 'sys/syscall.ph'; 13 14my $errno = EFAULT; 15$! = $errno; 16my $error = $!; 17my $kerngrep = qr/sendsyslog: dropped \d+ messages?/; 18 19our %args = ( 20 client => { 21 connect => { domain => "sendsyslog" }, 22 func => sub { 23 my $self = shift; 24 # bad system call, NULL pointer as message 25 syscall(&SYS_sendsyslog, 0, 42, 0) != -1 26 or warn ref($self), " sendsyslog NULL failed: $!"; 27 write_log($self); 28 }, 29 ktrace => { 30 qr/CALL sendsyslog\(/ => 3, 31 qr/RET sendsyslog -1 errno $errno / => 1, 32 }, 33 loggrep => { 34 get_firstlog() => 0, 35 qr/Client sendsyslog NULL failed: $error/ => 1, 36 get_testgrep() => 1, 37 }, 38 }, 39 syslogd => { 40 loggrep => { 41 qr/msg $kerngrep/ => 0, 42 get_testgrep() => 1, 43 }, 44 }, 45 server => { 46 loggrep => { 47 $kerngrep => 0, 48 get_testgrep() => 1, 49 }, 50 }, 51 file => { 52 loggrep => { 53 $kerngrep => 0, 54 get_testgrep() => 1, 55 }, 56 }, 57); 58 591; 60