Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libcap-ng for openSUSE:Factory 
checked in at 2021-12-14 22:01:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libcap-ng (Old)
 and      /work/SRC/openSUSE:Factory/.libcap-ng.new.2520 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libcap-ng"

Tue Dec 14 22:01:45 2021 rev:30 rq:939039 version:0.7.11

Changes:
--------
--- /work/SRC/openSUSE:Factory/libcap-ng/libcap-ng-python.changes       
2020-05-13 22:55:01.378884986 +0200
+++ /work/SRC/openSUSE:Factory/.libcap-ng.new.2520/libcap-ng-python.changes     
2021-12-14 22:01:47.115133871 +0100
@@ -1,0 +2,9 @@
+Thu Dec  9 22:05:19 UTC 2021 - Ferdinand Thiessen <r...@fthiessen.de>
+
+- Update to 0.7.11
+  * Really clear bounding set if asked in capng_change_id
+  * Add CAP_PERFMON, CAP_BPF, & CAP_CHECKPOINT_RESTORE
+  * Avoid malloc/free in capng_apply (Natanael Copa)
+  * If procfs is not available, get bounding set via prctl
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/libcap-ng/libcap-ng.changes      2020-05-13 
22:55:01.414885055 +0200
+++ /work/SRC/openSUSE:Factory/.libcap-ng.new.2520/libcap-ng.changes    
2021-12-14 22:01:47.195133916 +0100
@@ -1,0 +2,10 @@
+Thu Dec  9 22:05:19 UTC 2021 - Ferdinand Thiessen <r...@fthiessen.de>
+
+- Update to 0.7.11
+  * Really clear bounding set if asked in capng_change_id
+  * Add CAP_PERFMON, CAP_BPF, & CAP_CHECKPOINT_RESTORE
+  * Avoid malloc/free in capng_apply (Natanael Copa)
+  * If procfs is not available, get bounding set via prctl
+- Removed unneeded rules from rpmlintrc
+
+-------------------------------------------------------------------

Old:
----
  libcap-ng-0.7.10.tar.gz

New:
----
  libcap-ng-0.7.11.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libcap-ng-python.spec ++++++
--- /var/tmp/diff_new_pack.zYsn9P/_old  2021-12-14 22:01:48.039134397 +0100
+++ /var/tmp/diff_new_pack.zYsn9P/_new  2021-12-14 22:01:48.043134400 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libcap-ng-python
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 %bcond_without python2
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           libcap-ng-python
-Version:        0.7.10
+Version:        0.7.11
 Release:        0
 Summary:        An alternate Linux/POSIX capabilities library
 License:        LGPL-2.1-or-later
@@ -59,7 +59,6 @@
 The libcap-ng-python package contains the bindings so that libcap-ng
 and can be used by Python applications.
 
-
 %prep
 %setup -q -n libcap-ng-%{version}
 

++++++ libcap-ng.spec ++++++
--- /var/tmp/diff_new_pack.zYsn9P/_old  2021-12-14 22:01:48.079134420 +0100
+++ /var/tmp/diff_new_pack.zYsn9P/_new  2021-12-14 22:01:48.087134425 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libcap-ng
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %define sover  0
 Name:           libcap-ng
-Version:        0.7.10
+Version:        0.7.11
 Release:        0
 Summary:        An alternate Linux/POSIX capabilities library
 License:        LGPL-2.1-or-later

++++++ libcap-ng-0.7.10.tar.gz -> libcap-ng-0.7.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/ChangeLog 
new/libcap-ng-0.7.11/ChangeLog
--- old/libcap-ng-0.7.10/ChangeLog      2019-10-01 20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/ChangeLog      2020-08-23 23:57:31.000000000 +0200
@@ -1,3 +1,10 @@
+0.7.11
+- Really clear bounding set if asked in capng_change_id
+- Add CAP_PERFMON, CAP_BPF, & CAP_CHECKPOINT_RESTORE
+- Avoid malloc/free in capng_apply (Natanael Copa)
+- If procfs is not available, get bounding set via prctl
+- Cleanup some compiler warnings
+
 0.7.10
 - Update capng_change_id man page
 - Add capng_have_permitted_capabilities function
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/bindings/python/Makefile.in 
new/libcap-ng-0.7.11/bindings/python/Makefile.in
--- old/libcap-ng-0.7.10/bindings/python/Makefile.in    2019-10-01 
20:29:28.000000000 +0200
+++ new/libcap-ng-0.7.11/bindings/python/Makefile.in    2020-08-23 
23:57:36.000000000 +0200
@@ -214,7 +214,7 @@
   esac
 am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 am__pep3147_tweak = \
-  sed -e 's|\.py$$||' -e 's|[^/]*$$|&.*.pyc\n&.*.pyo|'
+  sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|'
 py_compile = $(top_srcdir)/py-compile
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
@@ -581,15 +581,20 @@
        dir='$(DESTDIR)$(pyexecdir)'; \
        pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \
        pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \
+       py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \
+       echo "$$py_files_pep3147";\
+       pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \
+       pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \
        st=0; \
-       for files in "$$py_files" "$$pyc_files" "$$pyo_files"; do \
+       for files in \
+         "$$py_files" \
+         "$$pyc_files" \
+         "$$pyo_files" \
+         "$$pyc_files_pep3147" \
+         "$$pyo_files_pep3147" \
+       ; do \
          $(am__uninstall_files_from_dir) || st=$$?; \
        done; \
-       dir='$(DESTDIR)$(pyexecdir)/__pycache__'; \
-       echo "$$py_files" | $(am__pep3147_tweak) | $(am__base_list) | \
-         while read files; do \
-           $(am__uninstall_files_from_dir) || st=$$?; \
-         done || exit $$?; \
        exit $$st
 
 # This directory's subdirectories are mostly independent; you can cd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/bindings/python/capng.py 
new/libcap-ng-0.7.11/bindings/python/capng.py
--- old/libcap-ng-0.7.10/bindings/python/capng.py       2019-10-01 
20:29:32.000000000 +0200
+++ new/libcap-ng-0.7.11/bindings/python/capng.py       2020-08-23 
23:57:39.000000000 +0200
@@ -1,85 +1,24 @@
 # This file was automatically generated by SWIG (http://www.swig.org).
-# Version 3.0.12
+# Version 4.0.1
 #
 # Do not make changes to this file unless you know what you are doing--modify
 # the SWIG interface file instead.
 
 from sys import version_info as _swig_python_version_info
-if _swig_python_version_info >= (2, 7, 0):
-    def swig_import_helper():
-        import importlib
-        pkg = __name__.rpartition('.')[0]
-        mname = '.'.join((pkg, '_capng')).lstrip('.')
-        try:
-            return importlib.import_module(mname)
-        except ImportError:
-            return importlib.import_module('_capng')
-    _capng = swig_import_helper()
-    del swig_import_helper
-elif _swig_python_version_info >= (2, 6, 0):
-    def swig_import_helper():
-        from os.path import dirname
-        import imp
-        fp = None
-        try:
-            fp, pathname, description = imp.find_module('_capng', 
[dirname(__file__)])
-        except ImportError:
-            import _capng
-            return _capng
-        try:
-            _mod = imp.load_module('_capng', fp, pathname, description)
-        finally:
-            if fp is not None:
-                fp.close()
-        return _mod
-    _capng = swig_import_helper()
-    del swig_import_helper
+if _swig_python_version_info < (2, 7, 0):
+    raise RuntimeError("Python 2.7 or later required")
+
+# Import the low-level C/C++ module
+if __package__ or "." in __name__:
+    from . import _capng
 else:
     import _capng
-del _swig_python_version_info
-
-try:
-    _swig_property = property
-except NameError:
-    pass  # Python < 2.2 doesn't have 'property'.
 
 try:
     import builtins as __builtin__
 except ImportError:
     import __builtin__
 
-def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
-    if (name == "thisown"):
-        return self.this.own(value)
-    if (name == "this"):
-        if type(value).__name__ == 'SwigPyObject':
-            self.__dict__[name] = value
-            return
-    method = class_type.__swig_setmethods__.get(name, None)
-    if method:
-        return method(self, value)
-    if (not static):
-        if _newclass:
-            object.__setattr__(self, name, value)
-        else:
-            self.__dict__[name] = value
-    else:
-        raise AttributeError("You cannot add attributes to %s" % self)
-
-
-def _swig_setattr(self, class_type, name, value):
-    return _swig_setattr_nondynamic(self, class_type, name, value, 0)
-
-
-def _swig_getattr(self, class_type, name):
-    if (name == "thisown"):
-        return self.this.own()
-    method = class_type.__swig_getmethods__.get(name, None)
-    if method:
-        return method(self)
-    raise AttributeError("'%s' object has no attribute '%s'" % 
(class_type.__name__, name))
-
-
 def _swig_repr(self):
     try:
         strthis = "proxy of " + self.this.__repr__()
@@ -87,13 +26,40 @@
         strthis = ""
     return "<%s.%s; %s >" % (self.__class__.__module__, 
self.__class__.__name__, strthis,)
 
-try:
-    _object = object
-    _newclass = 1
-except __builtin__.Exception:
-    class _object:
-        pass
-    _newclass = 0
+
+def _swig_setattr_nondynamic_instance_variable(set):
+    def set_instance_attr(self, name, value):
+        if name == "thisown":
+            self.this.own(value)
+        elif name == "this":
+            set(self, name, value)
+        elif hasattr(self, name) and isinstance(getattr(type(self), name), 
property):
+            set(self, name, value)
+        else:
+            raise AttributeError("You cannot add instance attributes to %s" % 
self)
+    return set_instance_attr
+
+
+def _swig_setattr_nondynamic_class_variable(set):
+    def set_class_attr(cls, name, value):
+        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
+            set(cls, name, value)
+        else:
+            raise AttributeError("You cannot add class attributes to %s" % cls)
+    return set_class_attr
+
+
+def _swig_add_metaclass(metaclass):
+    """Class decorator for adding a metaclass to a SWIG wrapped class - a 
slimmed down version of six.add_metaclass"""
+    def wrapper(cls):
+        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
+    return wrapper
+
+
+class _SwigNonDynamicMeta(type):
+    """Meta class to enforce nondynamic attributes (no new attributes) for a 
class"""
+    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)
+
 
 CAP_CHOWN = _capng.CAP_CHOWN
 CAP_DAC_OVERRIDE = _capng.CAP_DAC_OVERRIDE
@@ -156,75 +122,56 @@
 
 def capng_clear(set):
     return _capng.capng_clear(set)
-capng_clear = _capng.capng_clear
 
 def capng_fill(set):
     return _capng.capng_fill(set)
-capng_fill = _capng.capng_fill
 
 def capng_setpid(pid):
     return _capng.capng_setpid(pid)
-capng_setpid = _capng.capng_setpid
 
 def capng_get_caps_process():
     return _capng.capng_get_caps_process()
-capng_get_caps_process = _capng.capng_get_caps_process
 
 def capng_update(action, type, capability):
     return _capng.capng_update(action, type, capability)
-capng_update = _capng.capng_update
 
-def capng_updatev(action, type, capability):
-    return _capng.capng_updatev(action, type, capability)
-capng_updatev = _capng.capng_updatev
+def capng_updatev(*args):
+    return _capng.capng_updatev(*args)
 
 def capng_apply(set):
     return _capng.capng_apply(set)
-capng_apply = _capng.capng_apply
 
 def capng_lock():
     return _capng.capng_lock()
-capng_lock = _capng.capng_lock
 
 def capng_change_id(uid, gid, flag):
     return _capng.capng_change_id(uid, gid, flag)
-capng_change_id = _capng.capng_change_id
 
 def capng_get_caps_fd(fd):
     return _capng.capng_get_caps_fd(fd)
-capng_get_caps_fd = _capng.capng_get_caps_fd
 
 def capng_apply_caps_fd(fd):
     return _capng.capng_apply_caps_fd(fd)
-capng_apply_caps_fd = _capng.capng_apply_caps_fd
 
 def capng_have_capabilities(set):
     return _capng.capng_have_capabilities(set)
-capng_have_capabilities = _capng.capng_have_capabilities
 
 def capng_have_permitted_capabilities():
     return _capng.capng_have_permitted_capabilities()
-capng_have_permitted_capabilities = _capng.capng_have_permitted_capabilities
 
 def capng_have_capability(which, capability):
     return _capng.capng_have_capability(which, capability)
-capng_have_capability = _capng.capng_have_capability
 
 def capng_print_caps_numeric(where, set):
     return _capng.capng_print_caps_numeric(where, set)
-capng_print_caps_numeric = _capng.capng_print_caps_numeric
 
 def capng_print_caps_text(where, which):
     return _capng.capng_print_caps_text(where, which)
-capng_print_caps_text = _capng.capng_print_caps_text
 
 def capng_name_to_capability(name):
     return _capng.capng_name_to_capability(name)
-capng_name_to_capability = _capng.capng_name_to_capability
 
 def capng_capability_to_name(capability):
     return _capng.capng_capability_to_name(capability)
-capng_capability_to_name = _capng.capng_capability_to_name
-# This file is compatible with both classic and new-style classes.
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/bindings/python/test/capng-test.py 
new/libcap-ng-0.7.11/bindings/python/test/capng-test.py
--- old/libcap-ng-0.7.10/bindings/python/test/capng-test.py     2019-10-01 
20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/bindings/python/test/capng-test.py     2020-08-23 
23:57:31.000000000 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import os
 import sys
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/bindings/python3/Makefile.in 
new/libcap-ng-0.7.11/bindings/python3/Makefile.in
--- old/libcap-ng-0.7.10/bindings/python3/Makefile.in   2019-10-01 
20:29:28.000000000 +0200
+++ new/libcap-ng-0.7.11/bindings/python3/Makefile.in   2020-08-23 
23:57:36.000000000 +0200
@@ -183,7 +183,7 @@
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__pep3147_tweak = \
-  sed -e 's|\.py$$||' -e 's|[^/]*$$|&.*.pyc\n&.*.pyo|'
+  sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|'
 py_compile = $(top_srcdir)/py-compile
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
@@ -540,15 +540,20 @@
        dir='$(DESTDIR)$(py3execdir)'; \
        pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \
        pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \
+       py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \
+       echo "$$py_files_pep3147";\
+       pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \
+       pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \
        st=0; \
-       for files in "$$py_files" "$$pyc_files" "$$pyo_files"; do \
+       for files in \
+         "$$py_files" \
+         "$$pyc_files" \
+         "$$pyo_files" \
+         "$$pyc_files_pep3147" \
+         "$$pyo_files_pep3147" \
+       ; do \
          $(am__uninstall_files_from_dir) || st=$$?; \
        done; \
-       dir='$(DESTDIR)$(py3execdir)/__pycache__'; \
-       echo "$$py_files" | $(am__pep3147_tweak) | $(am__base_list) | \
-         while read files; do \
-           $(am__uninstall_files_from_dir) || st=$$?; \
-         done || exit $$?; \
        exit $$st
 
 ID: $(am__tagged_files)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/bindings/python3/capng.py 
new/libcap-ng-0.7.11/bindings/python3/capng.py
--- old/libcap-ng-0.7.10/bindings/python3/capng.py      2019-10-01 
20:29:32.000000000 +0200
+++ new/libcap-ng-0.7.11/bindings/python3/capng.py      2020-08-23 
23:57:40.000000000 +0200
@@ -1,82 +1,24 @@
 # This file was automatically generated by SWIG (http://www.swig.org).
-# Version 3.0.12
+# Version 4.0.1
 #
 # Do not make changes to this file unless you know what you are doing--modify
 # the SWIG interface file instead.
 
 from sys import version_info as _swig_python_version_info
-if _swig_python_version_info >= (2, 7, 0):
-    def swig_import_helper():
-        import importlib
-        pkg = __name__.rpartition('.')[0]
-        mname = '.'.join((pkg, '_capng')).lstrip('.')
-        try:
-            return importlib.import_module(mname)
-        except ImportError:
-            return importlib.import_module('_capng')
-    _capng = swig_import_helper()
-    del swig_import_helper
-elif _swig_python_version_info >= (2, 6, 0):
-    def swig_import_helper():
-        from os.path import dirname
-        import imp
-        fp = None
-        try:
-            fp, pathname, description = imp.find_module('_capng', 
[dirname(__file__)])
-        except ImportError:
-            import _capng
-            return _capng
-        try:
-            _mod = imp.load_module('_capng', fp, pathname, description)
-        finally:
-            if fp is not None:
-                fp.close()
-        return _mod
-    _capng = swig_import_helper()
-    del swig_import_helper
+if _swig_python_version_info < (2, 7, 0):
+    raise RuntimeError("Python 2.7 or later required")
+
+# Import the low-level C/C++ module
+if __package__ or "." in __name__:
+    from . import _capng
 else:
     import _capng
-del _swig_python_version_info
-
-try:
-    _swig_property = property
-except NameError:
-    pass  # Python < 2.2 doesn't have 'property'.
 
 try:
     import builtins as __builtin__
 except ImportError:
     import __builtin__
 
-def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
-    if (name == "thisown"):
-        return self.this.own(value)
-    if (name == "this"):
-        if type(value).__name__ == 'SwigPyObject':
-            self.__dict__[name] = value
-            return
-    method = class_type.__swig_setmethods__.get(name, None)
-    if method:
-        return method(self, value)
-    if (not static):
-        object.__setattr__(self, name, value)
-    else:
-        raise AttributeError("You cannot add attributes to %s" % self)
-
-
-def _swig_setattr(self, class_type, name, value):
-    return _swig_setattr_nondynamic(self, class_type, name, value, 0)
-
-
-def _swig_getattr(self, class_type, name):
-    if (name == "thisown"):
-        return self.this.own()
-    method = class_type.__swig_getmethods__.get(name, None)
-    if method:
-        return method(self)
-    raise AttributeError("'%s' object has no attribute '%s'" % 
(class_type.__name__, name))
-
-
 def _swig_repr(self):
     try:
         strthis = "proxy of " + self.this.__repr__()
@@ -85,15 +27,38 @@
     return "<%s.%s; %s >" % (self.__class__.__module__, 
self.__class__.__name__, strthis,)
 
 
-def _swig_setattr_nondynamic_method(set):
-    def set_attr(self, name, value):
-        if (name == "thisown"):
-            return self.this.own(value)
-        if hasattr(self, name) or (name == "this"):
+def _swig_setattr_nondynamic_instance_variable(set):
+    def set_instance_attr(self, name, value):
+        if name == "thisown":
+            self.this.own(value)
+        elif name == "this":
+            set(self, name, value)
+        elif hasattr(self, name) and isinstance(getattr(type(self), name), 
property):
             set(self, name, value)
         else:
-            raise AttributeError("You cannot add attributes to %s" % self)
-    return set_attr
+            raise AttributeError("You cannot add instance attributes to %s" % 
self)
+    return set_instance_attr
+
+
+def _swig_setattr_nondynamic_class_variable(set):
+    def set_class_attr(cls, name, value):
+        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
+            set(cls, name, value)
+        else:
+            raise AttributeError("You cannot add class attributes to %s" % cls)
+    return set_class_attr
+
+
+def _swig_add_metaclass(metaclass):
+    """Class decorator for adding a metaclass to a SWIG wrapped class - a 
slimmed down version of six.add_metaclass"""
+    def wrapper(cls):
+        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
+    return wrapper
+
+
+class _SwigNonDynamicMeta(type):
+    """Meta class to enforce nondynamic attributes (no new attributes) for a 
class"""
+    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)
 
 
 CAP_CHOWN = _capng.CAP_CHOWN
@@ -155,76 +120,58 @@
 CAPNG_CLEAR_BOUNDING = _capng.CAPNG_CLEAR_BOUNDING
 CAPNG_INIT_SUPP_GRP = _capng.CAPNG_INIT_SUPP_GRP
 
-def capng_clear(set: 'capng_select_t') -> "void":
+def capng_clear(set: "capng_select_t") -> "void":
     return _capng.capng_clear(set)
-capng_clear = _capng.capng_clear
 
-def capng_fill(set: 'capng_select_t') -> "void":
+def capng_fill(set: "capng_select_t") -> "void":
     return _capng.capng_fill(set)
-capng_fill = _capng.capng_fill
 
-def capng_setpid(pid: 'int') -> "void":
+def capng_setpid(pid: "int") -> "void":
     return _capng.capng_setpid(pid)
-capng_setpid = _capng.capng_setpid
 
 def capng_get_caps_process() -> "int":
     return _capng.capng_get_caps_process()
-capng_get_caps_process = _capng.capng_get_caps_process
 
-def capng_update(action: 'capng_act_t', type: 'capng_type_t', capability: 
'unsigned int') -> "int":
+def capng_update(action: "capng_act_t", type: "capng_type_t", capability: 
"unsigned int") -> "int":
     return _capng.capng_update(action, type, capability)
-capng_update = _capng.capng_update
 
-def capng_updatev(action: 'capng_act_t', type: 'capng_type_t', capability: 
'unsigned int') -> "int":
-    return _capng.capng_updatev(action, type, capability)
-capng_updatev = _capng.capng_updatev
+def capng_updatev(*args) -> "int":
+    return _capng.capng_updatev(*args)
 
-def capng_apply(set: 'capng_select_t') -> "int":
+def capng_apply(set: "capng_select_t") -> "int":
     return _capng.capng_apply(set)
-capng_apply = _capng.capng_apply
 
 def capng_lock() -> "int":
     return _capng.capng_lock()
-capng_lock = _capng.capng_lock
 
-def capng_change_id(uid: 'int', gid: 'int', flag: 'capng_flags_t') -> "int":
+def capng_change_id(uid: "int", gid: "int", flag: "capng_flags_t") -> "int":
     return _capng.capng_change_id(uid, gid, flag)
-capng_change_id = _capng.capng_change_id
 
-def capng_get_caps_fd(fd: 'int') -> "int":
+def capng_get_caps_fd(fd: "int") -> "int":
     return _capng.capng_get_caps_fd(fd)
-capng_get_caps_fd = _capng.capng_get_caps_fd
 
-def capng_apply_caps_fd(fd: 'int') -> "int":
+def capng_apply_caps_fd(fd: "int") -> "int":
     return _capng.capng_apply_caps_fd(fd)
-capng_apply_caps_fd = _capng.capng_apply_caps_fd
 
-def capng_have_capabilities(set: 'capng_select_t') -> "capng_results_t":
+def capng_have_capabilities(set: "capng_select_t") -> "capng_results_t":
     return _capng.capng_have_capabilities(set)
-capng_have_capabilities = _capng.capng_have_capabilities
 
 def capng_have_permitted_capabilities() -> "capng_results_t":
     return _capng.capng_have_permitted_capabilities()
-capng_have_permitted_capabilities = _capng.capng_have_permitted_capabilities
 
-def capng_have_capability(which: 'capng_type_t', capability: 'unsigned int') 
-> "int":
+def capng_have_capability(which: "capng_type_t", capability: "unsigned int") 
-> "int":
     return _capng.capng_have_capability(which, capability)
-capng_have_capability = _capng.capng_have_capability
 
-def capng_print_caps_numeric(where: 'capng_print_t', set: 'capng_select_t') -> 
"char *":
+def capng_print_caps_numeric(where: "capng_print_t", set: "capng_select_t") -> 
"char *":
     return _capng.capng_print_caps_numeric(where, set)
-capng_print_caps_numeric = _capng.capng_print_caps_numeric
 
-def capng_print_caps_text(where: 'capng_print_t', which: 'capng_type_t') -> 
"char *":
+def capng_print_caps_text(where: "capng_print_t", which: "capng_type_t") -> 
"char *":
     return _capng.capng_print_caps_text(where, which)
-capng_print_caps_text = _capng.capng_print_caps_text
 
-def capng_name_to_capability(name: 'char const *') -> "int":
+def capng_name_to_capability(name: "char const *") -> "int":
     return _capng.capng_name_to_capability(name)
-capng_name_to_capability = _capng.capng_name_to_capability
 
-def capng_capability_to_name(capability: 'unsigned int') -> "char const *":
+def capng_capability_to_name(capability: "unsigned int") -> "char const *":
     return _capng.capng_capability_to_name(capability)
-capng_capability_to_name = _capng.capng_capability_to_name
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/configure 
new/libcap-ng-0.7.11/configure
--- old/libcap-ng-0.7.10/configure      2019-10-01 20:29:27.000000000 +0200
+++ new/libcap-ng-0.7.11/configure      2020-08-23 23:57:35.000000000 +0200
@@ -1,7 +1,7 @@
 #! /bin/sh
 # From configure.ac Revision: 1.3 .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libcap-ng 0.7.10.
+# Generated by GNU Autoconf 2.69 for libcap-ng 0.7.11.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -588,8 +588,8 @@
 # Identity of this package.
 PACKAGE_NAME='libcap-ng'
 PACKAGE_TARNAME='libcap-ng'
-PACKAGE_VERSION='0.7.10'
-PACKAGE_STRING='libcap-ng 0.7.10'
+PACKAGE_VERSION='0.7.11'
+PACKAGE_STRING='libcap-ng 0.7.11'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1350,7 +1350,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libcap-ng 0.7.10 to adapt to many kinds of systems.
+\`configure' configures libcap-ng 0.7.11 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1421,7 +1421,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libcap-ng 0.7.10:";;
+     short | recursive ) echo "Configuration of libcap-ng 0.7.11:";;
    esac
   cat <<\_ACEOF
 
@@ -1536,7 +1536,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libcap-ng configure 0.7.10
+libcap-ng configure 0.7.11
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1901,7 +1901,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libcap-ng $as_me 0.7.10, which was
+It was created by libcap-ng $as_me 0.7.11, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2880,7 +2880,7 @@
 
 # Define the identity of the package.
  PACKAGE='libcap-ng'
- VERSION='0.7.10'
+ VERSION='0.7.11'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -12965,6 +12965,61 @@
   cat >>confdefs.h <<_ACEOF
 #define HAVE_PTHREAD_H 1
 _ACEOF
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing 
pthread_atfork" >&5
+$as_echo_n "checking for library containing pthread_atfork... " >&6; }
+if ${ac_cv_search_pthread_atfork+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_atfork ();
+int
+main ()
+{
+return pthread_atfork ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' pthread; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_pthread_atfork=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_pthread_atfork+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_pthread_atfork+:} false; then :
+
+else
+  ac_cv_search_pthread_atfork=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_atfork" 
>&5
+$as_echo "$ac_cv_search_pthread_atfork" >&6; }
+ac_res=$ac_cv_search_pthread_atfork
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
 
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pthread.h not found" >&5
@@ -13240,7 +13295,7 @@
   use_python=auto
 fi
 
-if test x$use_python = xno ; then
+if test "x$use_python" = xno ; then
        python_found="no"
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -13248,6 +13303,62 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: testing" >&5
 $as_echo "testing" >&6; }
 
+# Try to find a versioned Python2 interpreter,
+# if not explicitly specified by the user.
+if test "x$PYTHON" = "x"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for versioned Python2 
interpreter" >&5
+$as_echo_n "checking for versioned Python2 interpreter... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
+$as_echo "" >&6; }
+  for python2 in python2 python2.7 python2.6 python2.5 python2.4 python2.3 
python2.2 python2.1 python2.0; do
+    # Extract the first word of "$python2", so it can be a program name with 
args.
+set dummy $python2; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    if test "x$PYTHON" != "x"; then
+      break;
+    fi
+  done
+fi
+
+# Setup Python2 with the interpreter found previously.
+
 
 
 
@@ -13464,7 +13575,7 @@
 $as_echo "$as_me: Python bindings will be built" >&6;}
 else
        python_found="no"
-       if test x$use_python = xyes ; then
+       if test "x$use_python" = xyes ; then
                as_fn_error $? "Python explicitly requested and python headers 
were not found" "$LINENO" 5
        else
                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Python 
headers not found - python bindings will not be made\"" >&5
@@ -14184,7 +14295,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libcap-ng $as_me 0.7.10, which was
+This file was extended by libcap-ng $as_me 0.7.11, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -14250,7 +14361,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libcap-ng config.status 0.7.10
+libcap-ng config.status 0.7.11
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/configure.ac 
new/libcap-ng-0.7.11/configure.ac
--- old/libcap-ng-0.7.10/configure.ac   2019-10-01 20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/configure.ac   2020-08-23 23:57:31.000000000 +0200
@@ -1,7 +1,7 @@
 dnl
 define([AC_INIT_NOTICE],
 [### Generated automatically using autoconf version] AC_ACVERSION [
-### Copyright 2009-2019 Steve Grubb <sgr...@redhat.com>
+### Copyright 2009-2020 Steve Grubb <sgr...@redhat.com>
 ###
 ### Permission is hereby granted, free of charge, to any person obtaining a
 ### copy of this software and associated documentation files (the "Software"),
@@ -29,7 +29,7 @@
 ])
 
 AC_REVISION($Revision: 1.3 $)dnl
-AC_INIT(libcap-ng,0.7.10)
+AC_INIT(libcap-ng,0.7.11)
 AC_PREREQ(2.12)dnl
 AM_CONFIG_HEADER(config.h)
 AC_CONFIG_MACRO_DIR([m4])
@@ -56,7 +56,9 @@
        AC_CHECK_HEADERS(attr/xattr.h, [], [AC_MSG_WARN(attr/xattr.h not found, 
disabling file system capabilities.)])
        ])
 AC_CHECK_HEADERS(linux/securebits.h, [], [])
-AC_CHECK_HEADERS(pthread.h, [], [AC_MSG_WARN(pthread.h not found, disabling 
pthread_atfork.)])
+AC_CHECK_HEADERS(pthread.h,
+       [AC_SEARCH_LIBS(pthread_atfork, pthread)],
+       [AC_MSG_WARN(pthread.h not found, disabling pthread_atfork.)])
 
 AC_C_CONST
 AC_C_INLINE
@@ -118,11 +120,26 @@
 AS_HELP_STRING([--with-python],[enable building python bindings]),
 use_python=$withval,
 use_python=auto)
-if test x$use_python = xno ; then
+if test "x$use_python" = xno ; then
        python_found="no"
        AC_MSG_RESULT(no)
 else
 AC_MSG_RESULT(testing)
+
+# Try to find a versioned Python2 interpreter,
+# if not explicitly specified by the user.
+if test "x$PYTHON" = "x"; then
+  AC_MSG_CHECKING([for versioned Python2 interpreter])
+  AC_MSG_RESULT([])
+  for python2 in python2 python2.7 python2.6 python2.5 python2.4 python2.3 
python2.2 python2.1 python2.0; do
+    AC_PATH_PROG([PYTHON], [$python2])
+    if test "x$PYTHON" != "x"; then
+      break;
+    fi
+  done
+fi
+
+# Setup Python2 with the interpreter found previously.
 AM_PATH_PYTHON
 PYINCLUDEDIR=`python${am_cv_python_version} -c "from distutils import 
sysconfig; print(sysconfig.get_config_var('INCLUDEPY'))"`
 if test -f ${PYINCLUDEDIR}/Python.h ; then
@@ -133,7 +150,7 @@
        AC_MSG_NOTICE(Python bindings will be built)
 else
        python_found="no"
-       if test x$use_python = xyes ; then
+       if test "x$use_python" = xyes ; then
                AC_MSG_ERROR([Python explicitly requested and python headers 
were not found])
        else
                AC_MSG_WARN("Python headers not found - python bindings will 
not be made")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/docs/capng_capability_to_name.3 
new/libcap-ng-0.7.11/docs/capng_capability_to_name.3
--- old/libcap-ng-0.7.10/docs/capng_capability_to_name.3        2019-10-01 
20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/docs/capng_capability_to_name.3        2020-08-23 
23:57:31.000000000 +0200
@@ -8,7 +8,7 @@
 
 .SH "DESCRIPTION"
 
-capng_capabilityi_to_name will take the integer being passed and look it up to 
see what its text string representation would be. The integer being input must 
be in the valid range defined in linux/capabiliy.h. The string that is output 
is the same as the define text from linux/capabiliy.h with the CAP_ prefix 
removed and lower case. This is useful for taking integer representation and 
converting it to something more user friendly for display.
+capng_capability_to_name will take the integer being passed and look it up to 
see what its text string representation would be. The integer being input must 
be in the valid range defined in linux/capabiliy.h. The string that is output 
is the same as the define text from linux/capabiliy.h with the CAP_ prefix 
removed and lower case. This is useful for taking integer representation and 
converting it to something more user friendly for display.
 
 .SH "RETURN VALUE"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/docs/capng_get_caps_fd.3 
new/libcap-ng-0.7.11/docs/capng_get_caps_fd.3
--- old/libcap-ng-0.7.10/docs/capng_get_caps_fd.3       2019-10-01 
20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/docs/capng_get_caps_fd.3       2020-08-23 
23:57:31.000000000 +0200
@@ -1,6 +1,6 @@
 .TH "CAPNG_GET_CAPS_FD" "3" "June 2009" "Red Hat" "Libcap-ng API"
 .SH NAME
-capng_get_caps_fd \- 
+capng_get_caps_fd \- Read file based capabilities
 .SH "SYNOPSIS"
 .B #include <cap-ng.h>
 .sp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/docs/capng_get_caps_process.3 
new/libcap-ng-0.7.11/docs/capng_get_caps_process.3
--- old/libcap-ng-0.7.10/docs/capng_get_caps_process.3  2019-10-01 
20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/docs/capng_get_caps_process.3  2020-08-23 
23:57:31.000000000 +0200
@@ -18,6 +18,8 @@
 
 If you are doing multi-threaded programming, calling this function will only 
get capabilities on the calling thread. If you want to get overall capabilities 
for a multi-threaded process, you can only do that before creating any threads. 
Afterwards, threads may be able to independantly set capabilities.
 
+capng_get_caps_process needs a mounted /proc to read the current bounding set, 
otherwise it will fail.
+
 .SH "SEE ALSO"
 
 .BR capng_setpid (3),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/docs/capng_restore_state.3 
new/libcap-ng-0.7.11/docs/capng_restore_state.3
--- old/libcap-ng-0.7.10/docs/capng_restore_state.3     2019-10-01 
20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/docs/capng_restore_state.3     2020-08-23 
23:57:31.000000000 +0200
@@ -14,6 +14,13 @@
 
 None.
 
+.SH NOTES
+
+capng_restore_state free's the previously malloc'd state, thus the state can't 
be restored multiple times.
+
+The working pid is part of the restored state, if restoring the state to a 
different thread, capng_setpid
+can be used to update it.
+
 .SH "SEE ALSO"
 
 .BR capng_save_state (3),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/docs/capng_save_state.3 
new/libcap-ng-0.7.11/docs/capng_save_state.3
--- old/libcap-ng-0.7.10/docs/capng_save_state.3        2019-10-01 
20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/docs/capng_save_state.3        2020-08-23 
23:57:31.000000000 +0200
@@ -14,6 +14,10 @@
 
 This returns NULL on failure and a non-NULL pointer otherwise.
 
+.SH NOTES
+
+The structure returned by capng_save_state is malloc'd;  it should be free'd 
if not used.
+
 .SH "SEE ALSO"
 
 .BR capng_restore_state (3),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/docs/capng_update.3 
new/libcap-ng-0.7.11/docs/capng_update.3
--- old/libcap-ng-0.7.10/docs/capng_update.3    2019-10-01 20:29:23.000000000 
+0200
+++ new/libcap-ng-0.7.11/docs/capng_update.3    2020-08-23 23:57:31.000000000 
+0200
@@ -8,7 +8,7 @@
 
 .SH "DESCRIPTION"
 
-capng_update will update the internal posix capabilities settings based on the 
options passed to it. The action should be eith CAPNG_DROP to set the 
capability bit to 0, or CAPNG_ADD to set the capability bit to 1. The operation 
is performed on the capability set specified in the type parameter. The values 
are: CAPNG_EFFECTIVE, CAPNG_PERMITTED, CAPNG_INHERITABLE, CAPNG_BOUNDING_SET. 
The values may be or'ed together to perform the same operation on multiple 
sets. The last paramter, capability, is the capability define as given in 
linux/capability.h.
+capng_update will update the internal posix capabilities settings based on the 
options passed to it. The action should be either CAPNG_DROP to set the 
capability bit to 0, or CAPNG_ADD to set the capability bit to 1. The operation 
is performed on the capability set specified in the type parameter. The values 
are: CAPNG_EFFECTIVE, CAPNG_PERMITTED, CAPNG_INHERITABLE, CAPNG_BOUNDING_SET. 
The values may be or'ed together to perform the same operation on multiple 
sets. The last paramter, capability, is the capability define as given in 
linux/capability.h.
 
 .SH "RETURN VALUE"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/docs/capng_updatev.3 
new/libcap-ng-0.7.11/docs/capng_updatev.3
--- old/libcap-ng-0.7.10/docs/capng_updatev.3   2019-10-01 20:29:23.000000000 
+0200
+++ new/libcap-ng-0.7.11/docs/capng_updatev.3   2020-08-23 23:57:31.000000000 
+0200
@@ -9,7 +9,7 @@
 
 .SH "DESCRIPTION"
 
-capng_updatev will update the internal posix capabilities settings based on 
the options passed to it. The action should be eith CAPNG_DROP to set the 
capability bit to 0, or CAPNG_ADD to set the capability bit to 1. The operation 
is performed on the capability set specified in the type parameter. The values 
are: CAPNG_EFFECTIVE, CAPNG_PERMITTED, CAPNG_INHERITABLE, CAPNG_BOUNDING_SET. 
The values may be or'ed together to perform the same operation on multiple 
sets. The last paramter, capability, is the capability define as given in 
linux/capability.h.
+capng_updatev will update the internal posix capabilities settings based on 
the options passed to it. The action should be either CAPNG_DROP to set the 
capability bit to 0, or CAPNG_ADD to set the capability bit to 1. The operation 
is performed on the capability set specified in the type parameter. The values 
are: CAPNG_EFFECTIVE, CAPNG_PERMITTED, CAPNG_INHERITABLE, CAPNG_BOUNDING_SET. 
The values may be or'ed together to perform the same operation on multiple 
sets. The last paramter, capability, is the capability define as given in 
linux/capability.h.
 
 This function differs from capng_update in that you may pass a list of 
capabilities. This list must be terminated with a -1 value.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/libcap-ng.spec 
new/libcap-ng-0.7.11/libcap-ng.spec
--- old/libcap-ng-0.7.10/libcap-ng.spec 2019-10-01 20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/libcap-ng.spec 2020-08-23 23:57:31.000000000 +0200
@@ -1,8 +1,6 @@
-%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from 
distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
-
 Summary: An alternate posix capabilities library
 Name: libcap-ng
-Version: 0.7.10
+Version: 0.7.11
 Release: 1
 License: LGPLv2+
 Group: System Environment/Libraries
@@ -27,22 +25,6 @@
 The libcap-ng-devel package contains the files needed for developing
 applications that need to use the libcap-ng library.
 
-%package -n python2-libcap-ng
-%{?python_provide:%python_provide python2-libcap-ng}
-# Remove in future
-Summary: Python2 bindings for libcap-ng library
-License: LGPLv2+
-Group: Development/Libraries
-BuildRequires: python2-devel swig
-Requires: %{name} = %{version}-%{release}
-Provides: %{name}-python = %{version}-%{release}
-Provides: %{name}-python%{?_isa} = %{version}-%{release}
-Obsoletes: %{name}-python < %{version}-%{release}
-
-%description python2-libcap-ng
-The python2-libcap-ng package contains the bindings so that libcap-ng
-and can be used by python2 applications.
-
 %package python3
 Summary: Python3 bindings for libcap-ng library
 License: LGPLv2+
@@ -68,11 +50,10 @@
 %setup -q
 
 %build
-%configure --libdir=/%{_lib} --with-python --with-python3
+%configure --libdir=/%{_lib} --with-python=no --with-python3
 make %{?_smp_mflags}
 
 %install
-rm -rf $RPM_BUILD_ROOT
 make DESTDIR="${RPM_BUILD_ROOT}" INSTALL='install -p' install
 
 # Move the symlink
@@ -94,13 +75,7 @@
 %check
 make check
 
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
+%ldconfig_scriptlets
 
 %files
 %defattr(-,root,root,-)
@@ -115,11 +90,6 @@
 %attr(0644,root,root) %{_datadir}/aclocal/cap-ng.m4
 %{_libdir}/pkgconfig/libcap-ng.pc
 
-%files -n python2-libcap-ng
-%defattr(-,root,root,-)
-%attr(755,root,root) %{python2_sitearch}/_capng.so
-%{python2_sitearch}/capng.py*
-
 %files python3
 %defattr(-,root,root,-)
 %attr(755,root,root) %{python3_sitearch}/*
@@ -132,6 +102,6 @@
 %attr(0644,root,root) %{_mandir}/man8/*
 
 %changelog
-* Tue Oct 01 2019 Steve Grubb <sgr...@redhat.com> 0.7.10-1
+* Sun Aug 23 2020 Steve Grubb <sgr...@redhat.com> 0.7.11-1
 - New upstream release
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/src/cap-ng.c 
new/libcap-ng-0.7.11/src/cap-ng.c
--- old/libcap-ng-0.7.10/src/cap-ng.c   2019-10-01 20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/src/cap-ng.c   2020-08-23 23:57:31.000000000 +0200
@@ -1,5 +1,5 @@
 /* libcap-ng.c --
- * Copyright 2009-10, 2013, 2017 Red Hat Inc., Durham, North Carolina.
+ * Copyright 2009-10, 2013, 2017, 2020 Red Hat Inc.
  * All Rights Reserved.
  *
  * This library is free software; you can redistribute it and/or
@@ -33,6 +33,7 @@
 #include <sys/stat.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <endian.h>
 #include <byteswap.h>
 #ifdef HAVE_PTHREAD_H
 #include <pthread.h>   // For pthread_atfork
@@ -57,6 +58,10 @@
 extern int capset(cap_user_header_t header, cap_user_data_t data);
 extern int capget(cap_user_header_t header, const cap_user_data_t data);
 
+// Local functions
+static void update_bounding_set(capng_act_t action, unsigned int capability,
+       unsigned int idx);
+
 // Local defines
 #define MASK(x) (1U << (x))
 #ifdef PR_CAPBSET_DROP
@@ -68,7 +73,7 @@
 
 // Re-define cap_valid so its uniform between V1 and V3
 #undef cap_valid
-#define cap_valid(x) ((x) <= last_cap)
+#define cap_valid(x) ((x) <= (unsigned int)last_cap)
 
 // If we don't have the xattr library, then we can't
 // compile-in file system capabilities
@@ -166,7 +171,9 @@
 static void init_lib(void) __attribute__ ((constructor));
 static void init_lib(void)
 {
+#ifdef HAVE_PTHREAD_H
        pthread_atfork(NULL, NULL, deinit);
+#endif
 }
 
 static void init(void)
@@ -282,6 +289,7 @@
 {
        char buf[64];
        FILE *f;
+       int rc;
 
        snprintf(buf, sizeof(buf), "/proc/%d/status", m.hdr.pid ? m.hdr.pid :
 #ifdef HAVE_SYSCALL_H
@@ -290,18 +298,34 @@
                (int)getpid();
 #endif
        f = fopen(buf, "re");
-       if (f == NULL)
-               return -1;
-       __fsetlocking(f, FSETLOCKING_BYCALLER);
-       while (fgets(buf, sizeof(buf), f)) {
-               if (strncmp(buf, "CapB", 4))
-                       continue;
-               sscanf(buf, "CapBnd:  %08x%08x", &m.bounds[1], &m.bounds[0]);
+       if (f) {
+               __fsetlocking(f, FSETLOCKING_BYCALLER);
+               while (fgets(buf, sizeof(buf), f)) {
+                       if (strncmp(buf, "CapB", 4))
+                               continue;
+                       sscanf(buf, "CapBnd:  %08x%08x",
+                              &m.bounds[1], &m.bounds[0]);
+                       fclose(f);
+                       return 0;
+               }
                fclose(f);
-               return 0;
+               return -1;
        }
-       fclose(f);
-       return -1;
+       // Might be in a container with no procfs - do it the hard way
+       memset(m.bounds, 0, sizeof(m.bounds));
+       unsigned int i = 0;
+       do {
+               rc = prctl(PR_CAPBSET_READ, i);
+               if (rc < 0)
+                       return -1;
+
+               // Just add set bits
+               if (rc)
+                       update_bounding_set(CAPNG_ADD, i%32, i>>5);
+               i++;
+       } while (cap_valid(i));
+
+       return 0;
 }
 #endif
 
@@ -522,11 +546,12 @@
 
        if (set & CAPNG_SELECT_BOUNDS) { 
 #ifdef PR_CAPBSET_DROP
-               void *s = capng_save_state();
+               struct cap_ng state;
+               memcpy(&state, &m, sizeof(state)); /* save state */
                capng_get_caps_process();
                if (capng_have_capability(CAPNG_EFFECTIVE, CAP_SETPCAP)) {
                        int i;
-                       capng_restore_state(&s);
+                       memcpy(&m, &state, sizeof(m)); /* restore state */
                        rc = 0;
                        for (i=0; i <= last_cap && rc == 0; i++)
                                if (capng_have_capability(CAPNG_BOUNDING_SET,
@@ -535,7 +560,7 @@
                        if (rc == 0)
                                m.state = CAPNG_APPLIED;
                } else
-                       capng_restore_state(&s);
+                       memcpy(&m, &state, sizeof(m)); /* restore state */
 #else
                rc = 0;
 #endif
@@ -654,7 +679,7 @@
 
        // Clear bounding set if needed while we have CAP_SETPCAP
        if (flag & CAPNG_CLEAR_BOUNDING) {
-               capng_clear(CAPNG_BOUNDING_SET);
+               capng_clear(CAPNG_SELECT_BOUNDS);
                rc = capng_apply(CAPNG_SELECT_BOUNDS);
                if (rc)
                        return -8;
@@ -822,6 +847,7 @@
                full = 1;
        else
                return CAPNG_PARTIAL;
+
        if ((m.data.v3[1].permitted & UPPER_MASK) == 0 && !full)
                empty = 1;
        else if ((m.data.v3[1].permitted & UPPER_MASK) == UPPER_MASK && !empty)
@@ -833,7 +859,7 @@
                return CAPNG_NONE;
        else if (empty == 0 && full == 1)
                return CAPNG_FULL;
-       
+
        return CAPNG_PARTIAL;
 }
 
@@ -1009,7 +1035,7 @@
                        } else if (where == CAPNG_PRINT_BUFFER) {
                                int len;
                                if (once == 0) {
-                                       ptr = malloc(last_cap*18);
+                                       ptr = malloc(last_cap*20);
                                        if (ptr == NULL)
                                                return ptr;
                                        len = sprintf(ptr+cnt, "%s", n);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/src/captab.h 
new/libcap-ng-0.7.11/src/captab.h
--- old/libcap-ng-0.7.10/src/captab.h   2019-10-01 20:29:23.000000000 +0200
+++ new/libcap-ng-0.7.11/src/captab.h   2020-08-23 23:57:31.000000000 +0200
@@ -1,5 +1,5 @@
 /* captab.h --
- * Copyright 2009,2011-14 Red Hat Inc., Durham, North Carolina.
+ * Copyright 2009,2011-14,2020 Red Hat Inc.
  * All Rights Reserved.
  *
  * This library is free software; you can redistribute it and/or
@@ -78,4 +78,12 @@
 #ifdef CAP_AUDIT_READ
 _S(CAP_AUDIT_READ,             "audit_read"            )
 #endif
-
+#ifdef CAP_PERFMON
+_S(CAP_PERFMON,                 "perfmon"               )
+#endif
+#ifdef CAP_BPF
+_S(CAP_BPF,                     "bpf"                   )
+#endif
+#ifdef CAP_CHECKPOINT_RESTORE
+_S(CAP_CHECKPOINT_RESTORE,     "checkpoint_restore")
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/src/lookup_table.c 
new/libcap-ng-0.7.11/src/lookup_table.c
--- old/libcap-ng-0.7.10/src/lookup_table.c     2019-10-01 20:29:23.000000000 
+0200
+++ new/libcap-ng-0.7.11/src/lookup_table.c     2020-08-23 23:57:31.000000000 
+0200
@@ -32,7 +32,7 @@
 extern int last_cap hidden;
 
 #undef cap_valid
-#define cap_valid(x) ((x) <= last_cap)
+#define cap_valid(x) ((x) <= (unsigned int)last_cap)
 
 
 struct transtab {
@@ -109,7 +109,7 @@
 static char *ptr2 = NULL;
 const char *capng_capability_to_name(unsigned int capability)
 {
-       char *ptr;
+       const char *ptr;
 
        if (!cap_valid(capability))
                return NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcap-ng-0.7.10/utils/filecap.c 
new/libcap-ng-0.7.11/utils/filecap.c
--- old/libcap-ng-0.7.10/utils/filecap.c        2019-10-01 20:29:23.000000000 
+0200
+++ new/libcap-ng-0.7.11/utils/filecap.c        2020-08-23 23:57:31.000000000 
+0200
@@ -1,6 +1,6 @@
 /*
  * filecap.c - A program that lists running processes with capabilities
- * Copyright (c) 2009-10,2012, 2017 Red Hat Inc., Durham, North Carolina.
+ * Copyright (c) 2009-10,2012,2017,2020 Red Hat Inc.
  * All Rights Reserved.
  *
  * This software may be freely redistributed and/or modified under the
@@ -15,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; see the file COPYING. If not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor 
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
  * Boston, MA 02110-1335, USA.
  *
  * Authors:
@@ -64,7 +64,8 @@
 
                capng_clear(CAPNG_SELECT_BOTH);
                if (capng_get_caps_fd(fd) < 0 && errno != ENODATA) {
-                       fprintf(stderr, "Unable to get capabilities of %s: 
%s\n",
+                       fprintf(stderr,
+                               "Unable to get capabilities of %s: %s\n",
                                fpath, strerror(errno));
                        if (single_file)
                                ret = 1;
@@ -77,7 +78,8 @@
                if (rc > CAPNG_NONE) {
                        if (header == 0) {
                                header = 1;
-                               printf("%-9s %-20s capabilities\n", "set", 
"file");
+                               printf("%-9s %-20s capabilities\n",
+                                      "set", "file");
                        }
                        printf("%s %s     ",
                                permitted ? "permitted" : "effective",  fpath);
@@ -95,7 +97,7 @@
 
 
 // Use cases:
-//  filecap 
+//  filecap
 //  filecap -a
 //  filecap /path/dir
 //  filecap /path/file
@@ -113,15 +115,16 @@
        int i, rc = 0;
 
        if (argc >1) {
-               for (i=1; i<argc; i++) {        
+               for (i=1; i<argc; i++) {
                        if (strcmp(argv[i], "-a") == 0) {
                                show_all = 1;
                                if (argc != 2)
                                        usage();
                        } else if (strcmp(argv[i], "-d") == 0) {
-                               for (i=0; i<=CAP_LAST_CAP; i++) {
+                               int j;
+                               for (j=0; j<=CAP_LAST_CAP; j++) {
                                        const char *n =
-                                               capng_capability_to_name(i);
+                                               capng_capability_to_name(j);
                                        if (n == NULL)
                                                n = "unknown";
                                        printf("%s\n", n);
@@ -129,7 +132,7 @@
                                return 0;
                        } else if (argv[i][0] == '/') {
                                if (lstat(argv[i], &sbuf) != 0) {
-                                       fprintf(stderr, 
+                                       fprintf(stderr,
                                                "Error checking path %s (%s)\n",
                                                argv[i], strerror(errno));
                                        exit(1);
@@ -141,11 +144,11 @@
                                                                 dir == NULL) {
                                        path = argv[i];
                                        capng_clear(CAPNG_SELECT_BOTH);
-                               } else if (S_ISDIR(sbuf.st_mode) && path == 
NULL 
+                               } else if (S_ISDIR(sbuf.st_mode) && path == NULL
                                                                && dir == NULL)
                                        dir = argv[i];
                                else {
-                                       fprintf(stderr, 
+                                       fprintf(stderr,
                                                "Must be one regular file or "
                                                "directory\n");
                                        exit(1);
@@ -203,7 +206,8 @@
                        return 1;
                }
                if (capng_apply_caps_fd(fd) < 0) {
-                       fprintf(stderr, "Could not set capabilities on %s: 
%s\n",
+                       fprintf(stderr,
+                               "Could not set capabilities on %s: %s\n",
                                path, strerror(errno));
                        rc = 1;
                }

++++++ libcap-ng.rpmlintrc ++++++
--- /var/tmp/diff_new_pack.zYsn9P/_old  2021-12-14 22:01:48.303134548 +0100
+++ /var/tmp/diff_new_pack.zYsn9P/_new  2021-12-14 22:01:48.307134550 +0100
@@ -1,5 +1,2 @@
-addFilter("libcap-ng-utils.*: W: shlib-policy-missing-lib")
-addFilter("libcap-ng-utils.*: W: shlib-policy-nonversioned-dir .*")
-addFilter("python-capng..*: W: files-duplicate 
/usr/lib.*/python.*/site-packages/.*")
 addFilter("libcap-ng-devel..*: W: no-dependency-on 
libcap-ng/libcap-ng-libs/liblibcap-ng")
 

Reply via email to