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
Reviewed by:	cem
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D12391
This commit is contained in:
Ed Maste 2017-09-17 14:03:54 +00:00
parent d1797f7bfc
commit c9c69ebad7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=323675

View File

@ -1028,8 +1028,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)) {