[roll] Roll fuchsia [sestarnix] Parse roles in new policy parser and improve validation

Integrate parsing of the Roles symbol table into the new policy parser
struct NewPolicy.

This moves the Role struct definition to new_policy/roles.rs,
using the derived Parse, Serialize, and Validate macros. The
ParsedPolicy roles lookup is updated to use the O(1) index on
NewPolicy instead of the old O(N) linear search.

Unused old Role structures in policy/symbols.rs are removed.

Additionally, this:
- Implements specialized `Validate` for `RoleId`, `ClassId`, and
  `CommonSymbolId` to verify they exist in the policy's tables.
- Updates `IdSet` validation to validate every ID in the set, ensuring
  that sets like `RoleSet` (used in `Role::dominates`) only contain
  defined IDs.
- Adds a unit test for `Role` parsing and serialization to `roles.rs`.

Test: fx test selinux_tests

TAG: agy
CONV: a4f3c876-713c-4cce-b711-d02b2a6c035f
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1689674
Original-Original-Revision: fcfe38dc4274c76a7aecd04ff2614e949013c372
GitOrigin-RevId: d075dc659e83b2106f3c5f3bd0b9c346965bf919
Change-Id: I29b94402200f90371adb12658ca4c937d6ce0eac
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1697396
Cr-Commit-Position: refs/heads/main@{#196374}
1 file changed
tree: 6a17cdd45b63a03625f607c5d8295465272b6301
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.