Update to latest patches from eparis/Upstream
This commit is contained in:
parent
976da17c28
commit
01e3787363
@ -6205,20 +6205,71 @@ index 825f295..d11c8dc 100644
|
|||||||
- S_(BOOLEAN_SUBS, "/booleans.subs")
|
- S_(BOOLEAN_SUBS, "/booleans.subs")
|
||||||
+ S_(BOOLEAN_SUBS, "/booleans.subs_dist")
|
+ S_(BOOLEAN_SUBS, "/booleans.subs_dist")
|
||||||
diff --git a/libselinux/src/get_context_list.c b/libselinux/src/get_context_list.c
|
diff --git a/libselinux/src/get_context_list.c b/libselinux/src/get_context_list.c
|
||||||
index e02157c..eb72593 100644
|
index e02157c..355730a 100644
|
||||||
--- a/libselinux/src/get_context_list.c
|
--- a/libselinux/src/get_context_list.c
|
||||||
+++ b/libselinux/src/get_context_list.c
|
+++ b/libselinux/src/get_context_list.c
|
||||||
@@ -489,11 +489,19 @@ int get_ordered_context_list(const char *user,
|
@@ -426,7 +426,7 @@ int get_ordered_context_list(const char *user,
|
||||||
|
/* Initialize ordering array. */
|
||||||
|
ordering = malloc(nreach * sizeof(unsigned int));
|
||||||
|
if (!ordering)
|
||||||
|
- goto oom_order;
|
||||||
|
+ goto failsafe;
|
||||||
|
for (i = 0; i < nreach; i++)
|
||||||
|
ordering[i] = nreach;
|
||||||
|
|
||||||
|
@@ -435,7 +435,7 @@ int get_ordered_context_list(const char *user,
|
||||||
|
fname_len = strlen(user_contexts_path) + strlen(user) + 2;
|
||||||
|
fname = malloc(fname_len);
|
||||||
|
if (!fname)
|
||||||
|
- goto oom_order;
|
||||||
|
+ goto failsafe;
|
||||||
|
snprintf(fname, fname_len, "%s%s", user_contexts_path, user);
|
||||||
|
fp = fopen(fname, "r");
|
||||||
|
if (fp) {
|
||||||
|
@@ -465,35 +465,35 @@ int get_ordered_context_list(const char *user,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (!nordered)
|
||||||
|
+ goto failsafe;
|
||||||
|
+
|
||||||
|
/* Apply the ordering. */
|
||||||
|
- if (nordered) {
|
||||||
|
- co = malloc(nreach * sizeof(struct context_order));
|
||||||
|
- if (!co)
|
||||||
|
- goto oom_order;
|
||||||
|
- for (i = 0; i < nreach; i++) {
|
||||||
|
- co[i].con = reachable[i];
|
||||||
|
- co[i].order = ordering[i];
|
||||||
|
- }
|
||||||
|
- qsort(co, nreach, sizeof(struct context_order), order_compare);
|
||||||
|
- for (i = 0; i < nreach; i++)
|
||||||
|
- reachable[i] = co[i].con;
|
||||||
|
- free(co);
|
||||||
|
+ co = malloc(nreach * sizeof(struct context_order));
|
||||||
|
+ if (!co)
|
||||||
|
+ goto failsafe;
|
||||||
|
+ for (i = 0; i < nreach; i++) {
|
||||||
|
+ co[i].con = reachable[i];
|
||||||
|
+ co[i].order = ordering[i];
|
||||||
|
}
|
||||||
|
+ qsort(co, nreach, sizeof(struct context_order), order_compare);
|
||||||
|
+ for (i = 0; i < nreach; i++)
|
||||||
|
+ reachable[i] = co[i].con;
|
||||||
|
+ free(co);
|
||||||
|
|
||||||
|
- /* Return the ordered list.
|
||||||
|
- If we successfully ordered it, then only report the ordered entries
|
||||||
|
- to the caller. Otherwise, fall back to the entire reachable list. */
|
||||||
|
- if (nordered && nordered < nreach) {
|
||||||
|
+ /* Only report the ordered entries to the caller. */
|
||||||
|
+ if (nordered < nreach) {
|
||||||
|
for (i = nordered; i < nreach; i++)
|
||||||
|
free(reachable[i]);
|
||||||
reachable[nordered] = NULL;
|
reachable[nordered] = NULL;
|
||||||
rc = nordered;
|
rc = nordered;
|
||||||
} else {
|
- } else {
|
||||||
- rc = nreach;
|
- rc = nreach;
|
||||||
+ if (security_getenforce()) {
|
|
||||||
+ errno = EPERM;
|
|
||||||
+ rc = -1;
|
|
||||||
+ } else {
|
|
||||||
+ rc = nreach;
|
|
||||||
+ }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
@ -6230,6 +6281,21 @@ index e02157c..eb72593 100644
|
|||||||
|
|
||||||
free(ordering);
|
free(ordering);
|
||||||
if (freefrom)
|
if (freefrom)
|
||||||
|
@@ -520,14 +520,6 @@ int get_ordered_context_list(const char *user,
|
||||||
|
}
|
||||||
|
rc = 1; /* one context in the list */
|
||||||
|
goto out;
|
||||||
|
-
|
||||||
|
- oom_order:
|
||||||
|
- /* Unable to order context list due to OOM condition.
|
||||||
|
- Fall back to unordered reachable context list. */
|
||||||
|
- fprintf(stderr, "%s: out of memory, unable to order list\n",
|
||||||
|
- __FUNCTION__);
|
||||||
|
- rc = nreach;
|
||||||
|
- goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
hidden_def(get_ordered_context_list)
|
||||||
diff --git a/libselinux/src/getfilecon.c b/libselinux/src/getfilecon.c
|
diff --git a/libselinux/src/getfilecon.c b/libselinux/src/getfilecon.c
|
||||||
index 67e4463..eb2ce8a 100644
|
index 67e4463..eb2ce8a 100644
|
||||||
--- a/libselinux/src/getfilecon.c
|
--- a/libselinux/src/getfilecon.c
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
Summary: SELinux library and simple utilities
|
Summary: SELinux library and simple utilities
|
||||||
Name: libselinux
|
Name: libselinux
|
||||||
Version: 2.1.12
|
Version: 2.1.12
|
||||||
Release: 19%{?dist}
|
Release: 20%{?dist}
|
||||||
License: Public Domain
|
License: Public Domain
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
Source: %{name}-%{version}.tgz
|
Source: %{name}-%{version}.tgz
|
||||||
@ -241,7 +241,10 @@ rm -rf %{buildroot}
|
|||||||
%{ruby_sitearch}/selinux.so
|
%{ruby_sitearch}/selinux.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Jan 25 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.12-18
|
* Sun Jan 27 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.12-20
|
||||||
|
- Update to latest patches from eparis/Upstream
|
||||||
|
|
||||||
|
* Fri Jan 25 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.12-19
|
||||||
- Update to latest patches from eparis/Upstream
|
- Update to latest patches from eparis/Upstream
|
||||||
|
|
||||||
* Wed Jan 23 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.12-18
|
* Wed Jan 23 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.12-18
|
||||||
|
Loading…
Reference in New Issue
Block a user