summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-06-20lsattr,chattr: support -pDenys Vlasenko
function old new delta fgetsetprojid - 107 +107 list_attributes 169 222 +53 change_attributes 277 326 +49 chattr_main 272 307 +35 close_silently - 22 +22 .rodata 103378 103393 +15 packed_usage 33658 33666 +8 fgetsetversion 88 74 -14 fgetsetflags 162 148 -14 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 5/2 up/down: 289/-28) Total: 261 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-20taskset: fix for PID longer than 12 charsDenys Vlasenko
Should we validate that PID is a number for "taskset -ap PID"? We don't actually need it, and pathological input like "../../DIR_WITH_LOTS_OF_PIDS" can only cause "taskset"ing of many pids. Which is something user can do anyway. function old new delta taskset_main 190 181 -9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-19taskset: implement -aDenys Vlasenko
function old new delta process_pid_str - 854 +854 .rodata 103363 103378 +15 packed_usage 33654 33658 +4 taskset_main 936 190 -746 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/1 up/down: 873/-746) Total: 127 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-19hush: fix bkslash+newline handling and number validation in ${NN} and ${#NN}Denys Vlasenko
Entering "${1a}" into interactive shell was making it exit. function old new delta parse_dollar 824 958 +134 i_getch_and_eat_bkslash_nl - 44 +44 parse_expr 917 938 +21 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/0 up/down: 199/0) Total: 199 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-18awk: after preinc/dec, only allow variable, field ref, array ref, or another ↵Denys Vlasenko
preinc/dec Accepting nonsense like "--4", and even "-- -4" is confusing. function old new delta parse_expr 917 938 +21 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-18free: implement -hDenys Vlasenko
function old new delta .rodata 103331 103363 +32 packed_usage 33652 33654 +2 free_main 657 588 -69 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 34/-69) Total: -35 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-18xxd: implement -i "C style output"Denys Vlasenko
function old new delta xxd_main 710 888 +178 .rodata 103252 103331 +79 print_C_style - 78 +78 packed_usage 33639 33652 +13 next 276 278 +2 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 4/0 up/down: 350/0) Total: 350 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-18xxd: do not try reading from closed stdin when non-existent file is givenDenys Vlasenko
Was: xxd: FILE: No such file or directory xxd: FILE: Bad file descriptor function old new delta next 276 278 +2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-17xxd: implement -o DISPLAYOFFSETDenys Vlasenko
function old new delta xxd_main 680 710 +30 xstrtoll - 30 +30 bb_dump_dump 1511 1531 +20 rewrite 941 951 +10 packed_usage 33629 33639 +10 .rodata 103250 103252 +2 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 5/0 up/down: 102/0) Total: 102 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-17hexdump: fix error messageDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-17ionice: implement -tDenys Vlasenko
function old new delta packed_usage 33618 33629 +11 ionice_main 272 282 +10 .rodata 103250 103251 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 22/0) Total: 22 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-17env: implement -0Denys Vlasenko
function old new delta packed_usage 33590 33618 +28 env_main 187 209 +22 .rodata 103242 103250 +8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 58/0) Total: 58 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-17mv: implement -t and -TDenys Vlasenko
function old new delta mv_main 496 585 +89 .rodata 103188 103242 +54 packed_usage 33549 33590 +41 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 184/0) Total: 184 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-17uniq: support -zDenys Vlasenko
function old new delta uniq_main 391 427 +36 packed_usage 33570 33549 -21 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 36/-21) Total: 15 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16vi: reject change command when motion failsRon Yorston
If the motion command used to define the range of a change, yank or delete fails the whole command should be rejected. BusyBox vi already handled failed searches in these circumstances. Add some more cases: - non-existent mark: d'x - movement beyond end of file: c99999+ or 99999<< This is implemented using a global variable which is set when a command error is detected. Unlike the case of motion within a line it's insufficient to check that the motion command doesn't move the cursor: this fails to process 'LyL' correctly, for example, as the second 'L' doesn't move the cursor. function old new delta indicate_error 75 82 +7 find_range 686 692 +6 do_cmd 4851 4852 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 14/0) Total: 14 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16vi: up/down motion beyond end of file should failRon Yorston
In traditional vi and vim line motion commands ('+'/'-'/'j'/'k') fail if the movement would exceed the bounds of the file. BusyBox vi allowed such commands to succeed, leaving the cursor on the first or last character of the file. Make BusyBox vi work like vi/vim. For the 'G'/'H'/'L' commands traditional vi treats an out of bounds result as an error, vim doesn't. BusyBox vi behaves like vim, both before and after this patch. function old new delta do_cmd 4785 4851 +66 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 66/0) Total: 66 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16vi: keep autoindent if line isn't emptyRon Yorston
When ESC is entered to leave insert mode any autoindent should only be removed if there's no content beyond the indent. This may be the case if a line has been split by entering insert mode and then entering a CR. Add a check to ensure there's only a newline after the indent. function old new delta char_insert 912 929 +17 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 17/0) Total: 17 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16du: support -b "apparent size"Denys Vlasenko
function old new delta du 434 470 +36 packed_usage 33542 33570 +28 print 57 78 +21 du_main 286 302 +16 .rodata 103187 103188 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/0 up/down: 102/0) Total: 102 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16blockdev: support --get/setraDenys Vlasenko
function old new delta blockdev_main 251 263 +12 bdcmd_names 82 94 +12 packed_usage 33534 33542 +8 bdcmd_ioctl 44 52 +8 bdcmd_flags 11 13 +2 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/0 up/down: 42/0) Total: 42 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16*: more --help tweaksDenys Vlasenko
function old new delta packed_usage 33522 33534 +12 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16lsof: print fd# tooDenys Vlasenko
function old new delta lsof_main 179 188 +9 .rodata 103194 103187 -7 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16telnetd: give inetd.conf example in --helpDenys Vlasenko
function old new delta packed_usage 33537 33522 -15 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-16awk: fix use-after-free in "$BIGNUM1 $BIGGERNUM2" concat opDenys Vlasenko
Second reference to a field reallocs/moves Fields[] array, but first ref still tries to use the element where it was before move. function old new delta fsrealloc 94 106 +12 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15hush: fix handling of "cmd && &"Denys Vlasenko
function old new delta done_pipe 213 231 +18 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15hush: fix handling of \^C and "^C"Denys Vlasenko
function old new delta parse_stream 2238 2252 +14 encode_string 243 256 +13 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 27/0) Total: 27 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15unlzma: fix a case where we could read before beginning of bufferDenys Vlasenko
Testcase: 21 01 01 00 00 00 00 00 e7 01 01 01 ef 00 df b6 00 17 02 10 11 0f ff 00 16 00 00 Unfortunately, the bug is not reliably causing a segfault, the behavior depends on what's in memory before the buffer. function old new delta unpack_lzma_stream 2762 2768 +6 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15man: fix segfault in "man 1"Denys Vlasenko
function old new delta man_main 942 954 +12 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15shuf: simplify check that we have at least one FILEDenys Vlasenko
function old new delta .rodata 103190 103194 +4 packed_usage 33541 33537 -4 shred_main 354 337 -17 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 4/-21) Total: -17 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15*: more --help tweaksDenys Vlasenko
function old new delta packed_usage 33552 33541 -11 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15udhcpc: do not use inet_addr() to parse -r REQ_IP, it's deprecatedDenys Vlasenko
...and we did not error-check it, and this is the only use of it: function old new delta inet_addr 37 - -37 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15udhcpc: rename server_addr to server_id, fix id comparison if it's not specifiedDenys Vlasenko
Even though it is _meant to be_ an IP address, in the wild servers sometimes give bogus server ids, like 1.1.1.1 function old new delta udhcpc_main 2551 2542 -9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15udhcpc[6]: do not pass xid around, keep it in client_data.xidDenys Vlasenko
function old new delta perform_release 105 169 +64 perform_d6_release 259 262 +3 init_d6_packet 84 85 +1 send_d6_discover 286 285 -1 send_d6_select 128 126 -2 send_d6_renew 176 174 -2 send_d6_info_request 65 63 -2 udhcpc_main 2555 2551 -4 send_select 130 122 -8 send_renew 99 91 -8 send_discover 89 81 -8 udhcpc6_main 2636 2602 -34 send_release 74 - -74 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 3/9 up/down: 68/-143) Total: -75 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-15udhcpc: send client-id option in DHCPDECLINEDenys Vlasenko
function old new delta add_serverid_and_clientid_options - 46 +46 send_decline 88 83 -5 perform_release 200 159 -41 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/2 up/down: 46/-46) Total: 0 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-14vi: initialise tabstop once not for each fileRon Yorston
The default tabstop value should be set during early start up, not reset for each new file. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-14vi: ':r' should insert text after current lineRon Yorston
When no line number is specified ':read' should place the inserted text after the current line, not before. This used to be correct but was broken when commit 0c42a6b07 (vi: fix empty line range regression) revealed a bug in commit 7a8ceb4eb (vi: changes to line addresses for colon commands). function old new delta colon 3960 3952 -8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8) Total: -8 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-14*: --help tweaksDenys Vlasenko
function old new delta packed_usage 33589 33552 -37 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13base32/64: accept -i "skip bad chars" option (currently in effect ↵Denys Vlasenko
unconditionally) function old new delta .rodata 103189 103190 +1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13*: more --help tweakingDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13*: more --help tweaks, mostly expanding ts --helpDenys Vlasenko
function old new delta packed_usage 33554 33596 +42 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-13*: --help tweaksDenys Vlasenko
function old new delta .rodata 103190 103189 -1 packed_usage 33590 33566 -24 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-25) Total: -25 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-12bc: tweak overflow detection in a^bDenys Vlasenko
function old new delta zbc_num_p 506 510 +4 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-12bc: code shrink: combine init() and copy() where we canDenys Vlasenko
function old new delta bc_num_init_and_copy - 27 +27 zxc_program_popResultAndCopyToVar 495 483 -12 zxc_num_printNum 518 506 -12 zbc_num_p 518 506 -12 zxc_program_assign 357 341 -16 zbc_num_m 298 267 -31 zxc_vm_process 6498 6412 -86 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/6 up/down: 27/-169) Total: -142 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-12bc: fix for mul overflow in scale calculation in a^bDenys Vlasenko
function old new delta zbc_num_p 516 518 +2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-06httpd_post_upload.cgi: use mktemp to avoid $RANDOMSergey Ponomarev
The $RANDOM variable may be disabled on ash compilation but we can safelly use mktemp instead. Signed-off-by: Sergey Ponomarev <stokito@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-06ash: save Ron's patch from oblivionDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-06shells: do not allow bare "read" in non-bash compat configsDenys Vlasenko
On Sat, Feb 9, 2019 Cristian Ionescu-Idbohrn wrote: > In my case (at work), I have to watch and prevent people from doing > unportable things. For me, that's a burden. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05ash: add process substitution in bash-compatibility modeRon Yorston
Process substitution is a Korn shell feature that's also available in bash and some other shells. This patch implements process substitution in ash when ASH_BASH_COMPAT is enabled. function old new delta argstr 1386 1522 +136 strtodest - 52 +52 readtoken1 3346 3392 +46 .rodata 183206 183250 +44 unwindredir - 28 +28 cmdloop 365 372 +7 static.spclchars 10 12 +2 cmdputs 380 367 -13 exitreset 86 69 -17 evalcommand 1754 1737 -17 varvalue 675 634 -41 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 5/4 up/down: 315/-88) Total: 227 bytes text data bss dec hex filename 953967 4219 1904 960090 ea65a busybox_old 954192 4219 1904 960315 ea73b busybox_unstripped v2: Replace array of file descriptors with a linked list. Include tests that were unaccountably omitted from v1. v3: Update linked list code to the intended version. v4: Change order of conditional code in cmdputs(). v5: Use existing popredir() mechanism to manage file descriptors. v6: Rebase to latest version of BusyBox ash. Reduce code churn. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05run-parts: permit dot later in file nameJán Sáreník
See https://gist.github.com/andyshinn/3ae01fa13cb64c9d36e7#gistcomment-2044506 To test: mkdir /tmp/testrp printf "#!/bin/sh\necho test\n" > /tmp/testrp/test.sh chmod a+x /tmp/testrp/* busybox run-parts /tmp/testrp test mv /tmp/testrp/test.sh /tmp/testrp/.test.sh busybox run-parts /tmp/testrp # no output function old new delta act 190 200 +10 Signed-off-by: Ján Sáreník <jajomojo@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05build system: use SOURCE_DATE_EPOCH for timestamp if availablePaul Spooren
The SOURCE_DATE_EPOCH is an effort of the Reproducible Builds organization to make timestamps/build dates in compiled tools deterministic over several repetitive builds. Busybox shows by default the build date timestamp which changes whenever compiled. To have a reasonable accurate build date while staying reproducible, it's possible to use the *date of last source modification* rather than the current time and date. Further information on SOURCE_DATE_EPOCH are available online [1]. This patch modifies `confdata.c` so that the content of the SOURCE_DATE_EPOCH env variable is used as timestamp. To be independent of different timezones between builds, whenever SOURCE_DATE_EPOCH is defined the GMT time is used. [1]: https://reproducible-builds.org/docs/source-date-epoch/ Signed-off-by: Paul Spooren <mail@aparcar.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-06-05shell: also do word splitting when -d DELIM is usedEicke Herbertz
The original commit 3bef5d89b0 introduced an additional check for an unset `opt_d` before doing word splitting. I'm unsure why it's there in the first place, but the commit message also describes a different behaviour than what -d actually does in bash, while the code mostly does the right thing. `opt_d` sets the line delimiter for read to stop reading and should not affect word splitting. Testcase: $ echo qwe rty | { read -d Z a b; echo a:$a b:$b; } a:qwe b:rty function old new delta shell_builtin_read 1314 1304 -10 Signed-off-by: Eicke Herbertz <wolletd@posteo.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>