Commit 1aeb8fb
authored
Rust guard: remove
This tightens two remaining weak spots in `response_paths.rs`:
`list_commits` still deep-cloned secrecy labels on every call, and the
`list_project_items` / `projects_list` path-labeling branch lacked
direct regression coverage for its security-relevant edge cases.
- **`list_commits`: eliminate the last `Vec<String>` deep clone**
- Convert repo secrecy to `SharedLabels` immediately.
- Reuse it via cheap `Arc` clones for per-item labels.
- Move the same shared value into `default_labels` on its final use.
```rust
let default_secrecy: crate::SharedLabels =
repo_visibility_secrecy(&arg_owner, &arg_repo, &default_repo,
ctx).into();
// per-item
secrecy: default_secrecy.clone(),
// default labels
secrecy: default_secrecy,
```
- **Project-item response-path regressions**
- Add coverage for the fail-secure branch when an `ISSUE` item has no
repo context.
- Assert `DRAFT_ISSUE` stays owner-writer integrity with empty secrecy.
- Assert `projects_list` remains behaviorally identical to
`list_project_items`.
- **`items_path` contract**
- Add an explicit assertion that `{ "items": [...] }` responses
propagate `items_path == Some("/items")` and produce `/items/{n}` entry
paths.
These changes keep the response-labeling behavior unchanged where
already correct, while removing unnecessary allocation/copying in commit
labeling and documenting the intended contract around heterogeneous
project items.list_commits secrecy clone and add project-item path labeling regressions (#6941)1 file changed
Lines changed: 98 additions & 6 deletions
Lines changed: 98 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
338 | 338 | | |
339 | 339 | | |
340 | 340 | | |
341 | | - | |
342 | | - | |
| 341 | + | |
| 342 | + | |
343 | 343 | | |
344 | 344 | | |
345 | 345 | | |
| |||
351 | 351 | | |
352 | 352 | | |
353 | 353 | | |
354 | | - | |
355 | | - | |
356 | 354 | | |
357 | 355 | | |
358 | 356 | | |
| |||
380 | 378 | | |
381 | 379 | | |
382 | 380 | | |
383 | | - | |
| 381 | + | |
384 | 382 | | |
385 | 383 | | |
386 | 384 | | |
| |||
390 | 388 | | |
391 | 389 | | |
392 | 390 | | |
393 | | - | |
| 391 | + | |
394 | 392 | | |
395 | 393 | | |
396 | 394 | | |
| |||
905 | 903 | | |
906 | 904 | | |
907 | 905 | | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
908 | 1000 | | |
0 commit comments