Commit 8a1bd5c
committed
Fix following symlinks when processing the fixup list
The previous fix in b41daec was incomplete. Fixup entries are
given the original path without calling cleanup_pathname().
To make sure we don't follow a symlink, we must strip trailing
slashes from the path.
The fixup entries are always directories. Make sure we try to modify
only directories by providing O_DIRECTORY to open() (if supported)
and if it fails to check directory via lstat().
Fixes libarchive#15661 parent b9f4955 commit 8a1bd5c
2 files changed
Lines changed: 78 additions & 28 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2462 | 2462 | | |
2463 | 2463 | | |
2464 | 2464 | | |
| 2465 | + | |
2465 | 2466 | | |
2466 | 2467 | | |
2467 | 2468 | | |
| |||
2475 | 2476 | | |
2476 | 2477 | | |
2477 | 2478 | | |
2478 | | - | |
2479 | | - | |
2480 | | - | |
2481 | | - | |
| 2479 | + | |
| 2480 | + | |
| 2481 | + | |
| 2482 | + | |
| 2483 | + | |
| 2484 | + | |
| 2485 | + | |
| 2486 | + | |
| 2487 | + | |
| 2488 | + | |
| 2489 | + | |
| 2490 | + | |
| 2491 | + | |
| 2492 | + | |
| 2493 | + | |
| 2494 | + | |
| 2495 | + | |
| 2496 | + | |
| 2497 | + | |
| 2498 | + | |
| 2499 | + | |
| 2500 | + | |
| 2501 | + | |
| 2502 | + | |
| 2503 | + | |
2482 | 2504 | | |
2483 | | - | |
2484 | | - | |
| 2505 | + | |
| 2506 | + | |
2485 | 2507 | | |
2486 | | - | |
2487 | | - | |
2488 | | - | |
2489 | | - | |
2490 | | - | |
2491 | | - | |
2492 | | - | |
2493 | | - | |
2494 | 2508 | | |
2495 | 2509 | | |
| 2510 | + | |
| 2511 | + | |
| 2512 | + | |
| 2513 | + | |
| 2514 | + | |
| 2515 | + | |
| 2516 | + | |
| 2517 | + | |
| 2518 | + | |
| 2519 | + | |
| 2520 | + | |
| 2521 | + | |
2496 | 2522 | | |
2497 | 2523 | | |
2498 | 2524 | | |
| |||
2504 | 2530 | | |
2505 | 2531 | | |
2506 | 2532 | | |
2507 | | - | |
| 2533 | + | |
2508 | 2534 | | |
2509 | 2535 | | |
2510 | 2536 | | |
2511 | | - | |
| 2537 | + | |
2512 | 2538 | | |
2513 | | - | |
2514 | | - | |
| 2539 | + | |
2515 | 2540 | | |
2516 | 2541 | | |
2517 | 2542 | | |
| |||
2664 | 2689 | | |
2665 | 2690 | | |
2666 | 2691 | | |
2667 | | - | |
2668 | 2692 | | |
2669 | 2693 | | |
2670 | 2694 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
51 | 56 | | |
52 | 57 | | |
53 | 58 | | |
54 | 59 | | |
55 | 60 | | |
56 | | - | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
57 | 70 | | |
58 | | - | |
59 | | - | |
| 71 | + | |
| 72 | + | |
60 | 73 | | |
61 | 74 | | |
62 | 75 | | |
63 | 76 | | |
64 | | - | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
65 | 89 | | |
66 | | - | |
| 90 | + | |
67 | 91 | | |
68 | 92 | | |
69 | | - | |
| 93 | + | |
70 | 94 | | |
71 | 95 | | |
72 | 96 | | |
| |||
75 | 99 | | |
76 | 100 | | |
77 | 101 | | |
78 | | - | |
79 | | - | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
80 | 106 | | |
81 | 107 | | |
0 commit comments