@@ -44,12 +44,22 @@ def setter(self, value):
44
44
return property (getter , setter )
45
45
46
46
# Wrap the capabilities, capability bounding set and securebits in an object
47
- _ALL_FLAG_NAMES = ('CAP_EFFECTIVE' , 'CAP_INHERITABLE' , 'CAP_PERMITTED' )
47
+ _ALL_FLAG_NAMES = ('CAP_EFFECTIVE' , 'CAP_INHERITABLE' , 'CAP_PERMITTED' )
48
48
_ALL_CAP_NAMES = tuple (x for x in dir (_prctl ) if x .startswith ('CAP_' ) and x not in _ALL_FLAG_NAMES )
49
- ALL_FLAG_NAMES = list (x [4 :].lower () for x in _ALL_FLAG_NAMES )
50
- ALL_CAP_NAMES = list (x [4 :].lower () for x in _ALL_CAP_NAMES )
51
- ALL_CAPS = tuple (getattr (_prctl ,x ) for x in _ALL_CAP_NAMES )
49
+ ALL_FLAG_NAMES = tuple (x [4 :].lower () for x in _ALL_FLAG_NAMES )
50
+ ALL_CAP_NAMES = tuple (x [4 :].lower () for x in _ALL_CAP_NAMES )
52
51
ALL_FLAGS = tuple (getattr (_prctl ,x ) for x in _ALL_FLAG_NAMES )
52
+ ALL_CAPS = tuple (getattr (_prctl ,x ) for x in _ALL_CAP_NAMES )
53
+
54
+ for i in range (_prctl .CAP_LAST_CAP + 1 ):
55
+ if i not in ALL_CAPS :
56
+ _ALL_CAP_NAMES += ("CAP_UNKNOWN_%d" % i ,)
57
+ del i
58
+
59
+ if len (_ALL_CAP_NAMES ) != len (ALL_CAPS ):
60
+ warnings .warn ("not all known capabilities are named, this is a bug in python-prctl" , RuntimeWarning )
61
+ ALL_CAP_NAMES = tuple (x [4 :].lower () for x in _ALL_CAP_NAMES )
62
+ ALL_CAPS = tuple (getattr (_prctl ,x ) for x in _ALL_CAP_NAMES )
53
63
54
64
class Capbset (object ):
55
65
__slots__ = ALL_CAP_NAMES
@@ -69,7 +79,7 @@ def limit(self, *caps):
69
79
capbset = Capbset ()
70
80
71
81
class Capset (object ):
72
- __slots__ = ALL_CAP_NAMES + [ 'flag' ]
82
+ __slots__ = ALL_CAP_NAMES + ( 'flag' ,)
73
83
def __init__ (self , flag ):
74
84
self .flag = flag
75
85
for name in _ALL_CAP_NAMES :
0 commit comments