summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2017-10-07 20:20:01 +0000
committeremaste <emaste@FreeBSD.org>2017-10-07 20:20:01 +0000
commit989ef186383142f1fb1090bd171a86ba3c64d8ad (patch)
tree2b14a0150a17e603b5ee8c365d5bd328169eccb6 /lib
parent69177ab7d2a8bcddf297fc36372d151102f66af2 (diff)
downloadFreeBSD-src-989ef186383142f1fb1090bd171a86ba3c64d8ad.zip
FreeBSD-src-989ef186383142f1fb1090bd171a86ba3c64d8ad.tar.gz
MFC r323675: libsysdecode: report invalid cap_rights_t
Previously we'd have an assertion failure in cap_rights_is_set if sysdecode_cap_rights is called with an invalid cap_rights_t, so test for validity first. PR: 222258 Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'lib')
-rw-r--r--lib/libsysdecode/flags.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/libsysdecode/flags.c b/lib/libsysdecode/flags.c
index ea477b0..6616960 100644
--- a/lib/libsysdecode/flags.c
+++ b/lib/libsysdecode/flags.c
@@ -988,8 +988,15 @@ void
sysdecode_cap_rights(FILE *fp, cap_rights_t *rightsp)
{
struct name_table *t;
+ int i;
bool comma;
+ for (i = 0; i < CAPARSIZE(rightsp); i++) {
+ if (CAPIDXBIT(rightsp->cr_rights[i]) != 1 << i) {
+ fprintf(fp, "invalid cap_rights_t");
+ return;
+ }
+ }
comma = false;
for (t = caprights; t->str != NULL; t++) {
if (cap_rights_is_set(rightsp, t->val)) {
OpenPOWER on IntegriCloud