@@ -26,6 +26,7 @@ import (
2626 "fmt"
2727 "io"
2828 "os"
29+ "runtime"
2930 "syscall"
3031 "testing"
3132 "time"
@@ -637,6 +638,9 @@ func TestAuditClientSetBacklogWaitTime(t *testing.T) {
637638 }
638639
639640 status , err := getStatus (t )
641+ if err != nil || status == nil {
642+ t .Skipf ("audit status not available: %v" , err )
643+ }
640644 if status .FeatureBitmap & AuditFeatureBitmapBacklogWaitTime == 0 {
641645 t .Skip ("backlog wait time feature not supported in current kernel" )
642646 }
@@ -735,21 +739,63 @@ func TestAuditClientGetStatusAsync(t *testing.T) {
735739}
736740
737741func TestRuleParsing (t * testing.T ) {
738- for idx , line := range []string {
739- "-a always,exit -F arch=b64 -S execve,execveat -F key=exec" ,
740- "-a never,exit -F arch=b64 -S connect,accept,bind -F key=external-access" ,
741- "-w /etc/group -p wa" ,
742- "-w /etc/passwd -p rx" ,
743- "-w /etc/gshadow -p rwxa" ,
744- "-w /tmp/test -p rwa" ,
745- "-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EACCES -F key=access" ,
746- "-a never,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EPERM -F key=access" ,
747- "-a always,exit -F arch=b32 -S open -F key=admin -F uid=root -F gid=root -F exit=33 -F path=/tmp -F perm=rwxa" ,
748- "-a always,exit -F arch=b64 -S open -F key=key -F uid=1111 -F gid=333 -F exit=-151111 -F filetype=fifo" ,
749- "-a never,exclude -F msgtype=GRP_CHAUTHTOK" ,
750- "-a always,user -F uid=root" ,
751- "-a always,task -F uid=root" ,
752- } {
742+ var rules []string
743+ switch runtime .GOARCH {
744+ case "386" :
745+ rules = []string {
746+ "-a always,exit -F arch=b32 -S execve,execveat -F key=exec" ,
747+ "-a never,exit -F arch=b32 -S bind,connect,accept4 -F key=external-access" ,
748+ "-w /etc/group -p wa" ,
749+ "-w /etc/passwd -p rx" ,
750+ "-w /etc/gshadow -p rwxa" ,
751+ "-w /tmp/test -p rwa" ,
752+ "-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -F key=access" ,
753+ "-a never,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -F key=access" ,
754+ "-a always,exit -F arch=b32 -S open -F key=admin -F uid=root -F gid=root -F exit=33 -F path=/tmp -F perm=rwxa" ,
755+ "-a always,exit -F arch=b32 -S open -F key=key -F uid=1111 -F gid=333 -F exit=-151111 -F filetype=fifo" ,
756+ "-a never,exclude -F msgtype=GRP_CHAUTHTOK" ,
757+ "-a always,user -F uid=root" ,
758+ "-a always,task -F uid=root" ,
759+ "-a always,exit -S mount -F pid=1234" ,
760+ }
761+ case "amd64" :
762+ rules = []string {
763+ "-a always,exit -F arch=b64 -S execve,execveat -F key=exec" ,
764+ "-a never,exit -F arch=b64 -S connect,accept,bind -F key=external-access" ,
765+ "-w /etc/group -p wa" ,
766+ "-w /etc/passwd -p rx" ,
767+ "-w /etc/gshadow -p rwxa" ,
768+ "-w /tmp/test -p rwa" ,
769+ "-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EACCES -F key=access" ,
770+ "-a never,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EPERM -F key=access" ,
771+ "-a always,exit -F arch=b32 -S open -F key=admin -F uid=root -F gid=root -F exit=33 -F path=/tmp -F perm=rwxa" ,
772+ "-a always,exit -F arch=b64 -S open -F key=key -F uid=1111 -F gid=333 -F exit=-151111 -F filetype=fifo" ,
773+ "-a never,exclude -F msgtype=GRP_CHAUTHTOK" ,
774+ "-a always,user -F uid=root" ,
775+ "-a always,task -F uid=root" ,
776+ "-a always,exit -S mount -F pid=1234" ,
777+ }
778+ default :
779+ // Can't have multiple syscall testing as ordering of individual syscalls
780+ // will vary between platforms (sorted by syscall id)
781+ rules = []string {
782+ "-a always,exit -S execve -F key=exec" ,
783+ "-w /etc/group -p wa" ,
784+ "-w /etc/passwd -p rx" ,
785+ "-w /etc/gshadow -p rwxa" ,
786+ "-w /tmp/test -p rwa" ,
787+ "-a always,exit -S all -F exit=-EACCES -F key=access" ,
788+ "-a never,exit -S all -F exit=-EPERM -F key=access" ,
789+ "-a always,exit -S open -F key=admin -F uid=root -F gid=root -F exit=33 -F path=/tmp -F perm=rwxa" ,
790+ "-a always,exit -S open -F key=key -F uid=1111 -F gid=333 -F exit=-151111 -F filetype=fifo" ,
791+ "-a never,exclude -F msgtype=GRP_CHAUTHTOK" ,
792+ "-a always,user -F uid=root" ,
793+ "-a always,task -F uid=root" ,
794+ "-a always,exit -S mount -F pid=1234" ,
795+ }
796+ }
797+ t .Logf ("checking %d rules" , len (rules ))
798+ for idx , line := range rules {
753799 msg := fmt .Sprintf ("parsing line #%d: `%s`" , idx , line )
754800 r , err := flags .Parse (line )
755801 if err != nil {
0 commit comments