Ping?
On Fri, Dec 12, 2014 at 10:47 AM, Filipe Brandenburger <[email protected]> wrote: > The new test-cap-list introduced in commit 2822da4fb7f891 uses the included > table of capabilities. However, it uses cap_last_cap() which probes the kernel > for the last available capability. On an older kernel (e.g. 3.10 from RHEL 7) > that causes the test to fail with the following message: > > Assertion '!capability_to_name(cap_last_cap()+1)' failed at > src/test/test-cap-list.c:30, function main(). Aborting. > > Fix it by exporting the size of the static table and using it in the test > instead of the dynamic one from the current kernel. > > Tested by successfully running ./test-cap-list and the whole `make check` test > suite with this patch on a RHEL 7 host. > > v2: Updated the patch to also consider the changes introduced in commit > 4b7c1d5d6a0060 ("test-cap-list: always check libcap comes to the same > names...") > --- > src/shared/cap-list.c | 4 ++++ > src/shared/cap-list.h | 1 + > src/test/test-cap-list.c | 7 ++++--- > 3 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/src/shared/cap-list.c b/src/shared/cap-list.c > index 56d1488..8033e8c 100644 > --- a/src/shared/cap-list.c > +++ b/src/shared/cap-list.c > @@ -60,3 +60,7 @@ int capability_from_name(const char *name) { > > return sc->id; > } > + > +int capability_list_length(void) { > + return (int) ELEMENTSOF(capability_names); > +} > diff --git a/src/shared/cap-list.h b/src/shared/cap-list.h > index c699e46..9824fad 100644 > --- a/src/shared/cap-list.h > +++ b/src/shared/cap-list.h > @@ -23,3 +23,4 @@ > > const char *capability_to_name(int id); > int capability_from_name(const char *name); > +int capability_list_length(void); > diff --git a/src/test/test-cap-list.c b/src/test/test-cap-list.c > index 238f876..831cdf5 100644 > --- a/src/test/test-cap-list.c > +++ b/src/test/test-cap-list.c > @@ -19,6 +19,7 @@ > along with systemd; If not, see <http://www.gnu.org/licenses/>. > ***/ > > +#include "util.h" > #include "log.h" > #include "cap-list.h" > #include "capability.h" > @@ -27,9 +28,9 @@ int main(int argc, char *argv[]) { > int i; > > assert_se(!capability_to_name(-1)); > - assert_se(!capability_to_name(cap_last_cap()+1)); > + assert_se(!capability_to_name(capability_list_length())); > > - for (i = 0; i <= (int) cap_last_cap(); i++) { > + for (i = 0; i < capability_list_length(); i++) { > const char *n; > > assert_se(n = capability_to_name(i)); > @@ -45,7 +46,7 @@ int main(int argc, char *argv[]) { > assert_se(capability_from_name("15") == 15); > assert_se(capability_from_name("-1") == -EINVAL); > > - for (i = 0; i <= (int) cap_last_cap(); i++) { > + for (i = 0; i < capability_list_length(); i++) { > _cleanup_cap_free_charp_ char *a = NULL; > const char *b; > unsigned u; > -- > 1.8.3.1 > _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
