--- /dev/null
+diff -urpN busybox-1.12.1/coreutils/basename.c busybox-1.12.1-basename/coreutils/basename.c
+--- busybox-1.12.1/coreutils/basename.c 2008-09-28 20:04:18.000000000 +0200
++++ busybox-1.12.1-basename/coreutils/basename.c 2008-11-06 16:10:54.000000000 +0100
+@@ -48,5 +48,5 @@ int basename_main(int argc, char **argv)
+
+ /* puts(s) will do, but we can do without stdio this way: */
+ s[m++] = '\n';
+- return full_write(STDOUT_FILENO, s, m) == (ssize_t)m;
++ return full_write(STDOUT_FILENO, s, m) != (ssize_t)m;
+ }
--- /dev/null
+--- busybox-1.12.1/libbb/setup_environment.c Sun Sep 28 20:04:20 2008
++++ busybox-1.12.1-login/libbb/setup_environment.c Fri Oct 31 00:56:51 2008
+@@ -32,15 +32,15 @@
+
+ void FAST_FUNC setup_environment(const char *shell, int clear_env, int change_env, const struct passwd *pw)
+ {
++ /* Change the current working directory to be the home directory
++ * of the user */
++ if (chdir(pw->pw_dir)) {
++ xchdir("/");
++ bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir);
++ }
++
+ if (clear_env) {
+ const char *term;
+-
+- /* Change the current working directory to be the home directory
+- * of the user */
+- if (chdir(pw->pw_dir)) {
+- xchdir("/");
+- bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir);
+- }
+
+ /* Leave TERM unchanged. Set HOME, SHELL, USER, LOGNAME, PATH.
+ Unset all other environment variables. */