aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-09-09remove_file: don't call rmdir if remove_file return failureChen Yu
When deleting a directory, the directory should not be removed if the file in the subdirectory fails to be deleted. Background information: When I tested the kernel using LTP (linux-test-project).I found the mv command have some issue. The LTP test case use the mv command to move the directory t1 in the cgroup file system to the /tmp directory. becase files in the cgroup file system are not allowed to be removed. so the mv reported "Permission denied", but I used the ls command to view the results and found that the directory t1 had been removed from the cgroup file system. For the same test case, I used the mv tool in the GNU coreutils, and the directory t1 will not be removed. the following testcase use busybox mv: / # mount -t cgroup -o cpu cgroup /cpu / # cd /cpu /cpu # mkdir -p t1 /cpu # ls cgroup.clone_children cpu.cfs_period_us cpu.stat t1 cgroup.procs cpu.cfs_quota_us notify_on_release tasks cgroup.sane_behavior cpu.shares release_agent /cpu # mv t1 /tmp mv: can't remove 't1/cgroup.procs': Operation not permitted mv: can't remove 't1/cpu.cfs_period_us': Operation not permitted mv: can't remove 't1/cpu.stat': Operation not permitted mv: can't remove 't1/cpu.shares': Operation not permitted mv: can't remove 't1/cpu.cfs_quota_us': Operation not permitted mv: can't remove 't1/tasks': Operation not permitted mv: can't remove 't1/notify_on_release': Operation not permitted mv: can't remove 't1/cgroup.clone_children': Operation not permitted /cpu # ls cgroup.clone_children cpu.cfs_period_us cpu.stat cgroup.procs cpu.cfs_quota_us notify_on_release tasks cgroup.sane_behavior cpu.shares release_agent /cpu # This patch fixed it, don't call rmdir if remove_file return failure, and under certain file systems, the mv could work normally. Signed-off-by: Chen Yu <yu.chen3@zte.com.cn> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-09-04whois: fix a possible out-of-bounds stack accessDenys Vlasenko
If fgets() returns incomplete string, we replace NUL with '\n', and then trim() runs on a non-NUL-terminated buffer. Prevent that. While at it, bump buffer from 1k to 2k. function old new delta query 519 524 +5 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-09-03chcon: fix issues with recurse and retval for retained filessagivd
- recurse is not acting as expected (looks like broken old code) - when not using verbose output, return value for retained files is 1, which is not expected. Signed-off-by: sagivd <sagivdev@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-09-03libbb: fix potential NULL pointer useDenys Vlasenko
function old new delta unicode_conv_to_printable2 193 216 +23 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-09-03libbb: fix use-after-free in copy_fileDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-09-02libbb: in xmalloc_fgets(), use size_t for bb_get_chunk_from_file()Denys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-09-02Revert "libbb: remove unnecessary variable in xmalloc_fgets"Denys Vlasenko
The variable is in fact necessary. commit 2da9724b56169f00bd7fb6b9a11c9409a7620981 Author: Quentin Rameau <quinq@fifth.space> Date: Sun Apr 1 17:05:35 2018 +0200 libbb: remove unnecessary variable in xmalloc_fgets Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-30smemcap: keep outputting by ignoring transient processes, take twoDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-26smemcap: keep outputting by ignoring transient processesAndre Goddard Rosa
function old new delta archivefile 167 176 +9 Signed-off-by: Andre Goddard Rosa <andre.rosa@lge.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-26sysklogd: add timestamp option to ignore message timestampsPeter Korsgaard
Some syslog producers provide inconsistent timestamps, so provide an option to ignore the message timestamps and always locally timestamp. In order to implement this, invert the valid-timestamp check, but only use the timestamp if this option is not enabled. This is in line with what what other syslogd implementations do: From sysklogd syslogd.c: * Sun Nov 7 12:28:47 CET 2004: Martin Schulze <joey@infodrom.org> * Discard any timestamp information found in received syslog * messages. This will affect local messages sent from a * different timezone. rsyslog's imuxsock module similary has an (enabled by default) IgnoreTimestamp option: https://www.rsyslog.com/doc/v8-stable/configuration/modules/imuxsock.html function old new delta packed_usage 32877 32912 +35 timestamp_and_log 363 376 +13 syslogd_main 1638 1641 +3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 51/0) Total: 51 bytes Signed-off-by: Peter Korsgaard <peter@korsgaard.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-26fix !CONFIG_FLOAT_DURATION buildDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-25ping: use setitimer() instead of ualarm()Denys Vlasenko
function old new delta sendping_tail 218 265 +47 ualarm 79 - -79 ------------------------------------------------------------------------------ (add/remove: 0/2 grow/shrink: 1/0 up/down: 47/-79) Total: -32 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-14ip: tweak --help textDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-14hush: tweak comment, no code changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-11hush: add a comment on how globbing (should) workDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-07ash: expand: Do not quote backslashes in unquoted parameter expansionDenys Vlasenko
Upstream commit: Date: Wed, 28 Mar 2018 18:37:51 +0800 expand: Do not quote backslashes in unquoted parameter expansion Here is a better example: a="/*/\nullx" b="/*/\null"; printf "%s\n" $a $b dash currently prints /*/\nullx /*/\null bash prints /*/\nullx /dev/null You may argue the bash behaviour is inconsistent but it actually makes sense. What happens is that quote removal only applies to the original token as seen by the shell. It is never applied to the result of parameter expansion. Now you may ask why on earth does the second line say "/dev/null" instead of "/dev/\null". Well that's because it is not the quote removal step that removed the backslash, but the pathname expansion. The fact that the /de\v does not become /dev even though it exists is just the result of the optimisation to avoid unnecessarily calling stat(2). I have checked POSIX and I don't see anything that forbids this behaviour. So going back to dash yes I think we should adopt the bash behaviour for pathname expansion and keep the existing case semantics. This patch does exactly that. Note that this patch does not work unless you have already applied https://patchwork.kernel.org/patch/10306507/ because otherwise the optimisation mentioned above does not get detected correctly and we will end up doing quote removal twice. This patch also updates expmeta to handle naked backslashes at the end of the pattern which is now possible. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> function old new delta expmeta 618 653 +35 memtodest 146 147 +1 Tested to work with both ASH_INTERNAL_GLOB on and off. hush does not handle this correctly. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05hush: adopt ash's quote_in_varexp1.testsDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05ash: exec: Return 126 on most errors in shellexecDenys Vlasenko
Upstream commit: Date: Sat, 19 May 2018 02:39:37 +0800 exec: Return 126 on most errors in shellexec Currently when shellexec fails on most errors the shell will exit with exit status 2. This patch changes it to 126 in order to avoid ambiguities with the exit status from a successful exec. The errors that result in 127 has also been expanded to include ENOTDIR, ENAMETOOLONG and ELOOP. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> function old new delta shellexec 245 254 +9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05ash: eval: Restore input files in evalcommandDenys Vlasenko
Upstream commit: Date: Tue, 27 Mar 2018 00:39:35 +0800 eval: Restore input files in evalcommand When evalcommand invokes a command that modifies parsefile and then bails out without popping the file, we need to ensure the input file is restored so that the shell can continue to execute. Reported-by: Martijn Dekker <martijn@inlv.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> function old new delta unwindfiles - 20 +20 evalcommand 1635 1653 +18 getoptscmd 584 595 +11 popallfiles 20 10 -10 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/1 up/down: 49/-10) Total: 39 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05ash: parser: Fix parsing of ${}Denys Vlasenko
Upstream commit: Date: Tue, 3 Apr 2018 00:40:25 +0800 parser: Fix parsing of ${} dash -c 'echo ${}' should print "Bad subtitution" but instead fails with "Syntax error: Missing '}'". This is caused by us reading an extra character beyond the right brace. This patch fixes it so that this construct only fails during expansion rather than during parsing. Fixes: 3df3edd13389 ("[PARSER] Report substition errors at...") Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> function old new delta readtoken1 2907 2916 +9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05ash,hush: fold shell_builtin_read() way-too-many params into a struct paramDenys Vlasenko
function old new delta getoptscmd 587 584 -3 readcmd 240 224 -16 shell_builtin_read 1426 1399 -27 builtin_read 210 182 -28 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-74) Total: -74 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05hush: set IFS to default on startupDenys Vlasenko
function old new delta hush_main 1095 1110 +15 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05hush: fix fallout from FILE->HFILE conversionDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05ash: expand: Fix ghost fields with unquoted $@/$*Denys Vlasenko
Upstream commit: Date: Fri, 23 Mar 2018 18:58:47 +0800 expand: Fix ghost fields with unquoted $@/$* You're right. The proper fix to this is to ensure that nulonly is not set in varvalue for $*. It should only be set for $@ when it's inside double quotes. In fact there is another bug while we're playing with $@/$*. When IFS is set to a non-whitespace character such as :, $* outside quotes won't remove empty fields as it should. This patch fixes both problems. Reported-by: Martijn Dekker <martijn@inlv.org> Suggested-by: Harald van Dijk <harald@gigawatt.nl> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> function old new delta argstr 1111 1113 +2 evalvar 571 569 -2 varvalue 579 576 -3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 2/-5) Total: -3 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05ash: var: Set IFS to fixed value at start timeDenys Vlasenko
Upstream commit: Date: Sat, 19 May 2018 02:39:43 +0800 var: Set IFS to fixed value at start time This patch forces the IFS variable to always be set to its default value, regardless of the environment. It also removes the long unused IFS_BROKEN code. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-05ash: eval: Variable assignments on functions are no longer persistentDenys Vlasenko
Upstream commit: Date: Wed, 4 Apr 2018 17:54:01 +0800 eval: Variable assignments on functions are no longer persistent Dirk Fieldhouse <fieldhouse@gmx.net> wrote: > In POSIX.1-2017 ("simultaneously IEEE Std 1003.1™-2017 and The Open > Group Technical Standard Base Specifications, Issue 7") > <http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09>, > we read under '2.9.1 Simple Commands' > > "Variable assignments shall be performed as follows: > ... > - If the command name is a standard utility implemented as a function > (see XBD Utility), the effect of variable assignments shall be as if the > utility was not implemented as a function. > ... > - If the command name is a function that is not a standard utility > implemented as a function, variable assignments shall affect the current > execution environment during the execution of the function. It is > unspecified: > > * Whether or not the variable assignments persist after the > completion of the function > > * Whether or not the variables gain the export attribute during > the execution of the function > > * Whether or not export attributes gained as a result of the > variable assignments persist after the completion of the function (if > variable assignments persist after the completion of the function)" POSIX used to require the current dash behaviour. However, you're right that this is no longer the case. This patch will remove the persistence of the variable assignment. I have considered the exporting the variables during the function execution but have decided against it because: 1) It makes the code bigger. 2) dash has never done this in the past. 3) You cannot use this portably anyway. Reported-by: Dirk Fieldhouse <fieldhouse@gmx.net> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> function old new delta evalcommand 1606 1635 +29 evalcase 313 317 +4 evalfun 280 268 -12 pushlocalvars 48 - -48 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 2/1 up/down: 33/-60) Total: -27 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-04ash,hush: properly handle ${v//pattern/repl} if pattern starts with /Denys Vlasenko
Closes 2695 function old new delta parse_dollar 762 790 +28 subevalvar 1258 1267 +9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 37/0) Total: 37 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-04tar: fix a thinko in prev commit - we need to copy to _unused_ fdDenys Vlasenko
function old new delta vfork_compressor 257 246 -11 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-04tar: handle the case when opened created tarball happens to have fd#0Denys Vlasenko
Reproducer: exec 0>&- exec 1>&- tar czf z.tar.gz FILE function old new delta vfork_compressor 229 257 +28 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-04tar: make source code a bit more terse, no logic changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-03uptime: add -s supportDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-03Complie libbb/duration.c if ping[6] is selectedDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-03ping: implement -i SECDenys Vlasenko
function old new delta common_ping_main 1862 1968 +106 ualarm - 79 +79 packed_usage 32858 32897 +39 sendping_tail 204 218 +14 ------------------------------------------------------------------------------ (add/remove: 5/0 grow/shrink: 3/0 up/down: 320/0) Total: 320 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-03timeout: fix arguments to match coreutilsDenys Vlasenko
Was: timeout [-t SECS] [-s SIG] PROG ARGS Is: timeout [-s SIG] SECS PROG ARGS function old new delta timeout_main 312 319 +7 packed_usage 32882 32858 -24 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 7/-24) Total: -17 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-03extend fractional duration support to "top -d N.N" and "timeout"Denys Vlasenko
function old new delta parse_duration_str - 168 +168 sleep_for_duration - 157 +157 top_main 885 928 +43 timeout_main 269 312 +43 handle_input 571 614 +43 duration_suffixes - 40 +40 sfx 40 - -40 sleep_main 364 79 -285 ------------------------------------------------------------------------------ (add/remove: 4/1 grow/shrink: 3/1 up/down: 494/-325) Total: 169 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-03ntpd: show real, unclamped delays on low-latency networksDenys Vlasenko
On fast network, I've seen "delay:0.002000" shown for all packets, thus completely losing information on what real delays are. The new code is careful to not reject packets with tiny delays if the delay "grows a lot" but is still tiny: 0.000009 is "much larger" than 0.000001 (nine times larger), but is still very good small delay. function old new delta recv_and_process_peer_pkt 863 889 +26 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-01ls: When -h is passed, the total should also be in human unitsLauri Kasanen
Signed-off-by: Lauri Kasanen <cand@gmx.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-01nslookup: add support for search domains, closes 11161Denys Vlasenko
function old new delta parse_resolvconf - 311 +311 add_query_with_search - 105 +105 nslookup_main 873 757 -116 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 0/1 up/down: 416/-116) Total: 300 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-01cp: placate gcc8Denys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-01Add chroot support to chpasswdJon Kolb
function old new delta .rodata 170689 170724 +35 packed_usage 32850 32876 +26 chpasswd_main 411 436 +25 chpasswd_longopts 34 41 +7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/0 up/down: 93/0) Total: 93 bytes Signed-off-by: Jon Kolb <kolbyjack@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-01udhcpc: add a cooment about sanitizing DHCP_DOMAIN_NAME, no code changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-08-01udhcpc: do in fact not allow hostname components which start with dashDenys Vlasenko
function old new delta xmalloc_optname_optval 879 893 +14 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-07-31sendmail: use on-stack buffer for AUTH PLAINDenys Vlasenko
function old new delta sendmail_main 1335 1307 -28 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-07-31sendmail: code shrink 2Denys Vlasenko
function old new delta sendmail_main 1366 1335 -31 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-07-31sendfile: code shrinkDenys Vlasenko
function old new delta printstr_base64 - 22 +22 printbuf_base64 - 11 +11 printfile_base64 - 9 +9 makemime_main 305 294 -11 encode_n_base64 236 223 -13 sendmail_main 1380 1366 -14 encode_base64 36 - -36 ------------------------------------------------------------------------------ (add/remove: 3/1 grow/shrink: 0/3 up/down: 42/-74) Total: -32 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-07-31sendmail: support AUTH PLAIN in addition to AUTH LOGINRaffaello D. Di Napoli
Implement the -am argument to allow choosing an AUTH method. For now only PLAIN and LOGIN are supported, but others can be added easily in the future. AUTH PLAIN required adding a new variant of encode_base64() capable of handling NUL characters in the input string; the old function is now a wrapper for the newer one. function old new delta encode_n_base64 - 236 +236 sendmail_main 1199 1380 +181 packed_usage 32873 32877 +4 encode_base64 242 36 -206 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/1 up/down: 421/-206) Total: 215 bytes Signed-off-by: Raffaello D. Di Napoli <rafdev@dinapo.li> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-07-31klogd: code shrinkDenys Vlasenko
function old new delta klogd_main 511 486 -25 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-07-31install.sh: don't clobber dangling symlinksBaruch Siach
Symlinks in a subdirectory that is to become target rootfs are sometimes dangling because they link to canonical file names that are not present on the host, but are present relative to the target rootfs root. Don't copy over dangling symlinks when noclobber is enabled The -e test treats dangling symlinks as non-existent files. Add -h test that returns true for all symlinks. Cc: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Baruch Siach <baruch@tkos.co.il> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-07-31klogd: better help textDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-07-31hush: speed up ${var:+ARG} for literal ARGsDenys Vlasenko
function old new delta first_special_char_in_vararg - 52 +52 expand_one_var 2248 2296 +48 encode_then_expand_vararg 357 336 -21 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/1 up/down: 100/-21) Total: 79 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>