aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-11-14Allow 0 prefix to optstr to include argv[0] in optargs[0].Rob Landley
2020-11-13Properly install toybox files with $TARGET suffixes.Rob Landley
2020-11-12readelf: harden against invalid input.Elliott Hughes
I also promised to fix readelf. Where in file(1) I made no attempt to say what was bad (or even to change `goto bad` to explicitly say that *anything* was bad), I believe that readelf is much more likely to be shown invalid ELF files, and that it would be useful to have some clue as to what's wrong. Relatedly, this patch removes all existing error_exit() calls in case it's being used on multiple files. Again, this survived ~24hrs of AFL++ trying to blow its house down. Test: ~/AFLplusplus/afl-fuzz -i tests/files/elf -o fuzz-out -- ./readelf -a @@
2020-11-12file: harden against invalid input.Elliott Hughes
I promised months ago I'd fix this, and there was a (not visible to the public but filed by a member of the public) bug filed against Android in the meantime, but judged No Security Impact because "toybox is not a security boundary". Anyway, it seemed high time I learned about fuzzing command-line tools with AFL++, so here we are. With these patches (and starting from the ELF files in test/files/elf), toybox file survived ~24hours against AFL++. Amusingly it corrupted the ELF files hard enough that it also managed to find a bug in the code for MS-DOS executables, which is the motivation for the final hunk in this patch. Bug: http://b/159065007 Test: ~/AFLplusplus/afl-fuzz -i tests/files/elf -o fuzz-out -- ./file @@
2020-11-11date: add --utc (synonymous with -u)Elliott Hughes
2020-11-11file: identify Android Binary XML.Elliott Hughes
Android is introducing a new binary XML format that is a drop-in replacement for many existing .xml files written by system_server. Since engineers may be surprised when encountering this new format, add it to the "file" tool to aid identification in the field.
2020-11-11Make the static musl x86-64 binaries segfault for fewer people.Rob Landley
Even though the gcc toolchain ./configure is told it's cross compiling, it optimizes for the current machine ANYWAY. So force it to be generic.
2020-11-08Teach devmem about nommu and 0x prefix on address. Print hex or decimalRob Landley
output depending on whether address was hex or decimal.
2020-11-07xregcomp: add the specific regex we couldn't parse to the error message.Elliott Hughes
This makes it more likely that you can actually debug something like "sed: bad regex: empty (sub)expression" or "sed: bad regex: parentheses not balanced" from a build failure log, where you don't necessarily know where the failure came from. This also seems like it might be useful generally, although GNU grep doesn't include this detail in its error messages, and busybox doesn't even seem to notice that regcomp() failed? (Realistically if the Android build team wants to move forward with "one true regex implementation", we're going to have to add some GNU-isms to the Android regex implementation. But we'd need to find them first! Note that the two examples given above are real examples from failed buildbot builds, but they occur early in the respective builds so there are likely many more to look at after these. Interestingly, the first of the two appears to be the more general case of something disallowed by POSIX that xregcomp() already has a workaround for.)
2020-11-06portability.h: ensure _FILE_OFFSET_BITS=64 takes effect.Elliott Hughes
I added a #include above this, which caused subtle breakages on 32-bit systems. Move it to the top of the file to fix it and avoid making a similar mistake in future.
2020-10-29Make it easier to switch regex implementations.Elliott Hughes
One reason to use toybox on the host is to get the same behavior across Android/Linux/macOS. Unfortunately (as we've seen from a few bugs) one area where that doesn't quite work is that toybox uses the libc regular expression implementation. That's fine, and mostly what users want, but those folks trying to get the exact same behavior everywhere might want to switch in a known regex implementation (bionic's NetBSD regex implementation, say) for increased consistency. That actually works pretty well, but portability.h has an #ifndef test for REG_STARTEND before including <regex.h> that gets in the way. To make up for that, this patch removes the unnecessary #include <regex.h> from grep.c itself.
2020-10-28Tweak help text again.Rob Landley
2020-10-24Tweak release notes.0.8.4Rob Landley
2020-10-24Silence kernel messages that stomp the command line after boot.Rob Landley
2020-10-24Don't "quiet" the kernel builds. You can KARGS=quiet if you like.Rob Landley
2020-10-24Past time for 0.8.4Rob Landley
2020-10-24Just the FAQ's, ma'am.Rob Landley
2020-10-23Fix endless recursion bug on nommu for sh -c 'echo $(echo)'Rob Landley
2020-10-22Fix thinko.Rob Landley
2020-10-22Add nommu-able xvdaemon() and use it to remove some TOYBOX_FORK dependenciesRob Landley
2020-10-21blkdiscard: fix uninitialised offsetPatrick Oppenlander
2020-10-21Tweak watchdog help.Rob Landley
2020-10-21Promote watchdog.Rob Landley
2020-10-20Typo.Rob Landley
2020-10-20Can't call daemon() on nommu.Rob Landley
2020-10-19More tests, and a workaround to pass one of them.Rob Landley
(The bug is that "echo hello \" followed by just enter should end the $PS2 state but it persists when the line is empty because resulting collated line still ends with \ so it wants another line.)
2020-10-19Do an "exec >/dev/console 2>&1" early in mkroot init so we haveRob Landley
debug output if anything later in the script fails.
2020-10-19Implement source, fix empty ${x-alt}, use %zu as suggested by e5ten.Rob Landley
2020-10-18Add sha3sum.Rob Landley
2020-10-15rtcwake: default to UTC if /etc/adjtime can't be readPatrick Oppenlander
This is consistent with the util-linux implementation.
2020-10-15hwclock: default to UTC if /etc/adjtime can't be readPatrick Oppenlander
This is consistent with the util-linux implementation.
2020-10-15stty: don't mangle c_iflags.Elliott Hughes
Fixes https://github.com/landley/toybox/issues/251 where `stty 300` was mangling c_iflags to 0x300 because even if we don't match a full hex specification of struct termios, sscanf() will have overwritten the first value, which is c_iflag.
2020-10-15chattr.test: don't fail on f2fs with compression enabled.Elliott Hughes
f2fs with compression enabled only lets you `chattr +c` on an empty file.
2020-10-15Patrick Oppenlander suggested watchdog also catch SIGINT.Rob Landley
2020-10-15Three trivial code cleanups and a comment tweak.Rob Landley
2020-10-15Nitpicky cleanup.Rob Landley
We need to *name = 0 explicitly for the !name && !statless case, so don't need the +1 in memset that was only zeroing in the !name && statless case.
2020-10-15dirtree_path: always honor size request.Elliott Hughes
tar asks dirtree_path() to reserve space for a trailing '/', but recent changes broke that for the case that was resolving to just a strdup(). Caught by `export ASAN=1` and `make test_tar`.
2020-10-14Fix && || traversing loops, and typecast past size_t being stupidly typed.Rob Landley
2020-10-14Implement ${var/search/replace}Rob Landley
2020-10-13Fix up ${x%y} ${x^y} ${x,y} and add tests.Rob Landley
2020-10-12Fix bug introduced last commit: the if (name) else case needs to zero it.Rob Landley
2020-10-11toysh: more variable/wildcard plumbing and tests.Rob Landley
2020-10-06The non-recursive dirtree_path wasn't stripping a trailing / from initial path.Rob Landley
2020-10-06toysh: Yank debug scaffolding.Rob Landley
2020-10-06toysh file wildcards: echo toys/*/*.c works now.Rob Landley
2020-10-05Update i2ctools.cchrisrfq
Fix i2cdetect parameter reading so "last" value is read from correct argument.
2020-10-04Implement ${x#y} and ${x##y}Rob Landley
Debug wildcard * match, teach skipslash() to fill out a wildcard deck, make collect_wildcards() flush remove the parsing-only 0th entry.
2020-10-03Return empty string for dirtree_path() of "" (instead of NULL).Rob Landley
2020-10-03Non-recursive dirtree_path() needs to return start of allocationRob Landley
when passed in extra allocation length or else free() gets very unhappy.
2020-10-02Cleanup pass on route.cRob Landley