aboutsummaryrefslogtreecommitdiff
path: root/main.c
AgeCommit message (Collapse)Author
2016-05-07Work around increasingly insane compiler developers wanting to make everythingRob Landley
undefined behavior so the optimizer can silently eliminate your entire program.
2016-04-10Didn't check in all my local basename_r->getbasename changes. (Oops.)Rob Landley
2016-02-10main.c: fix non-root usage when installed suid rootPatrick Ohly
When toybox is installed suid root and invoked by a non-root user for commands which do not require root privileges, it drops the root privileges during initialization. However, since commit afba5b8efd the result check of setuid() was inverted such that it aborted on success, making toybox unusuable for non-root users. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2016-02-02Release time.0.7.0Rob Landley
Calling it 0.7.0 because the fullscreen (cursor/utf8) infrasructure is in now.
2016-01-30Fix two CFG_TOYBOX_SUID corner cases:Rob Landley
1) Don't try to force re-exec unless we actually dropped permissions. (Fixes "./toybox mount" when no suid bit on toybox binary, which previously exited.) 2) Set temporary toys.which value for error reporting. (Fixes "ln -s toybox mount && ./mount" with CFG_TOYBOX_DEBUG and no suid bit, which previously segfaulted.)
2015-11-03Version 0.6.10.6.1Rob Landley
2015-09-27Another chunk of nommu support, replacing toys.recursion with toys.stacktop.Rob Landley
2015-09-11Replace toys.exithelp with help_exit() in lib.Rob Landley
2015-08-06Make multiplexer's "command not found" exit 127.Rob Landley
Somebody (carsonh on freenode) objected that they were running something like "toybox test 1 == 2" and couldn't distinguish the test failing from toybox not having the test command. Why they were running toybox out of the multiplexer instead of having a test symlink in the $PATH, I couldn't tell you. (Is "I know toybox is on this system, but don't know how it was configured" a problem people actually have?) *shrug* They care about it more than I do, so now you can't distinguish between the multiplexer not being found and the command the multiplexer tried to run not being found. Progress!
2015-07-19Tweak version number.Rob Landley
2015-05-03Replace android-specific hack with just signal(SIGPIPE, SIG_IGN).Rob Landley
2015-04-30Add default sigpipe handler for android (as suggested by Elliott Hughes).Rob Landley
2015-04-17Make toybox --version use the "git describe" info if it's available.Rob Landley
2015-04-07Adding --version broke ./toybox command list. (Oops.)Rob Landley
2015-04-05Add --version to multiplexer.Rob Landley
Can't think of a better place to stick the actual version info than a #define at the top of main. Makefile and toys.h are equally awkward, querying git tags wouldn't work if building a release tarball... watch me forget to update this when cutting a release.
2015-03-06The "no }" error with find | xargs sed is because toy_init() wasn't blanking ↵Rob Landley
the GLOBALS() block on a recursive call. (How that ever worked...)
2015-02-15Only discard optargs in toy_exec() after finding the command to run ↵Rob Landley
(otherwise the fallback exevp() segfaults).
2015-02-07Make toy_exec() check if argc is in optargs and deal with it there so we ↵Rob Landley
don't need a separate xexec_optargs().
2015-01-18Remove trailing whitespace.Rob Landley
2015-01-03Move fflush() checking to xexit() and have exit paths in main() call that.Rob Landley
2014-12-31Redo option parsing infrastructure so #define FORCE_FLAGS can unzero flag ↵Rob Landley
macros for a disabled command (needed when multiple commands share infrastructure with a common set of flags). This means the flag space is no longer packed, but leaves gaps where the zeroes go. (Actual flag bit positions are the same for all configs.) Since the option parsing needs to know where the holes are, the OPTSTR values are now generated as part of flags.h with ascii 1 values for the disabled values. (So generated/oldflags.h went away.) This also means that the option string argument for OLDTOY() went away, it now uses the same arguments as the NEWTOY() it references.
2014-11-29The "re-exec to regain root permissions" logic broke the error message when ↵Rob Landley
calling root-only commands through the multiplexer. It would say "no such command" when it should say "not root".
2014-10-26Cosmetic tweak: no trailing spaces when ./toybox lists command names.Rob Landley
2014-09-27Don't segfault for --help of single.sh build of OLDTOY commands that use ↵Rob Landley
another command's help.
2014-09-20Always call setlocale if I18N is enabled, so nested toy_exec() can switch it ↵Rob Landley
back off if necessary.
2014-09-09Two problems: 1) Sometimes toy_exec() needs to re-exec to gain dropped root ↵Rob Landley
permissions, 2) shouldn't recurse forever without exec, stack depth increases and we may leak other resources. Limit it to ~5 levels.
2014-08-31Give a hint when setuid logic fails.Rob Landley
Toybox expects to be setuid root; setuid some other user confuses the attempt to drop privileges, and we err on the side of avoiding shenanigans.
2014-06-21Forgot to check in main() part of TOYFLAG_LOCALE change.Rob Landley
2014-06-11Move toys.toycount initialization _after_ zeroing toys, so help -a works again.Rob Landley
2014-05-24The "not root" test happens before looking for --help, so "./sulogin --help" ↵Rob Landley
doesn't show it. Instead make the "not root" failure case always show help text.
2014-05-21Add generic_signal() handler, which sets toys.signal and writes byte to ↵Rob Landley
toys.signalfd if set.
2014-04-01bugfix: the multiplexer increments optc and then the command the multiplexer ↵Rob Landley
runs increments it further, resulting in a wrong count. Fix: zero it.
2014-03-28Add help -a (to show all commands) and -h (to produce HTML output).Rob Landley
2013-12-23Fix some issues raised (albeit indirectly) by Isaac Dunham.Rob Landley
POLL_IN defined as a constant by some libc. Factor out login.c's change_identity() to xwrap.c as xsetuser(). Replace xsetuid() with xsetuser() Put a space between argument globals and non-argument globals. TT starts zeroed, don't need to re-zero entries in it. STDIN_FILENO has been 0 since 1969, even DOS copied that. Just say 0. Added an xchroot() using xchdir() to lib/xwrap.c. Remove endgrent() call until somebody can explain why it was there.
2013-12-19Don't permute toys.optargs, cleanup code (xexec()) can free it.Rob Landley
2013-09-03Introduce libbuf analogous to toybuf but for use by lib/*.c. Change ↵Rob Landley
readfile() semantics to be able to read into an existing buffer, or malloc its own if that's NULL.
2013-08-30Add scripts/single.sh to build individual non-multiplexed standalone commands.Rob Landley
Alas, you can't quite do this yet: make defconfig make for i in $(./toybox) do echo $i PREFIX=singles/ scripts/single.sh $i || break done Because the OLDTOY() aliases for commands won't build without the base command. And I can't just skip them because chown/chmod or mv/cp aren't the same thing.
2013-08-21Fix --help option to multiplexer.Rob Landley
2013-07-19Start of TOYBOX_SINGLE support, for building standalone commands with no ↵Rob Landley
multiplexer.
2013-06-30Add config option for --help support in all commands.Rob Landley
2013-05-08Add --help option to toybox command when TOYBOX_HELP is enabled.Rob Landley
2013-04-21Fix some comments from way back when toybox first started (in 2006), when I ↵Rob Landley
was still cleaning busybox-isms out of my head...
2013-01-05Use basename() where appropriate.Rob Landley
2012-12-27TOYBOX_DEBUG warns about lack of suid bit when running a STAYROOT command, ↵Rob Landley
but it shouldn't warn just because the multiplexer command "toybox" is stayroot.
2012-12-23Elie De Brauwer pointed out that xputs() isn't reliably reporting errors ↵Rob Landley
because there's no flush. Rather than change the output granularity, flush before exit and check errors there. (We still need xputc() doing it so "yes" doesn't continue forever.)
2012-11-26Cleanup i18n support (#ifdefectomy, move global init to process launch). ↵Rob Landley
Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
2012-11-21Make internalization support optionalFelix Janda
2012-11-18Init global context to toybox multiplexer early so error_exit() doesn't ↵Rob Landley
segfault trying to print current command name, and change TOYBOX_DEBUG+TOYBOX_SUID complaint about not having the suid bit set to warning rather than exit..
2012-11-16Set optc when optstring NULL.Rob Landley
2012-11-16Add rebound support to intercept error_exit() and longjmp instead.Rob Landley