* [SEMANAGE][SEPOL][UTILS] Clone record on set_con
@ 2006-02-02 15:07 Ivan Gyurdiev
2006-02-02 16:26 ` Stephen Smalley
0 siblings, 1 reply; 2+ messages in thread
From: Ivan Gyurdiev @ 2006-02-02 15:07 UTC (permalink / raw)
To: SELinux List; +Cc: Stephen Smalley, Daniel J Walsh
[-- Attachment #1: Type: text/plain, Size: 749 bytes --]
Hi, this patch clones the context record passed to:
semanage_fcontext_set_con
[sepol/semanage]_iface_set_msgcon
[sepol/semanage]_iface_set_ifcon
[sepol/semanage]_port_set_con
This matches the behavior of the modify() function - no taking over the
caller's objects. Less likely to run into an error this way, and it
improves consistency. Unfortunately it also means set_con can fail, the
failure has to be handled, and the context freed by the caller... but I
think this is a more flexible interface (caller can reuse object if
necessary).
This is an API change, dependency is seobject.py, fixed in this patch.
===
Patch also fixes 3 bugs in the pywrap-test, which is rather surprising -
I do run those tests, not sure how they sneaked in.
[-- Attachment #2: libsemanage.sepol.utils.clone_set_con.diff --]
[-- Type: text/x-patch, Size: 20023 bytes --]
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/include/semanage/fcontext_record.h new/libsemanage/include/semanage/fcontext_record.h
--- old/libsemanage/include/semanage/fcontext_record.h 2006-01-30 15:05:42.000000000 -0500
+++ new/libsemanage/include/semanage/fcontext_record.h 2006-02-02 09:34:01.000000000 -0500
@@ -70,7 +70,8 @@ extern void semanage_fcontext_set_type(
extern semanage_context_t* semanage_fcontext_get_con(
const semanage_fcontext_t* fcontext);
-extern void semanage_fcontext_set_con(
+extern int semanage_fcontext_set_con(
+ semanage_handle_t* handle,
semanage_fcontext_t* fcontext,
semanage_context_t* con);
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/include/semanage/iface_record.h new/libsemanage/include/semanage/iface_record.h
--- old/libsemanage/include/semanage/iface_record.h 2006-01-06 09:36:29.000000000 -0500
+++ new/libsemanage/include/semanage/iface_record.h 2006-02-02 06:15:50.000000000 -0500
@@ -49,14 +49,16 @@ extern int semanage_iface_set_name(
extern semanage_context_t* semanage_iface_get_ifcon(
const semanage_iface_t* iface);
-extern void semanage_iface_set_ifcon(
+extern int semanage_iface_set_ifcon(
+ semanage_handle_t* handle,
semanage_iface_t* iface,
semanage_context_t* con);
extern semanage_context_t* semanage_iface_get_msgcon(
const semanage_iface_t* iface);
-extern void semanage_iface_set_msgcon(
+extern int semanage_iface_set_msgcon(
+ semanage_handle_t* handle,
semanage_iface_t* iface,
semanage_context_t* con);
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/include/semanage/port_record.h new/libsemanage/include/semanage/port_record.h
--- old/libsemanage/include/semanage/port_record.h 2006-01-30 15:05:42.000000000 -0500
+++ new/libsemanage/include/semanage/port_record.h 2006-02-02 06:16:05.000000000 -0500
@@ -69,7 +69,8 @@ extern void semanage_port_set_range(
extern semanage_context_t* semanage_port_get_con(
const semanage_port_t* port);
-extern void semanage_port_set_con(
+extern int semanage_port_set_con(
+ semanage_handle_t* handle,
semanage_port_t* port,
semanage_context_t* con);
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/src/fcontext_record.c new/libsemanage/src/fcontext_record.c
--- old/libsemanage/src/fcontext_record.c 2006-01-30 15:05:58.000000000 -0500
+++ new/libsemanage/src/fcontext_record.c 2006-02-02 09:35:17.000000000 -0500
@@ -220,12 +220,21 @@ semanage_context_t* semanage_fcontext_ge
}
hidden_def(semanage_fcontext_get_con)
-void semanage_fcontext_set_con(
- semanage_fcontext_t* fcontext,
+int semanage_fcontext_set_con(
+ semanage_handle_t* handle,
+ semanage_fcontext_t* fcontext,
semanage_context_t* con) {
+ semanage_context_t* newcon;
+
+ if (semanage_context_clone(handle, con, &newcon) < 0) {
+ ERR(handle, "out of memory, could not set file context");
+ return STATUS_ERR;
+ }
+
semanage_context_free(fcontext->con);
- fcontext->con = con;
+ fcontext->con = newcon;
+ return STATUS_SUCCESS;
}
hidden_def(semanage_fcontext_set_con)
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/src/fcontexts_file.c new/libsemanage/src/fcontexts_file.c
--- old/libsemanage/src/fcontexts_file.c 2006-01-30 15:05:58.000000000 -0500
+++ new/libsemanage/src/fcontexts_file.c 2006-02-02 09:45:13.000000000 -0500
@@ -138,12 +138,13 @@ static int fcontext_parse(
free(str);
str = NULL;
- semanage_fcontext_set_con(fcontext, con);
- con = NULL;
+ if (con && semanage_fcontext_set_con(handle, fcontext, con) < 0)
+ goto err;
if (parse_assert_space(handle, info) < 0)
goto err;
+ semanage_context_free(con);
return STATUS_SUCCESS;
last:
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/src/iface_record.c new/libsemanage/src/iface_record.c
--- old/libsemanage/src/iface_record.c 2006-01-13 08:37:33.000000000 -0500
+++ new/libsemanage/src/iface_record.c 2006-02-02 06:15:19.000000000 -0500
@@ -96,11 +96,12 @@ semanage_context_t* semanage_iface_get_i
}
hidden_def(semanage_iface_get_ifcon)
-void semanage_iface_set_ifcon(
+int semanage_iface_set_ifcon(
+ semanage_handle_t* handle,
semanage_iface_t* iface,
semanage_context_t* con) {
- sepol_iface_set_ifcon(iface, con);
+ return sepol_iface_set_ifcon(handle->sepolh, iface, con);
}
hidden_def(semanage_iface_set_ifcon)
@@ -111,11 +112,12 @@ semanage_context_t* semanage_iface_get_m
}
hidden_def(semanage_iface_get_msgcon)
-void semanage_iface_set_msgcon(
+int semanage_iface_set_msgcon(
+ semanage_handle_t* handle,
semanage_iface_t* iface,
semanage_context_t* con) {
- sepol_iface_set_msgcon(iface, con);
+ return sepol_iface_set_msgcon(handle->sepolh, iface, con);
}
hidden_def(semanage_iface_set_msgcon)
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/src/interfaces_file.c new/libsemanage/src/interfaces_file.c
--- old/libsemanage/src/interfaces_file.c 2006-01-30 15:05:58.000000000 -0500
+++ new/libsemanage/src/interfaces_file.c 2006-02-02 06:18:00.000000000 -0500
@@ -100,9 +100,11 @@ static int iface_parse(
}
free(str);
str = NULL;
-
- semanage_iface_set_ifcon(iface, con);
- con = NULL;
+
+ if (semanage_iface_set_ifcon(handle, iface, con) < 0)
+ goto err;
+ semanage_context_free(con);
+ con = NULL;
/* Message context */
if (parse_assert_space(handle, info) < 0)
@@ -122,9 +124,11 @@ static int iface_parse(
}
free(str);
str = NULL;
-
- semanage_iface_set_msgcon(iface, con);
- con = NULL;
+
+ if (semanage_iface_set_msgcon(handle, iface, con) < 0)
+ goto err;
+ semanage_context_free(con);
+ con = NULL;
if (parse_assert_space(handle, info) < 0)
goto err;
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/src/port_record.c new/libsemanage/src/port_record.c
--- old/libsemanage/src/port_record.c 2006-01-30 15:05:58.000000000 -0500
+++ new/libsemanage/src/port_record.c 2006-02-02 06:15:23.000000000 -0500
@@ -133,11 +133,12 @@ semanage_context_t* semanage_port_get_co
}
hidden_def(semanage_port_get_con)
-void semanage_port_set_con(
+int semanage_port_set_con(
+ semanage_handle_t* handle,
semanage_port_t* port,
semanage_context_t* con) {
- sepol_port_set_con(port, con);
+ return sepol_port_set_con(handle->sepolh, port, con);
}
hidden_def(semanage_port_set_con)
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/src/ports_file.c new/libsemanage/src/ports_file.c
--- old/libsemanage/src/ports_file.c 2006-01-30 15:05:58.000000000 -0500
+++ new/libsemanage/src/ports_file.c 2006-02-02 06:19:11.000000000 -0500
@@ -139,12 +139,13 @@ static int port_parse(
free(str);
str = NULL;
- semanage_port_set_con(port, con);
- con = NULL;
+ if (semanage_port_set_con(handle, port, con) < 0)
+ goto err;
if (parse_assert_space(handle, info) < 0)
goto err;
+ semanage_context_free(con);
return STATUS_SUCCESS;
last:
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsemanage/src/pywrap-test.py new/libsemanage/src/pywrap-test.py
--- old/libsemanage/src/pywrap-test.py 2006-01-30 15:05:58.000000000 -0500
+++ new/libsemanage/src/pywrap-test.py 2006-02-02 09:51:45.000000000 -0500
@@ -205,7 +205,7 @@ class Tests:
low = semanage.semanage_port_get_low(port)
high = semanage.semanage_port_get_high(port)
con = semanage.semanage_port_get_con(port)
- proto = semanage.semanage_port_get_proto_str(port)
+ proto = semanage.semanage_port_get_proto(port)
proto_str = semanage.semanage_port_get_proto_str(proto)
if low == high:
range_str = str(low)
@@ -235,7 +235,7 @@ class Tests:
fcon = semanage.semanage_fcontext_by_idx(flist, idx)
if self.verbose: print "File Context reference: ", fcon
expr = semanage.semanage_fcontext_get_expr(fcon)
- type = semanage.semanage_fcontext_get_type(type)
+ type = semanage.semanage_fcontext_get_type(fcon)
type_str = semanage.semanage_fcontext_get_type_str(type)
con = semanage.semanage_fcontext_get_con(fcon)
if not con:
@@ -501,7 +501,7 @@ class Tests:
if self.verbose: print "SEPort range set: ", low, "-", high
semanage.semanage_port_set_proto(port, semanage.SEMANAGE_PROTO_TCP);
- if self.verbose: print "SEPort protocol set: ",
+ if self.verbose: print "SEPort protocol set: ", \
semanage.semanage_port_get_proto_str(semanage.SEMANAGE_PROTO_TCP)
(status, con) = semanage.semanage_context_create(sh)
@@ -529,7 +529,9 @@ class Tests:
raise Error("Could not set context MLS fields")
if self.verbose: print "SEContext mls: ", semanage.semanage_context_get_mls(con)
- semanage.semanage_port_set_con(port, con)
+ status = semanage.semanage_port_set_con(sh, port, con)
+ if status < 0:
+ raise Error("Could not set SEPort context")
if self.verbose: print "SEPort context set: ", con
(status,key) = semanage.semanage_port_key_extract(sh,port)
@@ -584,6 +586,7 @@ class Tests:
raise Error("Could not commit reset transaction")
print "Commit status (transaction number): ", status
+ semanage.semanage_context_free(con)
semanage.semanage_port_key_free(key)
semanage.semanage_port_free(port)
if exists: semanage.semanage_port_free(old_port)
@@ -629,7 +632,9 @@ class Tests:
raise Error("Could not set context MLS fields")
if self.verbose: print "SEContext mls: ", semanage.semanage_context_get_mls(con)
- semanage.semanage_fcontext_set_con(fcon, con)
+ status = semanage.semanage_fcontext_set_con(sh, fcon, con)
+ if status < 0:
+ raise Error("Could not set SEFcontext context")
if self.verbose: print "SEFcontext context set: ", con
(status,key) = semanage.semanage_fcontext_key_extract(sh,fcon)
@@ -683,7 +688,8 @@ class Tests:
if status < 0:
raise Error("Could not commit reset transaction")
print "Commit status (transaction number): ", status
-
+
+ semanage.semanage_context_free(con)
semanage.semanage_fcontext_key_free(key)
semanage.semanage_fcontext_free(fcon)
if exists: semanage.semanage_fcontext_free(old_fcontext)
@@ -726,35 +732,14 @@ class Tests:
raise Error("Could not set interface context MLS fields")
if self.verbose: print "SEContext mls: ", semanage.semanage_context_get_mls(con)
- semanage.semanage_iface_set_ifcon(iface, con)
- if self.verbose: print "SEIface interface context set: ", con
-
- (status, con) = semanage.semanage_context_create(sh)
+ status = semanage.semanage_iface_set_ifcon(sh, iface, con)
if status < 0:
- raise Error("Could not create SEContext object")
- if self.verbose: print "SEContext object created (for network interface)"
-
- status = semanage.semanage_context_set_user(sh, con, "system_u")
- if status < 0:
- raise Error("Could not set message context user")
- if self.verbose: print "SEContext user: ", semanage.semanage_context_get_user(con)
-
- status = semanage.semanage_context_set_role(sh, con, "object_r")
- if status < 0:
- raise Error("Could not set message context role")
- if self.verbose: print "SEContext role: ", semanage.semanage_context_get_role(con)
-
- status = semanage.semanage_context_set_type(sh, con, "default_t")
- if status < 0:
- raise Error("Could not set message context type")
- if self.verbose: print "SEContext type: ", semanage.semanage_context_get_type(con)
+ raise Error("Could not set SEIface interface context")
+ if self.verbose: print "SEIface interface context set: ", con
- status = semanage.semanage_context_set_mls(sh, con, "s0:c0.c255")
+ status = semanage.semanage_iface_set_msgcon(sh, iface, con)
if status < 0:
- raise Error("Could not set message context MLS fields")
- if self.verbose: print "SEContext mls: ", semanage.semanage_context_get_mls(con)
-
- semanage.semanage_iface_set_msgcon(iface, con)
+ raise Error("Could not set SEIface message context")
if self.verbose: print "SEIface message context set: ", con
(status,key) = semanage.semanage_iface_key_extract(sh,iface)
@@ -809,6 +794,7 @@ class Tests:
raise Error("Could not commit reset transaction")
print "Commit status (transaction number): ", status
+ semanage.semanage_context_free(con)
semanage.semanage_iface_key_free(key)
semanage.semanage_iface_free(iface)
if exists: semanage.semanage_iface_free(old_iface)
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsepol/include/sepol/iface_record.h new/libsepol/include/sepol/iface_record.h
--- old/libsepol/include/sepol/iface_record.h 2006-01-06 09:36:28.000000000 -0500
+++ new/libsepol/include/sepol/iface_record.h 2006-02-02 06:12:00.000000000 -0500
@@ -48,14 +48,16 @@ extern int sepol_iface_set_name(
extern sepol_context_t* sepol_iface_get_ifcon(
const sepol_iface_t* iface);
-extern void sepol_iface_set_ifcon(
+extern int sepol_iface_set_ifcon(
+ sepol_handle_t* handle,
sepol_iface_t* iface,
sepol_context_t* con);
extern sepol_context_t* sepol_iface_get_msgcon(
const sepol_iface_t* iface);
-extern void sepol_iface_set_msgcon(
+extern int sepol_iface_set_msgcon(
+ sepol_handle_t* handle,
sepol_iface_t* iface,
sepol_context_t* con);
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsepol/include/sepol/port_record.h new/libsepol/include/sepol/port_record.h
--- old/libsepol/include/sepol/port_record.h 2006-01-30 15:05:10.000000000 -0500
+++ new/libsepol/include/sepol/port_record.h 2006-02-02 06:11:30.000000000 -0500
@@ -68,7 +68,8 @@ extern void sepol_port_set_range(
extern sepol_context_t* sepol_port_get_con(
const sepol_port_t* port);
-extern void sepol_port_set_con(
+extern int sepol_port_set_con(
+ sepol_handle_t* handle,
sepol_port_t* port,
sepol_context_t* con);
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsepol/src/iface_record.c new/libsepol/src/iface_record.c
--- old/libsepol/src/iface_record.c 2006-01-06 09:36:28.000000000 -0500
+++ new/libsepol/src/iface_record.c 2006-02-02 06:13:33.000000000 -0500
@@ -141,12 +141,21 @@ sepol_context_t* sepol_iface_get_ifcon(
}
hidden_def(sepol_iface_get_ifcon)
-void sepol_iface_set_ifcon(
- sepol_iface_t* iface,
+int sepol_iface_set_ifcon(
+ sepol_handle_t* handle,
+ sepol_iface_t* iface,
sepol_context_t* con) {
+ sepol_context_t* newcon;
+
+ if (sepol_context_clone(handle, con, &newcon) < 0) {
+ ERR(handle, "out of memory, could not set interface context");
+ return STATUS_ERR;
+ }
+
sepol_context_free(iface->netif_con);
- iface->netif_con = con;
+ iface->netif_con = newcon;
+ return STATUS_SUCCESS;
}
hidden_def(sepol_iface_set_ifcon)
@@ -158,12 +167,20 @@ sepol_context_t* sepol_iface_get_msgcon(
}
hidden_def(sepol_iface_get_msgcon)
-void sepol_iface_set_msgcon(
- sepol_iface_t* iface,
+int sepol_iface_set_msgcon(
+ sepol_handle_t* handle,
+ sepol_iface_t* iface,
sepol_context_t* con) {
+ sepol_context_t* newcon;
+ if (sepol_context_clone(handle, con, &newcon) < 0) {
+ ERR(handle, "out of memory, could not set message context");
+ return STATUS_ERR;
+ }
+
sepol_context_free(iface->netmsg_con);
- iface->netmsg_con = con;
+ iface->netmsg_con = newcon;
+ return STATUS_SUCCESS;
}
hidden_def(sepol_iface_set_msgcon)
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsepol/src/interfaces.c new/libsepol/src/interfaces.c
--- old/libsepol/src/interfaces.c 2006-01-06 09:36:28.000000000 -0500
+++ new/libsepol/src/interfaces.c 2006-02-02 06:11:02.000000000 -0500
@@ -85,12 +85,16 @@ static int iface_to_record (
if (context_to_record(handle, policydb, ifcon, &tmp_con) < 0)
goto err;
- sepol_iface_set_ifcon(tmp_record, tmp_con);
+ if (sepol_iface_set_ifcon(handle, tmp_record, tmp_con) < 0)
+ goto err;
+ sepol_context_free(tmp_con);
tmp_con = NULL;
-
+
if (context_to_record(handle, policydb, msgcon, &tmp_con) < 0)
goto err;
- sepol_iface_set_msgcon(tmp_record, tmp_con);
+ if (sepol_iface_set_msgcon(handle, tmp_record, tmp_con) < 0)
+ goto err;
+ sepol_context_free(tmp_con);
tmp_con = NULL;
*record = tmp_record;
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsepol/src/port_record.c new/libsepol/src/port_record.c
--- old/libsepol/src/port_record.c 2006-01-30 15:05:29.000000000 -0500
+++ new/libsepol/src/port_record.c 2006-02-02 06:12:57.000000000 -0500
@@ -270,11 +270,20 @@ sepol_context_t* sepol_port_get_con(
}
hidden_def(sepol_port_get_con)
-void sepol_port_set_con(
+int sepol_port_set_con(
+ sepol_handle_t* handle,
sepol_port_t* port,
sepol_context_t* con) {
+ sepol_context_t* newcon;
+
+ if (sepol_context_clone(handle, con, &newcon) < 0) {
+ ERR(handle, "out of memory, could not set port context");
+ return STATUS_ERR;
+ }
+
sepol_context_free(port->con);
- port->con = con;
+ port->con = newcon;
+ return STATUS_SUCCESS;
}
hidden_def(sepol_port_set_con)
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/libsepol/src/ports.c new/libsepol/src/ports.c
--- old/libsepol/src/ports.c 2006-01-30 15:05:29.000000000 -0500
+++ new/libsepol/src/ports.c 2006-02-02 06:08:08.000000000 -0500
@@ -125,9 +125,10 @@ static int port_to_record (
if (context_to_record(handle, policydb, con, &tmp_con) < 0)
goto err;
- sepol_port_set_con(tmp_record, tmp_con);
- tmp_con = NULL;
+ if (sepol_port_set_con(handle, tmp_record, tmp_con) < 0)
+ goto err;
+ sepol_context_free(tmp_con);
*record = tmp_record;
return STATUS_SUCCESS;
diff -Naurp --exclude semanageswig.i --exclude-from excludes old/policycoreutils/semanage/seobject.py new/policycoreutils/semanage/seobject.py
--- old/policycoreutils/semanage/seobject.py 2006-01-30 15:06:07.000000000 -0500
+++ new/policycoreutils/semanage/seobject.py 2006-02-02 09:55:44.000000000 -0500
@@ -549,7 +549,9 @@ class portRecords(semanageRecords):
if rc < 0:
raise ValueError("Could not set mls fields in port context for %s/%s" % (proto, port))
- semanage_port_set_con(p, con)
+ rc = semanage_port_set_con(self.sh, p, con)
+ if rc < 0:
+ raise ValueError("Could not set port context for %s/%s" % (proto, port))
rc = semanage_begin_transaction(self.sh)
if rc < 0:
@@ -563,6 +565,7 @@ class portRecords(semanageRecords):
if rc < 0:
raise ValueError("Could not add port %s/%s" % (proto, port))
+ semanage_context_free(con)
semanage_port_key_free(k)
semanage_port_free(p)
@@ -737,12 +740,13 @@ class interfaceRecords(semanageRecords):
if rc < 0:
raise ValueError("Could not set mls fields in interface context for %s" % interface)
- (rc, con2) = semanage_context_clone(self.sh, con)
+ rc = semanage_iface_set_ifcon(self.sh, iface, con)
if rc < 0:
- raise ValueError("Could not clone interface context for %s" % interface)
+ raise ValueError("Could not set interface context for %s" % interface)
- semanage_iface_set_ifcon(iface, con)
- semanage_iface_set_msgcon(iface, con2)
+ rc = semanage_iface_set_msgcon(self.sh, iface, con)
+ if rc < 0:
+ raise ValueError("Could not set message context for %s" % interface)
rc = semanage_begin_transaction(self.sh)
if rc < 0:
@@ -756,6 +760,7 @@ class interfaceRecords(semanageRecords):
if rc < 0:
raise ValueError("Could not add interface %s" % interface)
+ semanage_context_free(con)
semanage_iface_key_free(k)
semanage_iface_free(iface)
@@ -921,7 +926,10 @@ class fcontextRecords(semanageRecords):
raise ValueError("Could not set mls fields in file context for %s" % target)
semanage_fcontext_set_type(fcontext, self.file_types[ftype])
- semanage_fcontext_set_con(fcontext, con)
+
+ rc = semanage_fcontext_set_con(self.sh, fcontext, con)
+ if rc < 0:
+ raise ValueError("Could not set file context for %s" % target)
rc = semanage_begin_transaction(self.sh)
if rc < 0:
@@ -935,6 +943,7 @@ class fcontextRecords(semanageRecords):
if rc < 0:
raise ValueError("Could not add file context for %s" % target)
+ semanage_context_free(con)
semanage_fcontext_key_free(k)
semanage_fcontext_free(fcontext)
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [SEMANAGE][SEPOL][UTILS] Clone record on set_con
2006-02-02 15:07 [SEMANAGE][SEPOL][UTILS] Clone record on set_con Ivan Gyurdiev
@ 2006-02-02 16:26 ` Stephen Smalley
0 siblings, 0 replies; 2+ messages in thread
From: Stephen Smalley @ 2006-02-02 16:26 UTC (permalink / raw)
To: Ivan Gyurdiev; +Cc: SELinux List, Daniel J Walsh
On Thu, 2006-02-02 at 10:07 -0500, Ivan Gyurdiev wrote:
> Hi, this patch clones the context record passed to:
>
> semanage_fcontext_set_con
> [sepol/semanage]_iface_set_msgcon
> [sepol/semanage]_iface_set_ifcon
> [sepol/semanage]_port_set_con
>
> This matches the behavior of the modify() function - no taking over the
> caller's objects. Less likely to run into an error this way, and it
> improves consistency. Unfortunately it also means set_con can fail, the
> failure has to be handled, and the context freed by the caller... but I
> think this is a more flexible interface (caller can reuse object if
> necessary).
>
> This is an API change, dependency is seobject.py, fixed in this patch.
>
> ===
> Patch also fixes 3 bugs in the pywrap-test, which is rather surprising -
> I do run those tests, not sure how they sneaked in.
Thanks, merged as of libsepol 1.11.12, libsemanage 1.5.20, and
policycoreutils 1.29.18.
--
Stephen Smalley
National Security Agency
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-02-02 16:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-02 15:07 [SEMANAGE][SEPOL][UTILS] Clone record on set_con Ivan Gyurdiev
2006-02-02 16:26 ` Stephen Smalley
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.