From: Ivan Gyurdiev <ivg2@cornell.edu>
To: SELinux List <SELinux@tycho.nsa.gov>
Cc: Stephen Smalley <sds@tycho.nsa.gov>
Subject: Re: [SEMANAGE][UTILS] Use PyList in bindings
Date: Tue, 14 Feb 2006 05:59:51 -0500 [thread overview]
Message-ID: <43F1B827.401@cornell.edu> (raw)
In-Reply-To: <43E26F62.7010400@cornell.edu>
[-- Attachment #1: Type: text/plain, Size: 67 bytes --]
Attached is a resync of this patch against current genhomedircon.
[-- Attachment #2: libsemanage.utils.pylist2.diff --]
[-- Type: text/x-patch, Size: 17926 bytes --]
diff -Naurp --exclude-from excludes old/libsemanage/include/semanage/booleans_policy.h new/libsemanage/include/semanage/booleans_policy.h
--- old/libsemanage/include/semanage/booleans_policy.h 2006-02-14 05:41:35.000000000 -0500
+++ new/libsemanage/include/semanage/booleans_policy.h 2006-02-02 14:13:37.000000000 -0500
@@ -30,6 +30,6 @@ extern int semanage_bool_iterate(
extern int semanage_bool_list(
semanage_handle_t* handle,
semanage_bool_t*** records,
- unsigned int* size);
+ unsigned int* count);
#endif
diff -Naurp --exclude-from excludes old/libsemanage/src/pywrap-test.py new/libsemanage/src/pywrap-test.py
--- old/libsemanage/src/pywrap-test.py 2006-02-14 05:41:35.000000000 -0500
+++ new/libsemanage/src/pywrap-test.py 2006-02-05 01:30:04.000000000 -0500
@@ -124,7 +124,7 @@ class Tests:
print "Testing modules..."
(trans_cnt, mlist, mlist_size) = semanage.semanage_module_list(sh)
-
+
print "Transaction number: ", trans_cnt
print "Module list size: ", mlist_size
if self.verbose: print "List reference: ", mlist
@@ -135,27 +135,23 @@ class Tests:
return
for idx in range(mlist_size):
module = semanage.semanage_module_list_nth(mlist, idx)
- if self.verbose: print "Module reference: ", module
+ if self.verbose: print "Module reference: ", module
print "Module name: ", semanage.semanage_module_get_name(module)
print " Module version: ", semanage.semanage_module_get_version(module)
def test_seusers(self,sh):
print "Testing seusers..."
- (status, slist, slist_size) = semanage.semanage_seuser_list(sh)
+ (status, slist) = semanage.semanage_seuser_list(sh)
if status < 0:
raise Error("Could not list seusers")
print "Query status (commit number): ", status
- print "SEUser list size: ", slist_size
- if self.verbose: print "List reference: ", slist
-
- if (slist_size == 0):
+ if ( len(slist) == 0):
print "No seusers found!"
print "This is not necessarily a test failure."
return
- for idx in range(slist_size):
- seuser = semanage.semanage_seuser_by_idx(slist, idx)
+ for seuser in slist:
if self.verbose: print "seseuser reference: ", seuser
print "seuser name: ", semanage.semanage_seuser_get_name(seuser)
print " seuser mls range: ", semanage.semanage_seuser_get_mlsrange(seuser)
@@ -165,20 +161,16 @@ class Tests:
def test_users(self,sh):
print "Testing users..."
- (status, ulist, ulist_size) = semanage.semanage_user_list(sh)
+ (status, ulist) = semanage.semanage_user_list(sh)
if status < 0:
raise Error("Could not list users")
print "Query status (commit number): ", status
- print "User list size: ", ulist_size
- if self.verbose: print "List reference: ", ulist
-
- if (ulist_size == 0):
+ if ( len(ulist) == 0):
print "No users found!"
print "This is not necessarily a test failure."
return
- for idx in range(ulist_size):
- user = semanage.semanage_user_by_idx(ulist, idx)
+ for user in ulist:
if self.verbose: print "User reference: ", user
print "User name: ", semanage.semanage_user_get_name(user)
print " User labeling prefix: ", semanage.semanage_user_get_prefix(user)
@@ -197,20 +189,16 @@ class Tests:
def test_ports(self,sh):
print "Testing ports..."
- (status, plist, plist_size) = semanage.semanage_port_list(sh)
+ (status, plist) = semanage.semanage_port_list(sh)
if status < 0:
raise Error("Could not list ports")
print "Query status (commit number): ", status
- print "Port list size: ", plist_size
- if self.verbose: print "List reference: ", plist
-
- if (plist_size == 0):
+ if ( len(plist) == 0):
print "No ports found!"
print "This is not necessarily a test failure."
return
- for idx in range(plist_size):
- port = semanage.semanage_port_by_idx(plist, idx)
+ for port in plist:
if self.verbose: print "Port reference: ", port
low = semanage.semanage_port_get_low(port)
high = semanage.semanage_port_get_high(port)
@@ -229,20 +217,16 @@ class Tests:
def test_fcontexts(self,sh):
print "Testing file contexts..."
- (status, flist, flist_size) = semanage.semanage_fcontext_list(sh)
+ (status, flist) = semanage.semanage_fcontext_list(sh)
if status < 0:
raise Error("Could not list file contexts")
print "Query status (commit number): ", status
- print "File Context list size: ", flist_size
- if self.verbose: print "List reference: ", flist
-
- if (flist_size == 0):
+ if (len(flist) == 0):
print "No file contexts found!"
print "This is not necessarily a test failure."
return
- for idx in range(flist_size):
- fcon = semanage.semanage_fcontext_by_idx(flist, idx)
+ for fcon in flist:
if self.verbose: print "File Context reference: ", fcon
expr = semanage.semanage_fcontext_get_expr(fcon)
type = semanage.semanage_fcontext_get_type(fcon)
@@ -259,20 +243,16 @@ class Tests:
def test_interfaces(self,sh):
print "Testing network interfaces..."
- (status, ilist, ilist_size) = semanage.semanage_iface_list(sh)
+ (status, ilist) = semanage.semanage_iface_list(sh)
if status < 0:
raise Error("Could not list interfaces")
print "Query status (commit number): ", status
- print "Interfaces list size: ", ilist_size
- if self.verbose: print "List reference: ", ilist
-
- if (ilist_size == 0):
+ if (len(ilist) == 0):
print "No network interfaces found!"
print "This is not necessarily a test failure."
return
- for idx in range(ilist_size):
- iface = semanage.semanage_iface_by_idx(ilist, idx)
+ for iface in ilist:
if self.verbose: print "Interface reference: ", iface
name = semanage.semanage_iface_get_name(iface)
msg_con = semanage.semanage_iface_get_msgcon(iface)
@@ -287,20 +267,16 @@ class Tests:
def test_booleans(self,sh):
print "Testing booleans..."
- (status, blist, blist_size) = semanage.semanage_bool_list(sh)
+ (status, blist) = semanage.semanage_bool_list(sh)
if status < 0:
raise Error("Could not list booleans")
print "Query status (commit number): ", status
- print "Booleans list size: ", blist_size
- if self.verbose: print "List reference: ", blist
-
- if (blist_size == 0):
+ if (len(blist) == 0):
print "No booleans found!"
print "This is not necessarily a test failure."
return
- for idx in range(blist_size):
- pbool = semanage.semanage_bool_by_idx(blist, idx)
+ for pbool in blist:
if self.verbose: print "Boolean reference: ", pbool
name = semanage.semanage_bool_get_name(pbool)
value = semanage.semanage_bool_get_value(pbool)
@@ -310,20 +286,16 @@ class Tests:
def test_abooleans(self,sh):
print "Testing active booleans..."
- (status, ablist, ablist_size) = semanage.semanage_bool_list_active(sh)
+ (status, ablist) = semanage.semanage_bool_list_active(sh)
if status < 0:
raise Error("Could not list active booleans")
print "Query status (commit number): ", status
- print "Active Booleans list size: ", ablist_size
- if self.verbose: print "List reference: ", ablist
-
- if (ablist_size == 0):
+ if (len(ablist) == 0):
print "No active booleans found!"
print "This is not necessarily a test failure."
return
- for idx in range(ablist_size):
- abool = semanage.semanage_bool_by_idx(ablist, idx)
+ for abool in ablist:
if self.verbose: print "Active boolean reference: ", abool
name = semanage.semanage_bool_get_name(abool)
value = semanage.semanage_bool_get_value(abool)
diff -Naurp --exclude-from excludes old/libsemanage/src/semanageswig.i new/libsemanage/src/semanageswig.i
--- old/libsemanage/src/semanageswig.i 2006-02-14 05:41:35.000000000 -0500
+++ new/libsemanage/src/semanageswig.i 2006-02-03 20:59:05.000000000 -0500
@@ -50,24 +50,6 @@
%}
%inline {
- semanage_user_t *semanage_user_by_idx(semanage_user_t **list, int n) {
- return list[n];
- }
- semanage_seuser_t *semanage_seuser_by_idx(semanage_seuser_t **list, int n) {
- return list[n];
- }
- semanage_port_t *semanage_port_by_idx(semanage_port_t **list, int n) {
- return list[n];
- }
- semanage_iface_t *semanage_iface_by_idx(semanage_iface_t **list, int n) {
- return list[n];
- }
- semanage_bool_t *semanage_bool_by_idx(semanage_bool_t **list, int n) {
- return list[n];
- }
- semanage_fcontext_t *semanage_fcontext_by_idx(semanage_fcontext_t **list, int n) {
- return list[n];
- }
char *char_by_idx(char **list, int n) {
return list[n];
}
@@ -133,8 +115,21 @@
$1 = &temp;
}
-%typemap(argout) semanage_bool_t *** {
- $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_semanage_bool, 0));
+%typemap(argout) (
+ semanage_handle_t* handle,
+ semanage_bool_t*** records,
+ unsigned int* count) {
+
+ if (result >= 0) {
+ PyObject* plist = PyList_New(*$3);
+ unsigned int i;
+
+ for (i = 0; i < *$3; i++)
+ PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_bool, 0));
+
+ $result = t_output_helper($result, plist);
+ free(*$2);
+ }
}
%typemap(in, numinputs=0) semanage_bool_t **(semanage_bool_t *temp) {
@@ -161,8 +156,21 @@
$1 = &temp;
}
-%typemap(argout) semanage_fcontext_t *** {
- $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_semanage_fcontext, 0));
+%typemap(argout) (
+ semanage_handle_t* handle,
+ semanage_fcontext_t*** records,
+ unsigned int* count) {
+
+ if (result >= 0) {
+ PyObject* plist = PyList_New(*$3);
+ unsigned int i;
+
+ for (i = 0; i < *$3; i++)
+ PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_fcontext, 0));
+
+ $result = t_output_helper($result, plist);
+ free(*$2);
+ }
}
%typemap(in, numinputs=0) semanage_fcontext_t **(semanage_fcontext_t *temp) {
@@ -189,9 +197,22 @@
$1 = &temp;
}
-%typemap(argout) semanage_iface_t *** {
- $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_semanage_iface, 0));
-}
+%typemap(argout) (
+ semanage_handle_t* handle,
+ semanage_iface_t*** records,
+ unsigned int* count) {
+
+ if (result >= 0) {
+ PyObject* plist = PyList_New(*$3);
+ unsigned int i;
+
+ for (i = 0; i < *$3; i++)
+ PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_iface, 0));
+
+ $result = t_output_helper($result, plist);
+ free(*$2);
+ }
+}
%typemap(in, numinputs=0) semanage_iface_t **(semanage_iface_t *temp) {
$1 = &temp;
@@ -217,9 +238,22 @@
$1 = &temp;
}
-%typemap(argout) semanage_seuser_t *** {
- $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_semanage_seuser, 0));
-}
+%typemap(argout) (
+ semanage_handle_t* handle,
+ semanage_seuser_t*** records,
+ unsigned int* count) {
+
+ if (result >= 0) {
+ PyObject* plist = PyList_New(*$3);
+ unsigned int i;
+
+ for (i = 0; i < *$3; i++)
+ PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_seuser, 0));
+
+ $result = t_output_helper($result, plist);
+ free(*$2);
+ }
+}
%typemap(in, numinputs=0) semanage_seuser_t **(semanage_seuser_t *temp) {
$1 = &temp;
@@ -245,10 +279,23 @@
$1 = &temp;
}
-%typemap(argout) semanage_user_t *** {
- $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_semanage_user, 0));
-}
+%typemap(argout) (
+ semanage_handle_t* handle,
+ semanage_user_t*** records,
+ unsigned int* count) {
+ if (result >= 0) {
+ PyObject* plist = PyList_New(*$3);
+ unsigned int i;
+
+ for (i = 0; i < *$3; i++)
+ PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_user, 0));
+
+ $result = t_output_helper($result, plist);
+ free(*$2);
+ }
+}
+
%typemap(in, numinputs=0) semanage_user_t **(semanage_user_t *temp) {
$1 = &temp;
}
@@ -273,9 +320,22 @@
$1 = &temp;
}
-%typemap(argout) semanage_port_t *** {
- $result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_semanage_port, 0));
-}
+%typemap(argout) (
+ semanage_handle_t* handle,
+ semanage_port_t*** records,
+ unsigned int* count) {
+
+ if (result >= 0) {
+ PyObject* plist = PyList_New(*$3);
+ unsigned int i;
+
+ for (i = 0; i < *$3; i++)
+ PyList_SetItem(plist, i, SWIG_NewPointerObj((*$2)[i], SWIGTYPE_p_semanage_port, 0));
+
+ $result = t_output_helper($result, plist);
+ free(*$2);
+ }
+}
%typemap(in, numinputs=0) semanage_port_t **(semanage_port_t *temp) {
$1 = &temp;
diff -Naurp --exclude-from excludes old/policycoreutils/scripts/genhomedircon new/policycoreutils/scripts/genhomedircon
--- old/policycoreutils/scripts/genhomedircon 2006-02-14 05:42:08.000000000 -0500
+++ new/policycoreutils/scripts/genhomedircon 2006-02-14 05:57:04.000000000 -0500
@@ -133,7 +133,7 @@ class selinuxConfig:
self.semanaged=semanage_is_managed(self.semanageHandle)
if self.semanaged:
semanage_connect(self.semanageHandle)
- (status, self.ulist, self.usize) = semanage_user_list(self.semanageHandle)
+ (status, self.ulist) = semanage_user_list(self.semanageHandle)
self.type=type
self.selinuxdir=selinuxdir +"/"
self.contextdir="/contexts"
@@ -174,11 +174,11 @@ class selinuxConfig:
return ret
def get_default_prefix(self, name):
- for idx in range(self.usize):
- user = semanage_user_by_idx(self.ulist, idx)
+ for user in self.ulist:
if semanage_user_get_name(user) == name:
return semanage_user_get_prefix(user)
return name
+
def get_old_prefix(self, user):
rc=grep(self.selinuxdir+self.type+"/users/system.users", "^user %s" % user)
if rc == "":
@@ -219,10 +219,9 @@ class selinuxConfig:
def getUsers(self):
udict = {}
if self.semanaged:
- (status, list, lsize) = semanage_seuser_list(self.semanageHandle)
- for idx in range(lsize):
+ (status, list) = semanage_seuser_list(self.semanageHandle)
+ for seuser in list:
user=[]
- seuser = semanage_seuser_by_idx(list, idx)
seusername=semanage_seuser_get_sename(seuser)
self.adduser(udict, semanage_seuser_get_name(seuser), seusername, self.get_default_prefix(seusername))
diff -Naurp --exclude-from excludes old/policycoreutils/semanage/seobject.py new/policycoreutils/semanage/seobject.py
--- old/policycoreutils/semanage/seobject.py 2006-02-14 05:41:35.000000000 -0500
+++ new/policycoreutils/semanage/seobject.py 2006-02-02 15:03:34.000000000 -0500
@@ -288,12 +288,11 @@ class loginRecords(semanageRecords):
def get_all(self):
ddict={}
- (rc, self.ulist, self.usize) = semanage_seuser_list(self.sh)
+ (rc, self.ulist) = semanage_seuser_list(self.sh)
if rc < 0:
raise ValueError("Could not list login mappings")
- for idx in range(self.usize):
- u = semanage_seuser_by_idx(self.ulist, idx)
+ for u in self.ulist:
name = semanage_seuser_get_name(u)
ddict[name]=(semanage_seuser_get_sename(u), semanage_seuser_get_mlsrange(u))
return ddict
@@ -447,12 +446,11 @@ class seluserRecords(semanageRecords):
def get_all(self):
ddict={}
- (rc, self.ulist, self.usize) = semanage_user_list(self.sh)
+ (rc, self.ulist) = semanage_user_list(self.sh)
if rc < 0:
raise ValueError("Could not list SELinux users")
- for idx in range(self.usize):
- u = semanage_user_by_idx(self.ulist, idx)
+ for u in self.ulist:
name = semanage_user_get_name(u)
(rc, rlist, rlist_size) = semanage_user_get_roles(self.sh, u)
if rc < 0:
@@ -637,12 +635,11 @@ class portRecords(semanageRecords):
def get_all(self):
ddict={}
- (rc, self.plist, self.psize) = semanage_port_list(self.sh)
+ (rc, self.plist) = semanage_port_list(self.sh)
if rc < 0:
raise ValueError("Could not list ports")
- for idx in range(self.psize):
- port = semanage_port_by_idx(self.plist, idx)
+ for port in self.plist:
con = semanage_port_get_con(port)
ctype = semanage_context_get_type(con)
if ctype == "reserved_port_t":
@@ -657,12 +654,11 @@ class portRecords(semanageRecords):
def get_all_by_type(self):
ddict={}
- (rc, self.plist, self.psize) = semanage_port_list(self.sh)
+ (rc, self.plist) = semanage_port_list(self.sh)
if rc < 0:
raise ValueError("Could not list ports")
- for idx in range(self.psize):
- port = semanage_port_by_idx(self.plist, idx)
+ for port in self.plist:
con = semanage_port_get_con(port)
ctype = semanage_context_get_type(con)
if ctype == "reserved_port_t":
@@ -837,12 +833,11 @@ class interfaceRecords(semanageRecords):
def get_all(self):
ddict={}
- (rc, self.plist, self.psize) = semanage_iface_list(self.sh)
+ (rc, self.ilist) = semanage_iface_list(self.sh)
if rc < 0:
raise ValueError("Could not list interfaces")
- for idx in range(self.psize):
- interface = semanage_iface_by_idx(self.plist, idx)
+ for interface in self.ilist:
con = semanage_iface_get_ifcon(interface)
ddict[semanage_iface_get_name(interface)]=(semanage_context_get_user(con), semanage_context_get_role(con), semanage_context_get_type(con), semanage_context_get_mls(con))
@@ -1022,12 +1017,11 @@ class fcontextRecords(semanageRecords):
def get_all(self):
ddict={}
- (rc, self.plist, self.psize) = semanage_fcontext_list(self.sh)
+ (rc, self.flist) = semanage_fcontext_list(self.sh)
if rc < 0:
raise ValueError("Could not list file contexts")
- for idx in range(self.psize):
- fcontext = semanage_fcontext_by_idx(self.plist, idx)
+ for fcontext in self.flist:
expr = semanage_fcontext_get_expr(fcontext)
ftype = semanage_fcontext_get_type(fcontext)
ftype_str = semanage_fcontext_get_type_str(ftype)
@@ -1124,12 +1118,11 @@ class booleanRecords(semanageRecords):
def get_all(self):
ddict={}
- (rc, self.blist, self.bsize) = semanage_bool_list(self.sh)
+ (rc, self.blist) = semanage_bool_list(self.sh)
if rc < 0:
raise ValueError("Could not list booleans")
- for idx in range(self.bsize):
- boolean = semanage_bool_by_idx(self.blist, idx)
+ for boolean in self.blist:
name = semanage_bool_get_name(boolean)
value = semanage_bool_get_value(boolean)
ddict[name] = value
next prev parent reply other threads:[~2006-02-14 10:59 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-02 20:45 [SEMANAGE][UTILS] Use PyList in bindings Ivan Gyurdiev
2006-02-02 21:16 ` Ivan Gyurdiev
2006-02-03 14:00 ` Stephen Smalley
2006-02-03 14:36 ` Joshua Brindle
2006-02-14 10:59 ` Ivan Gyurdiev [this message]
2006-02-14 12:08 ` Move python bindings into semanageswig_python.i Ivan Gyurdiev
2006-02-14 18:51 ` Improve bindings, add PyList(String) for roles array Ivan Gyurdiev
2006-02-14 20:12 ` Stephen Smalley
2006-02-14 19:01 ` Move python bindings into semanageswig_python.i Stephen Smalley
2006-02-14 18:57 ` [SEMANAGE][UTILS] Use PyList in bindings Stephen Smalley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43F1B827.401@cornell.edu \
--to=ivg2@cornell.edu \
--cc=SELinux@tycho.nsa.gov \
--cc=sds@tycho.nsa.gov \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.