| 310 | } |
| 311 | |
| 312 | bool |
| 313 | cap_rights_is_valid(const cap_rights_t *rights) |
| 314 | { |
| 315 | cap_rights_t allrights; |
| 316 | int i, j; |
| 317 | |
| 318 | if (CAPVER(rights) != CAP_RIGHTS_VERSION_00) |
| 319 | return (false); |
| 320 | if (CAPARSIZE(rights) < CAPARSIZE_MIN || |
| 321 | CAPARSIZE(rights) > CAPARSIZE_MAX) { |
| 322 | return (false); |
| 323 | } |
| 324 | CAP_ALL(&allrights); |
| 325 | if (!cap_rights_contains(&allrights, rights)) |
| 326 | return (false); |
| 327 | for (i = 0; i < CAPARSIZE(rights); i++) { |
| 328 | j = right_to_index(rights->cr_rights[i]); |
| 329 | if (i != j) |
| 330 | return (false); |
| 331 | if (i > 0) { |
| 332 | if (CAPRVER(rights->cr_rights[i]) != 0) |
| 333 | return (false); |
| 334 | } |
| 335 | } |
| 336 | |
| 337 | return (true); |
| 338 | } |
| 339 | |
| 340 | cap_rights_t * |
| 341 | cap_rights_merge(cap_rights_t *dst, const cap_rights_t *src) |
no test coverage detected