aboutsummaryrefslogtreecommitdiff
path: root/toys
AgeCommit message (Collapse)Author
2015-09-01vmstat: reset header pointer when loopingColin Cross
Modifying the headers pointer when printing the headers causes a buffer overrun the second time they are printed. Use a local header pointer that is reset to the beginning of the buffer for each loop.
2015-08-31ls -l user/group/security context should be left-aligned.Elliott Hughes
Right-aligned looks pretty good to me, but it's not what anyone else does.
2015-08-30Fix mv on overwrite.Elliott Hughes
We need to remove the destination, not the source, to be able to overwrite.
2015-08-25Static analysis from Hyejin Kim found possible pointer underflow.Rob Landley
Now that the kernel's 128k environment size has been lifted, it might be possible to feed in a gigabyte of suffix so argv[2] is enough larger than argv[1] that char *s decrements past NULL and points to arbitrary high memory (I.E. strlen(suffix) > (long)base), at which point the base > s test is defeated and we strcmp() against a wild pointer. Which is read only anyway and on 64 bit you probably couldn't hit any interesting addresses, but the fix is easy enough: compare strlen values instead of pointers. So do that instead.
2015-08-20I discovered that the reason SIGINT causes a reboot on sysvinit is thatIsaac Dunham
it's how the kernel signals that ctrl-alt-delete has been pressed; thus, setting it as the signal for reboot prevents ctrlaltdel scripts from working. SIGTERM is what Busybox uses, so we might as well be compatible.
2015-08-17Test for human_readable()Rob Landley
2015-08-15Kylie McClain pointed out that env should clear variables with NAME= by itself.Rob Landley
2015-08-14Fix ionice default class.Elliott Hughes
2015-08-11Fix more date bugs.Elliott Hughes
Correctly and portably check for non-normal dates, and explicitly show the "before" and "after" dates (in the format of the user's choosing). Clear the struct tm in date_main rather than parse_default because on one path the struct tm is actually initialized. Explicitly clear the tm_sec field in parse_default because -- experiment shows -- that should not be preserved. Only do the "what does this 2-digit year mean?" dance if we actually parsed a 2-digit year. Show the right string in the error message if strptime fails. Also add more tests, and use UTC in the tests to avoid flakiness.
2015-08-11Bugfixes from Elliott Hughes: debug code got checked in (oops) andRob Landley
uninitialized trash in struct tm fields could segfault glibc's strftime().
2015-08-08Different tools have different ideas about what human-readable outputElliott Hughes
looks like. dd uses "7 MB" where du uses "7M", for example. this patch adds flags, similar to the BSD humanize_number. most callers will pass 0.
2015-08-08First pass at proper bunzip2 command line handling.Rob Landley
2015-08-08Fix ls -l user/group field ordering.Elliott Hughes
It's user then group, not the other way round.
2015-08-08login: execl() requires a path, not a file nameIsaac Dunham
2015-08-08Isaac Dunham pointed out that SIGINT's handler was set twice in init.c.Rob Landley
2015-08-08modprobe: use -q to silenceIsaac Dunham
2015-08-08modprobe: use basename_r()Isaac Dunham
2015-08-08modprobe: delete perror_exit() that makes no senseIsaac Dunham
Given modprobe -a, it's important to not exit early for a failure to load a module; additionally, the rest of the code presumes that this can fail without exiting.
2015-08-08Fix switch_root implementation.Alistair Strachan
Add the MS_MOVE of cwd to / and chroot into it. chdir is also called to ensure cwd does not point outside the chroot. The switch_root toy was also blocking any case where NEW_ROOT/init did not exist, even though NEW_INIT was a required parameter and did not have to be '/init'. Change it to handle any NEW_INIT passed as either a relative or absolute path. With this change, the switch_root toy actually works from initramfs.
2015-08-08Teach date @unixtime[.fraction], switch -s to be -D (matching busybox andRob Landley
not stomping on gnu's "an extra argument tells it to set the time so let's add -s to do the same thing" extension). Nanoseconds aren't uniformly supported by these apis, so had to stick it in GLOBALS() and pull it out later. Awkward, open to suggestions for a better way. (Also, the setting API is microseconds, not nanoseconds. Collect nano, convert to micro so we can switch APIs later without changing date's external UI again.) Oh, and shrink really_long_name_mktime() with a for() loop (and rename it) although I may go back and redo that for portability to hypothetical libraries if I can convert this mess to struct timespec with proper nanoseconds support. But that needs an extended strptime() which needs an extended struct tm, and between us and that is convincing posix computers got fast enough to care about fractions of a second. (Yes, I'm aware gnu added %N to date without adding it to strptime, implying they reimplemented strptime longhand inside date. I'm not doing that.)
2015-08-08Reject invalid dates in date(1).Elliott Hughes
Humans get upset when date(1) lets mktime(3) work out what the 99th day of the 99th month would be rather than rejecting the invalid date. For the subtly wrong cases, rather than get into the leap year business, let's rely on localtime_r(3).
2015-08-06Detect swap partitions, inline loop_partitions(), various cleanups.Rob Landley
2015-08-06Initialize uninitialized variable. (Oops.)Rob Landley
2015-08-05I've added support for running blkid without specifying a partition (so it ↵Dima Krasner
scans /proc/partitions).
2015-08-05Minor tweak of reboot.cRob Landley
2015-08-05reboot: signal init, add -f option to call reboot();Isaac Dunham
init: use SIGINT, use xsignal() Now that oneit supports the same signals as our "sysv"-init for shutdown, make reboot et al. signal pid 1 with the appropriate signal. Of these signals, only SIGINT works with sysvinit 2.88, causing a reboot. The others are only supported in Busybox init. Also, make init accept SIGINT and use xsignal().
2015-08-05Switch nbd_client to xconnect() and make xconnect() try all returned addressesRob Landley
before failing.
2015-08-05Tweak xconnect: socket can be a string (ala "ftp") from /etc/services.Rob Landley
Still need a rethink on how to handle socket/bind/connect sequence.
2015-08-03Factor out xconnect(), plus some other small cleanups to telnet.c.Rob Landley
2015-08-02Mark command-local functions static.Rob Landley
2015-08-02Long-overdue cleanup on login.Rob Landley
Only tested that it compiled so far.
2015-08-01Replace xcheckrange() with atolx_range()Rob Landley
2015-08-01Move strlower() from find to lib.Rob Landley
2015-08-01'!' replaces '/' in the sysfs paths of older drivers, so properlyIsaac Dunham
reverse that to get correct paths. While we're here, reduce the duplication of initialization. While this is enough for some drivers, it won't get 'input/' stuff in the right folder.
2015-07-24Promote fsync.Rob Landley
2015-07-24Promote hostid.Rob Landley
2015-07-24Attached are new toys.Sameer Pradhan
tftp - Client for tftp daemon. hostid -Print the numeric identifier for the current host. fsync -Synchronize a file's in-core state with storage device.
2015-07-20Fix llvm build break.0.6.0Rob Landley
2015-07-13Produce an error message for "cat /mnt", not just return code.Rob Landley
2015-07-10ifconfig MAC addresses should be lowercase.Elliott Hughes
A minor nit, but for some reason this really stands out every time I run ifconfig...
2015-07-10I added dhcpd -6 option.Yeongdeok Suh
It's for supporting ipv6, and I referred to RFC 3315 Specification http://www.rfc-base.org/txt/rfc-3315.txt There are some different kind of requests in dhcpd6, but I inplemented only a basic protocol. (Solicit - Advertise - Request - Reply) There's a sample packet as below. toybox dhcpd works in the same way. http://packetlife.net/captures/DHCPv6.cap
2015-07-10find: add -inum optionGreg Hackmann
-inum is a commonly implemented extension to search by inode number. Linux's fs-layer tracepoints log many events in terms of inodes, so "find -inum" is useful for mapping those events back to specific files.
2015-07-10Rename a function to be more obvious, and factor out a repeated calculationRob Landley
the compiler was almost certainly retaining in a register anyway.
2015-07-10Promote hwclock.Rob Landley
2015-07-10Fix hwclock -w.Elliott Hughes
The gmtime_r/localtime_r error check was backwards, and the wrong argument was being passed to the RTC_SET_TIME ioctl. Also, the error reporting was misleading (showing errno for functions that don't set errno) and too vague for the user to tell what failed.
2015-07-09There is a typo in mkfifo.c for __Z__ option.Sameer Pradhan
2015-07-08Fix ionice.Elliott Hughes
ioprio_set takes a "prio" argument that combines class and level. Although bionic (via the uapi headers) includes the appropriate constants and even a convenience macro, glibc doesn't, so just hard-code the encoding. Also fix the sense of a conditional so we actually execute the provided command.
2015-07-06Avoid integer overflow with insane input data.Rob Landley
2015-07-05Kylie McClain pointed out that -z affects both input and output.Rob Landley
Can't say I'm happy with the API (-z and -Z to keep them independent would be nice), but compatibility with what exists trumps having a good API...
2015-07-04Actually set time with touch -d and -t when you don't specify nanonseconds.Rob Landley
There's a nanoseconds field value that says use current time, which I set but forgot to clear in the right places. (Oops.)