Package: libseccomp Version: 2.2.1-1 Severity: wishlist Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu wily ubuntu-patch
Dear Maintainer, In Ubuntu, the attached patch was applied to achieve the following: - add autopkgtests Thanks for considering the patch. -- System Information: Debian Release: jessie/sid APT prefers vivid-updates APT policy: (500, 'vivid-updates'), (500, 'vivid-security'), (500, 'vivid') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.19.0-20-generic (SMP w/4 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system)
diff -Nru libseccomp-2.2.1/debian/changelog libseccomp-2.2.1/debian/changelog diff -Nru libseccomp-2.2.1/debian/control libseccomp-2.2.1/debian/control --- libseccomp-2.2.1/debian/control 2015-05-17 12:05:40.000000000 -0500 +++ libseccomp-2.2.1/debian/control 2015-06-12 15:59:10.000000000 -0500 @@ -5,6 +5,7 @@ Build-Depends: debhelper (>= 9), dh-autoreconf, linux-libc-dev Standards-Version: 3.9.6 Homepage: https://sourceforge.net/projects/libseccomp/ +XS-Testsuite: autopkgtest Package: libseccomp-dev Section: libdevel diff -Nru libseccomp-2.2.1/debian/tests/control libseccomp-2.2.1/debian/tests/control --- libseccomp-2.2.1/debian/tests/control 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/control 2015-05-04 15:21:11.000000000 -0500 @@ -0,0 +1,3 @@ +Tests: test-filter test-scmp_sys_resolver +Restrictions: allow-stderr +Depends: @, build-essential, linux-libc-dev diff -Nru libseccomp-2.2.1/debian/tests/data/all-3.19.filter libseccomp-2.2.1/debian/tests/data/all-3.19.filter --- libseccomp-2.2.1/debian/tests/data/all-3.19.filter 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/data/all-3.19.filter 2015-05-01 13:04:43.000000000 -0500 @@ -0,0 +1,414 @@ +# all syscalls from 3.19 +syscalls: +accept +accept4 +access +acct +add_key +adjtimex +afs_syscall +alarm +arch_prctl +arm_fadvise64_64 +arm_sync_file_range +bdflush +bind +bpf +break +breakpoint +brk +cacheflush +capget +capset +chdir +chmod +chown +chown32 +chroot +clock_adjtime +clock_getres +clock_gettime +clock_nanosleep +clock_settime +clone +close +connect +creat +create_module +delete_module +dup +dup2 +dup3 +epoll_create +epoll_create1 +epoll_ctl +epoll_ctl_old +epoll_pwait +epoll_wait +epoll_wait_old +eventfd +eventfd2 +execve +execveat +exit +exit_group +faccessat +fadvise64 +fadvise64_64 +fallocate +fanotify_init +fanotify_mark +fchdir +fchmod +fchmodat +fchown +fchown32 +fchownat +fcntl +fcntl64 +fdatasync +fgetxattr +finit_module +flistxattr +flock +fork +fremovexattr +fsetxattr +fstat +fstat64 +fstatat64 +fstatfs +fstatfs64 +fsync +ftime +ftruncate +ftruncate64 +futex +futimesat +getcpu +getcwd +getdents +getdents64 +getegid +getegid32 +geteuid +geteuid32 +getgid +getgid32 +getgroups +getgroups32 +getitimer +get_kernel_syms +get_mempolicy +getpeername +getpgid +getpgrp +getpid +getpmsg +getppid +getpriority +getrandom +getresgid +getresgid32 +getresuid +getresuid32 +getrlimit +get_robust_list +getrusage +getsid +getsockname +getsockopt +get_thread_area +gettid +gettimeofday +getuid +getuid32 +getxattr +gtty +idle +init_module +inotify_add_watch +inotify_init +inotify_init1 +inotify_rm_watch +io_cancel +ioctl +io_destroy +io_getevents +ioperm +iopl +ioprio_get +ioprio_set +io_setup +io_submit +ipc +kcmp +kexec_file_load +kexec_load +keyctl +kill +lchown +lchown32 +lgetxattr +link +linkat +listen +listxattr +llistxattr +_llseek +lock +lookup_dcookie +lremovexattr +lseek +lsetxattr +lstat +lstat64 +madvise +mbind +memfd_create +migrate_pages +mincore +mkdir +mkdirat +mknod +mknodat +mlock +mlockall +mmap +mmap2 +modify_ldt +mount +move_pages +mprotect +mpx +mq_getsetattr +mq_notify +mq_open +mq_timedreceive +mq_timedsend +mq_unlink +mremap +msgctl +msgget +msgrcv +msgsnd +msync +multiplexer +munlock +munlockall +munmap +name_to_handle_at +nanosleep +newfstatat +_newselect +nfsservctl +nice +oldfstat +oldlstat +oldolduname +oldstat +olduname +open +openat +open_by_handle_at +pause +pciconfig_iobase +pciconfig_read +pciconfig_write +perf_event_open +personality +pipe +pipe2 +pivot_root +poll +ppoll +prctl +pread64 +preadv +prlimit64 +process_vm_readv +process_vm_writev +prof +profil +pselect6 +ptrace +putpmsg +pwrite64 +pwritev +query_module +quotactl +read +readahead +readdir +readlink +readlinkat +readv +reboot +recv +recvfrom +recvmmsg +recvmsg +remap_file_pages +removexattr +rename +renameat +renameat2 +request_key +restart_syscall +rmdir +rtas +rt_sigaction +rt_sigpending +rt_sigprocmask +rt_sigqueueinfo +rt_sigreturn +rt_sigsuspend +rt_sigtimedwait +rt_tgsigqueueinfo +sched_getaffinity +sched_getattr +sched_getparam +sched_get_priority_max +sched_get_priority_min +sched_getscheduler +sched_rr_get_interval +sched_setaffinity +sched_setattr +sched_setparam +sched_setscheduler +sched_yield +seccomp +security +select +semctl +semget +semop +semtimedop +send +sendfile +sendfile64 +sendmmsg +sendmsg +sendto +setdomainname +setfsgid +setfsgid32 +setfsuid +setfsuid32 +setgid +setgid32 +setgroups +setgroups32 +sethostname +setitimer +set_mempolicy +setns +setpgid +setpriority +setregid +setregid32 +setresgid +setresgid32 +setresuid +setresuid32 +setreuid +setreuid32 +setrlimit +set_robust_list +setsid +setsockopt +set_thread_area +set_tid_address +settimeofday +set_tls +setuid +setuid32 +setxattr +sgetmask +shmat +shmctl +shmdt +shmget +shutdown +sigaction +sigaltstack +signal +signalfd +signalfd4 +sigpending +sigprocmask +sigreturn +sigsuspend +socket +socketcall +socketpair +splice +spu_create +spu_run +ssetmask +stat +stat64 +statfs +statfs64 +stime +stty +subpage_prot +swapcontext +swapoff +swapon +switch_endian +symlink +symlinkat +sync +sync_file_range +sync_file_range2 +syncfs +syscall +_sysctl +sys_debug_setcontext +sysfs +sysinfo +syslog +tee +tgkill +time +timer_create +timer_delete +timerfd_create +timerfd_gettime +timerfd_settime +timer_getoverrun +timer_gettime +timer_settime +times +tkill +truncate +truncate64 +tuxcall +ugetrlimit +ulimit +umask +umount +umount2 +uname +unlink +unlinkat +unshare +uselib +usr26 +usr32 +ustat +utime +utimensat +utimes +vfork +vhangup +vm86 +vm86old +vmsplice +vserver +wait4 +waitid +waitpid +write +writev diff -Nru libseccomp-2.2.1/debian/tests/data/getrandom.fail_filter libseccomp-2.2.1/debian/tests/data/getrandom.fail_filter --- libseccomp-2.2.1/debian/tests/data/getrandom.fail_filter 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/data/getrandom.fail_filter 2015-05-04 15:12:18.000000000 -0500 @@ -0,0 +1,293 @@ +# 'safe' syscalls as allowed by snappy, but missing 'open' +accept +accept4 +access +alarm +arch_prctl +arm_fadvise64_64 +arm_sync_file_range +bind +breakpoint +brk +cacheflush +capget +chdir +chmod +clock_getres +clock_gettime +clock_nanosleep +clone +close +connect +creat +dup +dup2 +dup3 +epoll_create +epoll_create1 +epoll_ctl +epoll_ctl_old +epoll_pwait +epoll_wait +epoll_wait_old +eventfd +eventfd2 +execve +execveat +exit +exit_group +faccessat +fadvise64 +fadvise64_64 +fallocate +fchdir +fchmod +fchmodat +fcntl +fcntl64 +fdatasync +fgetxattr +flistxattr +flock +fork +fremovexattr +fsetxattr +fstat +fstat64 +fstatat64 +fstatfs +fstatfs64 +fstatvfs +fsync +ftime +ftruncate +ftruncate64 +futex +futimesat +getcpu +getcwd +getdents +getdents64 +getegid +getegid32 +geteuid +geteuid32 +getgid +getgid32 +getgroups +getgroups32 +getitimer +get_mempolicy +getpeername +getpgid +getpgrp +getpid +getppid +getpriority +# omit this to cause failures +# getrandom +getresgid +getresgid32 +getresuid +getresuid32 +getrlimit +get_robust_list +getrusage +getsid +getsockname +getsockopt +get_thread_area +gettid +gettimeofday +getuid +getuid32 +getxattr +inotify_add_watch +inotify_init +inotify_init1 +inotify_rm_watch +io_cancel +ioctl +io_destroy +io_getevents +ioprio_get +io_setup +io_submit +ipc +kill +lgetxattr +link +linkat +listen +listxattr +llistxattr +llseek +lremovexattr +lseek +lsetxattr +lstat +lstat64 +madvise +mbind +mincore +mkdir +mkdirat +mlock +mlockall +mmap +mmap2 +mprotect +mremap +msgctl +msgget +msgrcv +msgsnd +msync +munlock +munlockall +munmap +nanosleep +newfstatat +oldfstat +oldlstat +oldolduname +oldstat +olduname +oldwait4 +open +openat +pause +pipe +pipe2 +poll +ppoll +prctl +pread +pread64 +preadv +prlimit64 +pselect +pselect6 +pwrite +pwrite64 +pwritev +read +readahead +readdir +readlink +readlinkat +readv +recv +recvfrom +recvmmsg +recvmsg +remap_file_pages +removexattr +rename +renameat +renameat2 +restart_syscall +rmdir +rt_sigaction +rt_sigpending +rt_sigprocmask +rt_sigqueueinfo +rt_sigreturn +rt_sigsuspend +rt_sigtimedwait +rt_tgsigqueueinfo +sched_getaffinity +sched_getattr +sched_getparam +sched_get_priority_max +sched_get_priority_min +sched_getscheduler +sched_rr_get_interval +sched_setscheduler +sched_yield +select +semctl +semget +semop +semtimedop +send +sendfile +sendfile64 +sendmmsg +sendmsg +sendto +setitimer +set_mempolicy +setrlimit +set_robust_list +setsid +setsockopt +set_thread_area +set_tid_address +set_tls +setxattr +shmat +shmctl +shmdt +shmget +shutdown +sigaction +sigaltstack +signal +signalfd +signalfd4 +sigpending +sigprocmask +sigreturn +sigsuspend +sigtimedwait +sigwaitinfo +socket +socketpair +splice +stat +stat64 +statfs +statfs64 +statvfs +symlink +symlinkat +sync +sync_file_range +sync_file_range2 +syncfs +sysinfo +syslog +tee +tgkill +time +timer_create +timer_delete +timerfd_create +timerfd_gettime +timerfd_settime +timer_getoverrun +timer_gettime +timer_settime +times +tkill +truncate +truncate64 +ugetrlimit +umask +uname +unlink +unlinkat +usr26 +usr32 +ustat +utime +utimensat +utimes +vfork +vmsplice +wait4 +waitid +waitpid +write +writev diff -Nru libseccomp-2.2.1/debian/tests/data/getrandom.filter libseccomp-2.2.1/debian/tests/data/getrandom.filter --- libseccomp-2.2.1/debian/tests/data/getrandom.filter 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/data/getrandom.filter 2015-05-04 15:18:08.000000000 -0500 @@ -0,0 +1,294 @@ +accept +accept4 +access +alarm +arch_prctl +arm_fadvise64_64 +arm_sync_file_range +bind +breakpoint +brk +cacheflush +capget +chdir +chmod +clock_getres +clock_gettime +clock_nanosleep +clone +close +connect +creat +dup +dup2 +dup3 +epoll_create +epoll_create1 +epoll_ctl +epoll_ctl_old +epoll_pwait +epoll_wait +epoll_wait_old +eventfd +eventfd2 +execve +execveat +exit +_exit +exit_group +faccessat +fadvise64 +fadvise64_64 +fallocate +fchdir +fchmod +fchmodat +fcntl +fcntl64 +fdatasync +fgetxattr +flistxattr +flock +fork +fremovexattr +fsetxattr +fstat +fstat64 +fstatat64 +fstatfs +fstatfs64 +fstatvfs +fsync +ftime +ftruncate +ftruncate64 +futex +futimesat +getcpu +getcwd +getdents +getdents64 +getegid +getegid32 +geteuid +geteuid32 +getgid +getgid32 +getgroups +getgroups32 +getitimer +get_mempolicy +getpeername +getpgid +getpgrp +getpid +getppid +getpriority +getrandom +getresgid +getresgid32 +getresuid +getresuid32 +getrlimit +get_robust_list +getrusage +getsid +getsockname +getsockopt +get_thread_area +gettid +gettimeofday +getuid +getuid32 +getxattr +inotify_add_watch +inotify_init +inotify_init1 +inotify_rm_watch +io_cancel +ioctl +io_destroy +io_getevents +ioprio_get +io_setup +io_submit +ipc +kill +lgetxattr +link +linkat +listen +listxattr +llistxattr +llseek +_llseek +lremovexattr +lseek +lsetxattr +lstat +lstat64 +madvise +mbind +mincore +mkdir +mkdirat +mlock +mlockall +mmap +mmap2 +mprotect +mremap +msgctl +msgget +msgrcv +msgsnd +msync +munlock +munlockall +munmap +nanosleep +newfstatat +_newselect +oldfstat +oldlstat +oldolduname +oldstat +olduname +oldwait4 +open +openat +pause +pipe +pipe2 +poll +ppoll +prctl +pread +pread64 +preadv +prlimit64 +pselect +pselect6 +pwrite +pwrite64 +pwritev +read +readahead +readdir +readlink +readlinkat +readv +recv +recvfrom +recvmmsg +recvmsg +remap_file_pages +removexattr +rename +renameat +renameat2 +restart_syscall +rmdir +rt_sigaction +rt_sigpending +rt_sigprocmask +rt_sigqueueinfo +rt_sigreturn +rt_sigsuspend +rt_sigtimedwait +rt_tgsigqueueinfo +sched_getaffinity +sched_getattr +sched_getparam +sched_get_priority_max +sched_get_priority_min +sched_getscheduler +sched_rr_get_interval +sched_setscheduler +sched_yield +select +semctl +semget +semop +semtimedop +send +sendfile +sendfile64 +sendmmsg +sendmsg +sendto +setitimer +set_mempolicy +setrlimit +set_robust_list +setsid +setsockopt +set_thread_area +set_tid_address +set_tls +setxattr +shmat +shmctl +shmdt +shmget +shutdown +sigaction +sigaltstack +signal +signalfd +signalfd4 +sigpending +sigprocmask +sigreturn +sigsuspend +sigtimedwait +sigwaitinfo +socket +socketpair +splice +stat +stat64 +statfs +statfs64 +statvfs +symlink +symlinkat +sync +sync_file_range +sync_file_range2 +syncfs +sysinfo +syslog +tee +tgkill +time +timer_create +timer_delete +timerfd_create +timerfd_gettime +timerfd_settime +timer_getoverrun +timer_gettime +timer_settime +times +tkill +truncate +truncate64 +ugetrlimit +umask +uname +unlink +unlinkat +usr26 +usr32 +ustat +utime +utimensat +utimes +vfork +vmsplice +wait4 +waitid +waitpid +write +writev diff -Nru libseccomp-2.2.1/debian/tests/data/open.fail_filter libseccomp-2.2.1/debian/tests/data/open.fail_filter --- libseccomp-2.2.1/debian/tests/data/open.fail_filter 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/data/open.fail_filter 2015-05-01 13:04:43.000000000 -0500 @@ -0,0 +1,293 @@ +# 'safe' syscalls as allowed by snappy, but missing 'open' +accept +accept4 +access +alarm +arch_prctl +arm_fadvise64_64 +arm_sync_file_range +bind +breakpoint +brk +cacheflush +capget +chdir +chmod +clock_getres +clock_gettime +clock_nanosleep +clone +close +connect +creat +dup +dup2 +dup3 +epoll_create +epoll_create1 +epoll_ctl +epoll_ctl_old +epoll_pwait +epoll_wait +epoll_wait_old +eventfd +eventfd2 +execve +execveat +exit +exit_group +faccessat +fadvise64 +fadvise64_64 +fallocate +fchdir +fchmod +fchmodat +fcntl +fcntl64 +fdatasync +fgetxattr +flistxattr +flock +fork +fremovexattr +fsetxattr +fstat +fstat64 +fstatat64 +fstatfs +fstatfs64 +fstatvfs +fsync +ftime +ftruncate +ftruncate64 +futex +futimesat +getcpu +getcwd +getdents +getdents64 +getegid +getegid32 +geteuid +geteuid32 +getgid +getgid32 +getgroups +getgroups32 +getitimer +get_mempolicy +getpeername +getpgid +getpgrp +getpid +getppid +getpriority +getrandom +getresgid +getresgid32 +getresuid +getresuid32 +getrlimit +get_robust_list +getrusage +getsid +getsockname +getsockopt +get_thread_area +gettid +gettimeofday +getuid +getuid32 +getxattr +inotify_add_watch +inotify_init +inotify_init1 +inotify_rm_watch +io_cancel +ioctl +io_destroy +io_getevents +ioprio_get +io_setup +io_submit +ipc +kill +lgetxattr +link +linkat +listen +listxattr +llistxattr +llseek +lremovexattr +lseek +lsetxattr +lstat +lstat64 +madvise +mbind +mincore +mkdir +mkdirat +mlock +mlockall +mmap +mmap2 +mprotect +mremap +msgctl +msgget +msgrcv +msgsnd +msync +munlock +munlockall +munmap +nanosleep +newfstatat +oldfstat +oldlstat +oldolduname +oldstat +olduname +oldwait4 +# omit this for causing failures +# open +openat +pause +pipe +pipe2 +poll +ppoll +prctl +pread +pread64 +preadv +prlimit64 +pselect +pselect6 +pwrite +pwrite64 +pwritev +read +readahead +readdir +readlink +readlinkat +readv +recv +recvfrom +recvmmsg +recvmsg +remap_file_pages +removexattr +rename +renameat +renameat2 +restart_syscall +rmdir +rt_sigaction +rt_sigpending +rt_sigprocmask +rt_sigqueueinfo +rt_sigreturn +rt_sigsuspend +rt_sigtimedwait +rt_tgsigqueueinfo +sched_getaffinity +sched_getattr +sched_getparam +sched_get_priority_max +sched_get_priority_min +sched_getscheduler +sched_rr_get_interval +sched_setscheduler +sched_yield +select +semctl +semget +semop +semtimedop +send +sendfile +sendfile64 +sendmmsg +sendmsg +sendto +setitimer +set_mempolicy +setrlimit +set_robust_list +setsid +setsockopt +set_thread_area +set_tid_address +set_tls +setxattr +shmat +shmctl +shmdt +shmget +shutdown +sigaction +sigaltstack +signal +signalfd +signalfd4 +sigpending +sigprocmask +sigreturn +sigsuspend +sigtimedwait +sigwaitinfo +socket +socketpair +splice +stat +stat64 +statfs +statfs64 +statvfs +symlink +symlinkat +sync +sync_file_range +sync_file_range2 +syncfs +sysinfo +syslog +tee +tgkill +time +timer_create +timer_delete +timerfd_create +timerfd_gettime +timerfd_settime +timer_getoverrun +timer_gettime +timer_settime +times +tkill +truncate +truncate64 +ugetrlimit +umask +uname +unlink +unlinkat +usr26 +usr32 +ustat +utime +utimensat +utimes +vfork +vmsplice +wait4 +waitid +waitpid +write +writev diff -Nru libseccomp-2.2.1/debian/tests/data/safe.filter libseccomp-2.2.1/debian/tests/data/safe.filter --- libseccomp-2.2.1/debian/tests/data/safe.filter 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/data/safe.filter 2015-05-01 16:08:52.000000000 -0500 @@ -0,0 +1,294 @@ +accept +accept4 +access +alarm +arch_prctl +arm_fadvise64_64 +arm_sync_file_range +bind +breakpoint +brk +cacheflush +capget +chdir +chmod +clock_getres +clock_gettime +clock_nanosleep +clone +close +connect +creat +dup +dup2 +dup3 +epoll_create +epoll_create1 +epoll_ctl +epoll_ctl_old +epoll_pwait +epoll_wait +epoll_wait_old +eventfd +eventfd2 +execve +execveat +exit +_exit +exit_group +faccessat +fadvise64 +fadvise64_64 +fallocate +fchdir +fchmod +fchmodat +fcntl +fcntl64 +fdatasync +fgetxattr +flistxattr +flock +fork +fremovexattr +fsetxattr +fstat +fstat64 +fstatat64 +fstatfs +fstatfs64 +fstatvfs +fsync +ftime +ftruncate +ftruncate64 +futex +futimesat +getcpu +getcwd +getdents +getdents64 +getegid +getegid32 +geteuid +geteuid32 +getgid +getgid32 +getgroups +getgroups32 +getitimer +get_mempolicy +getpeername +getpgid +getpgrp +getpid +getppid +getpriority +getrandom +getresgid +getresgid32 +getresuid +getresuid32 +getrlimit +get_robust_list +getrusage +getsid +getsockname +getsockopt +get_thread_area +gettid +gettimeofday +getuid +getuid32 +getxattr +inotify_add_watch +inotify_init +inotify_init1 +inotify_rm_watch +io_cancel +ioctl +io_destroy +io_getevents +ioprio_get +io_setup +io_submit +ipc +kill +lgetxattr +link +linkat +listen +listxattr +llistxattr +llseek +_llseek +lremovexattr +lseek +lsetxattr +lstat +lstat64 +madvise +mbind +mincore +mkdir +mkdirat +mlock +mlockall +mmap +mmap2 +mprotect +mremap +msgctl +msgget +msgrcv +msgsnd +msync +munlock +munlockall +munmap +nanosleep +newfstatat +_newselect +oldfstat +oldlstat +oldolduname +oldstat +olduname +oldwait4 +open +openat +pause +pipe +pipe2 +poll +ppoll +prctl +pread +pread64 +preadv +prlimit64 +pselect +pselect6 +pwrite +pwrite64 +pwritev +read +readahead +readdir +readlink +readlinkat +readv +recv +recvfrom +recvmmsg +recvmsg +remap_file_pages +removexattr +rename +renameat +renameat2 +restart_syscall +rmdir +rt_sigaction +rt_sigpending +rt_sigprocmask +rt_sigqueueinfo +rt_sigreturn +rt_sigsuspend +rt_sigtimedwait +rt_tgsigqueueinfo +sched_getaffinity +sched_getattr +sched_getparam +sched_get_priority_max +sched_get_priority_min +sched_getscheduler +sched_rr_get_interval +sched_setscheduler +sched_yield +select +semctl +semget +semop +semtimedop +send +sendfile +sendfile64 +sendmmsg +sendmsg +sendto +setitimer +set_mempolicy +setrlimit +set_robust_list +setsid +setsockopt +set_thread_area +set_tid_address +set_tls +setxattr +shmat +shmctl +shmdt +shmget +shutdown +sigaction +sigaltstack +signal +signalfd +signalfd4 +sigpending +sigprocmask +sigreturn +sigsuspend +sigtimedwait +sigwaitinfo +socket +socketpair +splice +stat +stat64 +statfs +statfs64 +statvfs +symlink +symlinkat +sync +sync_file_range +sync_file_range2 +syncfs +sysinfo +syslog +tee +tgkill +time +timer_create +timer_delete +timerfd_create +timerfd_gettime +timerfd_settime +timer_getoverrun +timer_gettime +timer_settime +times +tkill +truncate +truncate64 +ugetrlimit +umask +uname +unlink +unlinkat +usr26 +usr32 +ustat +utime +utimensat +utimes +vfork +vmsplice +wait4 +waitid +waitpid +write +writev diff -Nru libseccomp-2.2.1/debian/tests/data/unrestricted.filter libseccomp-2.2.1/debian/tests/data/unrestricted.filter --- libseccomp-2.2.1/debian/tests/data/unrestricted.filter 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/data/unrestricted.filter 2015-05-01 13:04:43.000000000 -0500 @@ -0,0 +1 @@ +@unrestricted diff -Nru libseccomp-2.2.1/debian/tests/src/getrandom.c libseccomp-2.2.1/debian/tests/src/getrandom.c --- libseccomp-2.2.1/debian/tests/src/getrandom.c 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/src/getrandom.c 2015-05-04 15:11:22.000000000 -0500 @@ -0,0 +1,30 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/syscall.h> +#include <errno.h> + +#include <linux/random.h> + +int main (void) { + int ret; + int buflen = 256; + char buf[buflen]; + buf[0] = '\0'; + + ret = syscall(SYS_getrandom, buf, buflen, 0); + if (ret < 0) { + printf("FAIL (error)\n"); + return ret; + } + if (ret == buflen) { + printf("PASS\n"); + return 0; + } + printf("FAIL (short read: %i)\n", ret); + return 1; + +failure: + errno = EIO; + return -1; +} diff -Nru libseccomp-2.2.1/debian/tests/src/test-seccomp.c libseccomp-2.2.1/debian/tests/src/test-seccomp.c --- libseccomp-2.2.1/debian/tests/src/test-seccomp.c 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/src/test-seccomp.c 2015-05-04 13:53:38.000000000 -0500 @@ -0,0 +1,159 @@ +/* + * Copyright (C) 2015 Canonical Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Based on ubuntu-core-launcher from: lp:ubuntu-core-launcher + * + * gcc -o test-seccomp test-seccomp.c -lseccomp + */ +#include <unistd.h> +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> +#include <string.h> +#include <fcntl.h> +#include <stdarg.h> +#include <seccomp.h> + +void die(const char *msg, ...) +{ + va_list va; + va_start(va, msg); + vfprintf(stderr, msg, va); + va_end(va); + + fprintf(stderr, "\n"); + exit(1); +} + +void debug(const char *msg, ...) +{ + va_list va; + va_start(va, msg); + fprintf(stderr, "DEBUG: "); + vfprintf(stderr, msg, va); + fprintf(stderr, "\n"); + va_end(va); +} + +// strip whitespace from the end of the given string (inplace) +size_t trim_right(char *s, size_t slen) { + while(slen > 0 && isspace(s[slen - 1])) { + s[--slen] = 0; + } + return slen; +} + +int seccomp_load_filters(const char *profile_path) +{ + debug("seccomp_load_filters %s", profile_path); + int rc = 0; + int syscall_nr = -1; + scmp_filter_ctx ctx = NULL; + FILE *f = NULL; + size_t lineno = 0; + + ctx = seccomp_init(SCMP_ACT_KILL); + if (ctx == NULL) + return ENOMEM; + + f = fopen(profile_path, "r"); + if (f == NULL) { + fprintf(stderr, "Can not open %s (%s)\n", profile_path, strerror(errno)); + return -1; + } + // 80 characters + '\n' + '\0' + char buf[82]; + while (fgets(buf, sizeof(buf), f) != NULL) + { + size_t len; + + lineno++; + + // comment, ignore + if(buf[0] == '#') + continue; + + // ensure the entire line was read + len = strlen(buf); + if (len == 0) + continue; + else if (buf[len - 1] != '\n' && len > (sizeof(buf) - 2)) { + fprintf(stderr, "seccomp filter line %zu was too long (%zu characters max)\n", lineno, sizeof(buf) - 2); + rc = -1; + goto out; + } + + // kill final newline + len = trim_right(buf, len); + if (len == 0) + continue; + + // check for special "@unrestricted" command + if (strncmp(buf, "@unrestricted", sizeof(buf)) == 0) + goto out; + + // syscall not available on this arch/kernel + // as this is a syscall whitelist its ok and the error can be ignored + syscall_nr = seccomp_syscall_resolve_name(buf); + if (syscall_nr == __NR_SCMP_ERROR) + continue; + + // a normal line with a syscall + rc = seccomp_rule_add_exact(ctx, SCMP_ACT_ALLOW, syscall_nr, 0); + if (rc != 0) { + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, syscall_nr, 0); + if (rc != 0) { + fprintf(stderr, "seccomp_rule_add failed with %i for '%s'\n", rc, buf); + goto out; + } + } + } + + // load it into the kernel + rc = seccomp_load(ctx); + if (rc != 0) { + fprintf(stderr, "seccomp_load failed with %i\n", rc); + goto out; + } + + out: + if (f != NULL) { + fclose(f); + } + seccomp_release(ctx); + return rc; +} + +int main(int argc, char **argv) +{ + int rc; + const int NR_ARGS = 1; + if(argc < NR_ARGS+1) + die("Usage: %s <filter file> <binary>", argv[0]); + + const char *filter = argv[1]; + const char *binary = argv[2]; + + // set seccomp + rc = seccomp_load_filters(filter); + if (rc != 0) + die("seccomp_load_filters failed with %i\n", rc); + + // and exec the new binary + argv[NR_ARGS] = (char*)binary, + execv(binary, (char *const*)&argv[NR_ARGS+1]); + perror("execv failed"); + return 1; +} diff -Nru libseccomp-2.2.1/debian/tests/test-filter libseccomp-2.2.1/debian/tests/test-filter --- libseccomp-2.2.1/debian/tests/test-filter 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/test-filter 2015-05-04 15:19:49.000000000 -0500 @@ -0,0 +1,75 @@ +#!/bin/sh +# ------------------------------------------------------------------ +# +# Copyright (C) 2015 Canonical Ltd. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of version 2 of the GNU General Public +# License published by the Free Software Foundation. +# +# ------------------------------------------------------------------ + +set -e + +if [ -z "$ADTTMP" ]; then + echo "Please set ADTTMP" >&2 + exit 1 +fi + +if [ ! -d "$ADTTMP" ]; then + echo "Could not find ADTTMP ($ADTTMP)" >&2 + exit 1 +fi + +exe="$ADTTMP/exe" + +run_filter() { + if [ ! -x "$exe" ]; then + gcc -o "$exe" ./debian/tests/src/test-seccomp.c -lseccomp + fi + + filter="$1" + + exe2="$ADTTMP/getrandom" + if [ "`basename $filter`" = "getrandom.fail_filter" ]; then + if [ ! -x "$exe2" ]; then + gcc -o "$exe2" ./debian/tests/src/getrandom.c + fi + + "$exe" "$filter" "$exe2" + elif [ "`basename $filter`" = "getrandom.filter" ]; then + if [ ! -x "$exe2" ]; then + gcc -o "$exe2" ./debian/tests/src/getrandom.c + fi + + "$exe" "$filter" "$exe2" + else + "$exe" "$filter" /bin/date + fi +} + +failed= +# expected pass +for i in ./debian/tests/data/*.filter ; do + echo "= $i =" + run_filter $i || { + echo "FAIL: expected to pass" + failed="yes" + } +done + +# expected fail +for i in ./debian/tests/data/*.fail_filter ; do + echo "= $i =" + run_filter $i 2>&1 && { + echo "FAIL: expected to error" + failed="yes" + } +done + +echo "" +if [ "$failed" = "yes" ]; then + echo FAIL + exit 1 +fi +echo PASS diff -Nru libseccomp-2.2.1/debian/tests/test-scmp_sys_resolver libseccomp-2.2.1/debian/tests/test-scmp_sys_resolver --- libseccomp-2.2.1/debian/tests/test-scmp_sys_resolver 1969-12-31 18:00:00.000000000 -0600 +++ libseccomp-2.2.1/debian/tests/test-scmp_sys_resolver 2015-05-04 13:51:51.000000000 -0500 @@ -0,0 +1,54 @@ +#!/bin/sh +# ------------------------------------------------------------------ +# +# Copyright (C) 2015 Canonical Ltd. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of version 2 of the GNU General Public +# License published by the Free Software Foundation. +# +# ------------------------------------------------------------------ + +set -e + +failed= + +test_range() { + low=$1 + high=$2 + echo "Testing syscalls $low-$high" + for i in `seq $low $high` ; do + res=`scmp_sys_resolver $i` || { + echo "'$i' failed" + failed="yes" + } + if [ "$res" = "UNKNOWN" ]; then + continue + fi + res2=`scmp_sys_resolver $res` || { + echo "'$res' failed" + failed="yes" + } + if [ "$res2" != "$i" ]; then + echo "FAIL: $i ($res) != $res ($res2)" + failed="yes" + else + echo "pass: $i ($res) == $res ($res2)" + fi + done +} + +echo "= normal range =" +test_range 0 1024 +echo "" + +echo "= arm private =" +test_range 983000 984024 +echo "" + +echo "" +if [ "$failed" = "yes" ]; then + echo FAIL + exit 1 +fi +echo PASS