aboutsummaryrefslogtreecommitdiff
path: root/archival (follow)
Commit message (Collapse)AuthorAgeFilesLines
* rpm: respect BB_SYSTEMROOTHEADmasterRon Yorston2026-07-022-3/+4
| | | | | | | | | | | | | | Update the 'rpm' applet so it also respects the BB_SYSTEMROOT environment variable. Replace chdir_system_drive() with xchdir_system_drive(), which exits on failure to change directory. Saves 32-36 bytes. (GitHub PR #603) Signed-off-by: Ron Yorston <rmy@pobox.com>
* dpkg: update prefix (#603)mbartlett212026-07-021-20/+53
| | | | | | | | | | | | | | | | | | | | | * dpkg: update prefix The prefix now works properly with BB_SYSTEMROOT as it no longer writes everything with a prefixed / For example, with BB_SYSTEMROOT=C:/somepath, the /var/lib/dpkg directory is now underneath that, rather than the root of that drive. Also added handling so that the extracted files are also there. * dpkg: prefix updates For clarity, the .list files now always include leading slashes, matching what happens in upstream. There is then special handling under remove_file_array to turn them back into relative paths. The handling assumes that files can be both, since it does get called with some relative paths. Adds 14-54 bytes.
* Merge branch 'busybox' into mergeRon Yorston2026-03-111-1/+1
|\
| * tar: only strip unsafe components from hardlinks, not symlinksRadoslav Kolev2026-02-281-1/+1
| | | | | | | | | | | | | | | | | | commit 3fb6b31c7 introduced a check for unsafe components in tar archive hardlinks, but it was being applied to symlinks too which broke "Symlinks and hardlinks coexist" tar test. Signed-off-by: Radoslav Kolev <radoslav.kolev@suse.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2026-02-123-4/+1
|\|
| * *: whitespace cleanupDenys Vlasenko2026-02-082-3/+0
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * *: use xasprintf_inplace() and concat_path_file() where appropriateDenys Vlasenko2026-02-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta acpid_main 1059 1063 +4 resume_main 561 560 -1 unpack_package 642 640 -2 adduser_main 861 859 -2 getty_main 1517 1512 -5 ftpd_main 2149 2142 -7 .rodata 107018 107010 -8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/6 up/down: 4/-25) Total: -21 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2026-02-106-13/+40
|\|
| * tar: strip unsafe hardlink components - GNU tar does the sameDenys Vlasenko2026-01-296-13/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Defends against files like these (python reproducer): import tarfile ti = tarfile.TarInfo("leak_hosts") ti.type = tarfile.LNKTYPE ti.linkname = "/etc/hosts" # or "../etc/hosts" or ".." ti.size = 0 with tarfile.open("/tmp/hardlink.tar", "w") as t: t.addfile(ti) function old new delta skip_unsafe_prefix - 127 +127 get_header_tar 1752 1754 +2 .rodata 106861 106856 -5 unzip_main 2715 2706 -9 strip_unsafe_prefix 102 18 -84 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/3 up/down: 129/-98) Total: 31 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2026-02-021-0/+3
|\|
| * awk: use more understandable form of "split-globals" trickDenys Vlasenko2026-01-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta parse_expr 986 998 +12 chain_group 633 640 +7 next_token 930 934 +4 getvar_s 102 101 -1 awk_main 891 888 -3 evaluate 3379 3355 -24 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/3 up/down: 23/-28) Total: -5 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2025-10-062-3/+3
|\|
| * archival/libarchive: sanitize filenames on output (prevent control sequence ↵Denys Vlasenko2025-09-242-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | attacks This fixes CVE-2025-46394 (terminal escape sequence injection) Original credit: Ian.Norton at entrust.com function old new delta header_list 9 15 +6 header_verbose_list 239 244 +5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 11/0) Total: 11 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2025-08-101-0/+1
|\|
| * cpio: map -F to --file long optionSertonix2025-07-021-0/+1
| | | | | | | | | | | | | | | | | | function old new delta .rodata 100437 100444 +7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 7/0) Total: 7 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2025-05-198-19/+55
|\|
| * cpio: error out if the file to be achived is >=4GBDenys Vlasenko2025-04-211-0/+6
| | | | | | | | | | | | | | | | | | | | function old new delta .rodata 105715 105751 +36 cpio_o 1145 1167 +22 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 58/0) Total: 58 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * rpm2cpio: extract cpio even if compression is not knownDenys Vlasenko2025-04-201-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | This is more useful than failing outright. function old new delta rpm2cpio_main 110 144 +34 .rodata 105681 105715 +34 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 68/0) Total: 68 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb/archival: make setup_unzip_on_fd() return bytes read if not compressedDenys Vlasenko2025-04-204-18/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | setup_unzip_on_fd() does not return the transformer structure, so the user does not know how much to seek back (or alternatively what the signature was) when compressor signature is not detected. Currently not needed (the only user is tar which dies anyway). However, rpm2cpio may need this if we extend it to extract the internal .cpio even if cpio's compressions algo is not known. function old new delta setup_unzip_on_fd 53 59 +6 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * archival: disallow path traversals (CVE-2023-39810)Denys Vlasenko2025-04-163-1/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create new configure option for archival/libarchive based extractions to disallow path traversals. As this is a paranoid option and might introduce backward incompatibility, default it to no. Fixes: CVE-2023-39810 Based on the patch by Peter Kaestle <peter.kaestle@nokia.com> function old new delta data_extract_all 921 945 +24 strip_unsafe_prefix 101 102 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 25/0) Total: 25 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | tar: try harder to detect old tar filesRon Yorston2024-11-081-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code to autodetect compressed tar files failed to detect a bunzip2-compressed archive. When tar was invoked with the 'j' option it worked fine. The autodetection code looks for the magic string 'ustar' or a series of five NULs to determine that an archive is uncompressed. The failing archives had more than five NULs in the header and were taken to be uncompressed. Look for a longer run of NULs: 16 is certainly sufficient for the archives in question. Adds 8-16 bytes. (GitHub issue #475)
* | libarchive: pdpmake requires some ar functionsRon Yorston2024-11-061-0/+1
| | | | | | | | | | | | | | pdpmake, like make, requires get_header_ar.o and unpack_ar_archive.o from libarchive. This dependency wasn't made explicit in Kbuild.src so building pdpmake failed unless other applets requiring those files were enabled (ar, dpkg, dpkg-deb or make).
* | build system: avoid full rebuild when EXTRAVERSION changesRon Yorston2024-02-161-0/+3
| | | | | | | | | | | | | | | | | | | | The last two commits allow EXTRAVERSION to track the current state of a git repository. The build system was unable to determine which files were affected by changes to EXTRAVERSION and caused a full rebuild when it changed. Alter how the version information is passed to the code so only a handful of files need to be rebuilt when it changes.
* | Merge branch 'busybox' into mergeRon Yorston2023-07-134-7/+7
|\|
| * Update applet size estimatesDenys Vlasenko2023-07-103-6/+6
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * libbb: code shrink: introduce and use [_]exit_FAILURE()Denys Vlasenko2023-06-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta exit_FAILURE - 7 +7 _exit_FAILURE - 7 +7 run 198 199 +1 restore_state_and_exit 114 115 +1 xbsd_write_bootstrap 399 397 -2 vfork_compressor 209 207 -2 sig_handler 12 10 -2 serial_ctl 154 152 -2 parse_args 1169 1167 -2 onintr 21 19 -2 make_new_session 493 491 -2 login_main 988 986 -2 gotsig 35 33 -2 do_iplink 1315 1313 -2 addgroup_main 397 395 -2 inetd_main 1911 1908 -3 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 2/12 up/down: 16/-25) Total: -9 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2023-05-231-1/+1
|\|
| * cpio: tweak --helpDenys Vlasenko2023-05-091-1/+1
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2023-04-092-4/+19
|\|
| * libbb: consolidate NOMMU fix of restoring high bit in argv[0][0]Denys Vlasenko2023-04-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | function old new delta fork_or_rexec 46 56 +10 bootchartd_main 1087 1079 -8 cpio_main 674 661 -13 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 10/-21) Total: -11 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * unzip: document some options we might supportDenys Vlasenko2023-02-231-0/+7
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * unzip: clear SUID/GID bits, implement -K to not clear themDenys Vlasenko2023-02-221-3/+12
| | | | | | | | | | | | | | | | | | | | | | function old new delta unzip_main 2656 2715 +59 packed_usage 34517 34552 +35 .rodata 105250 105251 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 95/0) Total: 95 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2023-01-051-0/+2
|\|
| * unzip -l: add missed big-endian conversions date and timePeter Kaestle2022-11-291-0/+2
| | | | | | | | | | | | | | | | When calling unzip -l the date and time output was missing big-endian conversions. Signed-off-by: Peter Kaestle <peter.kaestle@nokia.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | make: pdpmake needs long filename support in ar tooRon Yorston2022-11-131-1/+1
| | | | | | | | | | | | Commit f261d2d27 (make: make + sh configuration) added a 'pdpmake' alias for 'make'. It omitted to reference PDPMAKE as a dependency for FEATURE_AR_LONG_FILENAMES.
* | Merge branch 'busybox' into mergeRon Yorston2022-10-121-1/+1
|\|
| * *: style fixDenys Vlasenko2022-08-301-1/+1
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | libarchive: alter handling of failure to create symlinksRon Yorston2022-09-271-19/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unlike GNU tar upstream BusyBox tar treats all errors as fatal. Failure to create a symlink on Windows is very likely due to a lack of the required privilege. busybox-w32 therefore treats this case as a non-fatal error and, as far as possible, continues extracting files. However: - The inconsistency of this behaviour caused some confusion. - busybox-w32 tar didn't return an error status when a non-fatal error was encountered, unlike GNU tar. Change the implementation so extraction continues when symlink creation fails but the error report is deferred until all of the archive has been processed. Only one error is reported and it's treated as fatal. Saves 48-64 bytes. (GitHub issue #265)
* | make: new appletRon Yorston2022-08-013-4/+9
| | | | | | | | | | | | | | | | | | This is an experimental implementation of make for busybox-w32, based on my public domain POSIX make: https://frippery.org/make/ (GitHub issue #44)
* | Fix POSIX buildFRP-4621-gf3c5e8bc3Ron Yorston2022-02-271-2/+2
| | | | | | | | | | Commit e6238530e (cpio: code shrink with !FEATURE_EXTRA_FILE_DATA) broke the POSIX build by incorrectly excluding chunks of code.
* | cpio: code shrink with !FEATURE_EXTRA_FILE_DATARon Yorston2022-02-101-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The new --renumber-inodes option won't work if FEATURE_EXTRA_FILE_DATA is disabled. Don't allow it to be selected in that case. In fact, if FEATURE_EXTRA_FILE_DATA is disabled all the code to handle hardlinks can be #ifdef'ed out. The new --ignore-devno option need do nothing if FEATURE_EXTRA_FILE_DATA is disabled, as in that case the device ids will already be zero. It can still be selected, cpio will just always behave as though the option was provided on the command line. This doesn't affect the size of the default build.
* | Merge busybox into mergeRon Yorston2022-02-092-1/+3
|\| | | | | | | | | | | | | | | Fix conflicts in reset and ash. Redefine the new safe_read_key() as a reference to read_key(). Disable SHA256_HWACCEL.
| * libbb: shrink lineedit_read_key()Denys Vlasenko2022-01-181-1/+1
| | | | | | | | | | | | | | function old new delta lineedit_read_key 237 231 -6 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * fix "defined but not used" warningsDenys Vlasenko2022-01-171-0/+2
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge busybox into mergeRon Yorston2021-12-272-1/+57
|\| | | | | | | Fix merge conflict in coreutils/timeout.c.
| * libarchive/get_header_ar.c: fix extraction of archives from binutils in ↵Peter Korsgaard2021-12-121-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | deterministic mode GNU binutils in deterministic mode (ar rD or built with --enable-deterministic-archives) hard codes file mode to 0644 (NOT 0100644) since https://github.com/bminor/binutils-gdb/commit/36e4dce69dd2 This confuses busybox ar x (data_extract_all): touch a; ar rD a.ar a ar: creating a.ar busybox ar x a.ar ar: unrecognized file type hexdump -C a.ar 00000000 21 3c 61 72 63 68 3e 0a 61 2f 20 20 20 20 20 20 |!<arch>.a/ | 00000010 20 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20 | 0 | 00000020 20 20 20 20 30 20 20 20 20 20 30 20 20 20 20 20 | 0 0 | 00000030 36 34 34 20 20 20 20 20 30 20 20 20 20 20 20 20 |644 0 | 00000040 20 20 60 0a | `.| As a workaround, force the mode bits to S_IFREG, as nothing else makes sense for ar. function old new delta get_header_ar 539 542 +3 Signed-off-by: Peter Korsgaard <peter@korsgaard.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * cpio: add support for --renumber-inodes like GNU cpioAriadne Conill2021-10-131-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The --renumber-inodes option renumbers the inodes starting from 1, so that the sequence of inodes is always stable. This helps with reproducibility. function old new delta cpio_o 961 1045 +84 .rodata 78422 78440 +18 bbconfig_config_bz2 6168 6164 -4 packed_usage 25764 25756 -8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/2 up/down: 102/-12) Total: 90 bytes Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * cpio: add support for --ignore-devno like GNU cpioAriadne Conill2021-10-131-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The --ignore-devno option is used to set device numbers to (0, 0). This can be useful in verifying whether a CPIO archive is reproducible. function old new delta cpio_o 922 961 +39 .rodata 78407 78422 +15 bbconfig_config_bz2 6161 6167 +6 packed_usage 25770 25764 -6 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/1 up/down: 60/-6) Total: 54 bytes Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | rpm: code shrinkRon Yorston2021-11-141-0/+4
| | | | | | | | | | | | | | Since the WIN32 implementation of chown(2) does nothing there's no point in calling it. Saves 112 bytes.
* | Merge branch 'busybox' into mergeRon Yorston2021-10-133-5/+11
|\|