Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
 X-Debbugs-CC: Michael Vogt <m...@debian.org>

Please unblock package golang-github-seccomp-libseccomp-golang

unblock golang-github-seccomp-libseccomp-golang/0.9.0-2

When I look the diff of unstable and testing of Go packages, I think
this could not be reverted. The changes are small and only contain bug
fix.

diff -Nru golang-github-seccomp-libseccomp-golang-0.9.0/debian/changelog 
golang-github-seccomp-libseccomp-golang-0.9.0/debian/changelog
--- golang-github-seccomp-libseccomp-golang-0.9.0/debian/changelog      
2017-08-09 06:22:22.000000000 +0800
+++ golang-github-seccomp-libseccomp-golang-0.9.0/debian/changelog      
2019-04-30 15:29:24.000000000 +0800
@@ -1,3 +1,15 @@
+golang-github-seccomp-libseccomp-golang (0.9.0-2) unstable; urgency=medium
+
+  [ Alexandre Viau ]
+  * Point Vcs-* urls to salsa.debian.org.
+
+  [ Michael Vogt ]
+  * debian/patches/06e7a2-fix-multi-args.patch:
+    - Cherry pick 06e7a29 to fix incorrect argument filtering when
+      using multiple arguments
+
+ -- Michael Vogt <m...@debian.org>  Tue, 30 Apr 2019 09:29:24 +0200
+
 golang-github-seccomp-libseccomp-golang (0.9.0-1) unstable; urgency=medium
 
   [ Team upload ]
diff -Nru golang-github-seccomp-libseccomp-golang-0.9.0/debian/control 
golang-github-seccomp-libseccomp-golang-0.9.0/debian/control
--- golang-github-seccomp-libseccomp-golang-0.9.0/debian/control        
2017-08-09 06:22:22.000000000 +0800
+++ golang-github-seccomp-libseccomp-golang-0.9.0/debian/control        
2019-04-30 15:29:24.000000000 +0800
@@ -6,8 +6,8 @@
 Build-Depends: debhelper (>= 9), dh-golang, golang-any, libseccomp-dev, 
pkg-config
 Standards-Version: 3.9.8
 Homepage: https://github.com/seccomp/libseccomp-golang
-Vcs-Browser: 
https://anonscm.debian.org/cgit/pkg-go/packages/golang-github-seccomp-libseccomp-golang.git
-Vcs-Git: 
https://anonscm.debian.org/git/pkg-go/packages/golang-github-seccomp-libseccomp-golang.git
+Vcs-Browser: 
https://salsa.debian.org/go-team/packages/golang-github-seccomp-libseccomp-golang
+Vcs-Git: 
https://salsa.debian.org/go-team/packages/golang-github-seccomp-libseccomp-golang.git
 XS-Go-Import-Path: github.com/seccomp/libseccomp-golang
 
 Package: golang-github-seccomp-libseccomp-golang-dev
diff -Nru golang-github-seccomp-libseccomp-golang-0.9.0/debian/gitlab-ci.yml 
golang-github-seccomp-libseccomp-golang-0.9.0/debian/gitlab-ci.yml
--- golang-github-seccomp-libseccomp-golang-0.9.0/debian/gitlab-ci.yml  
1970-01-01 08:00:00.000000000 +0800
+++ golang-github-seccomp-libseccomp-golang-0.9.0/debian/gitlab-ci.yml  
2019-04-30 15:29:24.000000000 +0800
[omitted]
diff -Nru 
golang-github-seccomp-libseccomp-golang-0.9.0/debian/patches/06e7a2-fix-multi-args.patch
 
golang-github-seccomp-libseccomp-golang-0.9.0/debian/patches/06e7a2-fix-multi-args.patch
--- 
golang-github-seccomp-libseccomp-golang-0.9.0/debian/patches/06e7a2-fix-multi-args.patch
    1970-01-01 08:00:00.000000000 +0800
+++ 
golang-github-seccomp-libseccomp-golang-0.9.0/debian/patches/06e7a2-fix-multi-args.patch
    2019-04-30 15:29:24.000000000 +0800
@@ -0,0 +1,123 @@
+commit 06e7a29f36a34b8cf419aeb87b979ee508e58f9e
+Author: Matthew Heon <matthew.h...@gmail.com>
+Date:   Wed Apr 19 16:28:29 2017 -0400
+
+    golang: Resolve bug with handling of multiple argument rules
+    
+    In the upstream library, when added with a single API call,
+    multiple syscall argument rules should be matched with AND
+    logic - if all of them match, the rule matches.
+    
+    At present, the Golang bindings apply OR logic to this case.
+    This commit resolves this and reverts to the behavior of the
+    main library.
+    
+    Signed-off-by: Matthew Heon <matthew.h...@gmail.com>
+
+diff --git a/seccomp_internal.go b/seccomp_internal.go
+index c9fd616..369f194 100644
+--- a/seccomp_internal.go
++++ b/seccomp_internal.go
+@@ -120,23 +120,27 @@ unsigned int get_micro_version()
+ 
+ typedef struct scmp_arg_cmp* scmp_cast_t;
+ 
+-// Wrapper to create an scmp_arg_cmp struct
+-void*
+-make_struct_arg_cmp(
+-                    unsigned int arg,
+-                    int compare,
+-                    uint64_t a,
+-                    uint64_t b
+-                   )
++void* make_arg_cmp_array(unsigned int length)
+ {
+-      struct scmp_arg_cmp *s = malloc(sizeof(struct scmp_arg_cmp));
++        return calloc(length, sizeof(struct scmp_arg_cmp));
++}
+ 
+-      s->arg = arg;
+-      s->op = compare;
+-      s->datum_a = a;
+-      s->datum_b = b;
++// Wrapper to add an scmp_arg_cmp struct to an existing arg_cmp array
++void add_struct_arg_cmp(
++                        struct scmp_arg_cmp* arr,
++                        unsigned int pos,
++                        unsigned int arg,
++                        int compare,
++                        uint64_t a,
++                        uint64_t b
++                       )
++{
++        arr[pos].arg = arg;
++        arr[pos].op = compare;
++        arr[pos].datum_a = a;
++        arr[pos].datum_b = b;
+ 
+-      return s;
++        return;
+ }
+ */
+ import "C"
+@@ -239,12 +243,9 @@ func (f *ScmpFilter) setFilterAttr(attr scmpFilterAttr, 
value C.uint32_t) error
+ // DOES NOT LOCK OR CHECK VALIDITY
+ // Assumes caller has already done this
+ // Wrapper for seccomp_rule_add_... functions
+-func (f *ScmpFilter) addRuleWrapper(call ScmpSyscall, action ScmpAction, 
exact bool, cond C.scmp_cast_t) error {
+-      var length C.uint
+-      if cond != nil {
+-              length = 1
+-      } else {
+-              length = 0
++func (f *ScmpFilter) addRuleWrapper(call ScmpSyscall, action ScmpAction, 
exact bool, length C.uint, cond C.scmp_cast_t) error {
++      if length != 0 && cond == nil {
++              return fmt.Errorf("null conditions list, but length is nonzero")
+       }
+ 
+       var retCode C.int
+@@ -258,6 +259,8 @@ func (f *ScmpFilter) addRuleWrapper(call ScmpSyscall, 
action ScmpAction, exact b
+               return fmt.Errorf("unrecognized syscall")
+       } else if syscall.Errno(-1*retCode) == syscall.EPERM {
+               return fmt.Errorf("requested action matches default action of 
filter")
++      } else if syscall.Errno(-1*retCode) == syscall.EINVAL {
++              return fmt.Errorf("two checks on same syscall argument")
+       } else if retCode != 0 {
+               return syscall.Errno(-1 * retCode)
+       }
+@@ -275,7 +278,7 @@ func (f *ScmpFilter) addRuleGeneric(call ScmpSyscall, 
action ScmpAction, exact b
+       }
+ 
+       if len(conds) == 0 {
+-              if err := f.addRuleWrapper(call, action, exact, nil); err != 
nil {
++              if err := f.addRuleWrapper(call, action, exact, 0, nil); err != 
nil {
+                       return err
+               }
+       } else {
+@@ -287,13 +290,20 @@ func (f *ScmpFilter) addRuleGeneric(call ScmpSyscall, 
action ScmpAction, exact b
+                       }
+               }
+ 
+-              for _, cond := range conds {
+-                      cmpStruct := 
C.make_struct_arg_cmp(C.uint(cond.Argument), cond.Op.toNative(), 
C.uint64_t(cond.Operand1), C.uint64_t(cond.Operand2))
+-                      defer C.free(cmpStruct)
++              argsArr := C.make_arg_cmp_array(C.uint(len(conds)))
++              if argsArr == nil {
++                      return fmt.Errorf("error allocating memory for 
conditions")
++              }
++              defer C.free(argsArr)
++
++              for i, cond := range conds {
++                      C.add_struct_arg_cmp(C.scmp_cast_t(argsArr), C.uint(i),
++                              C.uint(cond.Argument), cond.Op.toNative(),
++                              C.uint64_t(cond.Operand1), 
C.uint64_t(cond.Operand2))
++              }
+ 
+-                      if err := f.addRuleWrapper(call, action, exact, 
C.scmp_cast_t(cmpStruct)); err != nil {
+-                              return err
+-                      }
++              if err := f.addRuleWrapper(call, action, exact, 
C.uint(len(conds)), C.scmp_cast_t(argsArr)); err != nil {
++                      return err
+               }
+       }
+ 
diff -Nru golang-github-seccomp-libseccomp-golang-0.9.0/debian/patches/series 
golang-github-seccomp-libseccomp-golang-0.9.0/debian/patches/series
--- golang-github-seccomp-libseccomp-golang-0.9.0/debian/patches/series 
2017-08-09 06:22:22.000000000 +0800
+++ golang-github-seccomp-libseccomp-golang-0.9.0/debian/patches/series 
2019-04-30 15:29:24.000000000 +0800
@@ -1 +1,2 @@
 0001-Fix-unit-test-failures-on-32-bit-systems.patch
+06e7a2-fix-multi-args.patch

Attachment: signature.asc
Description: PGP signature

Reply via email to