Author: emaste
Date: Sun Sep 17 14:03:54 2017
New Revision: 323675
URL: https://svnweb.freebsd.org/changeset/base/323675

Log:
  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

Modified:
  head/lib/libsysdecode/flags.c

Modified: head/lib/libsysdecode/flags.c
==============================================================================
--- head/lib/libsysdecode/flags.c       Sun Sep 17 10:47:21 2017        
(r323674)
+++ head/lib/libsysdecode/flags.c       Sun Sep 17 14:03:54 2017        
(r323675)
@@ -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)) {
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to