Age | Commit message (Collapse) | Author |
|
|
|
Hi,
I've spent the half night staring at the devilish my_getpwuid and my_getgrgid functions
trying to find out a way to avoid actual and future potential buffer overflow problems
without breaking existing code.
Finally I've found a not intrusive way to do this that surely doesn't break existing code
and fixes a couple of problems too.
The attached patch:
1) changes the behaviour of my_getpwuid and my_getgrgid to avoid potetntial buffer overflows
2) fixes all occurences of this function calls in tar.c , id.c , ls.c, whoami.c, logger.c, libbb.h.
3) The behaviour of tar, ls and logger is unchanged.
4) The behavior of ps with somewhat longer usernames messing up output is fixed.
5) The only bigger change was the increasing of size of the buffers in id.c to avoid
false negatives (unknown user: xxxxxx) with usernames longer than 8 chars.
The value i used ( 32 chars ) was taken from the tar header ( see gname and uname).
Maybe this buffers can be reduced a bit ( to 16 or whatever ), this is up to you.
6) The increase of size of the binary is not so dramatic:
size busybox
text data bss dec hex filename
239568 2300 36816 278684 4409c busybox
size busybox_fixed
text data bss dec hex filename
239616 2300 36816 278732 440cc busybox
7) The behaviour of whoami changed:
actually it prints out an username cut down to the size of the buffer.
This could be fixed by increasing the size of the buffer as in id.c or
avoid the use of my_getpwuid and use getpwuid directly instead.
Maybe this colud be also remain unchanged......
Please apply if you think it is ok to do so.
The diff applies on today's cvs tarball (2004-08-25).
Thanks in advance,
Ciao,
Tito
|
|
dev_t. This is especially important now that the user space concept of a dev_t
and the kernel concept of a dev_t are divergant. The only bit of user space
allowed to know the number of major and minor bits is include/sys/sysmacros.h
(i.e. part of libc). When used with a current C library and a 2.6.x kernel,
this fix should allow BusyBox to support wide device major/minor numbers.
-Erik
|
|
s/fileno\(stdout\)/STDOUT_FILENO/g
|
|
I've noticed a bug in the "autowidth" feature more, and is probably in
others. The call to the function get_terminal_width_height() passes
in a file descriptor but that file descriptor is never used, instead
the ioctl() is called with 0. In more_main() the call to
get_terminal_width_height() passes 0 as the file descriptor instead of
fileno(cin). This isn't a problem when you more a file (e.g. "more
/etc/passwd") but when you pipe a file to it (e.g. "cat /etc/passwd |
more") the size of the terminal cannot be determined because file
descriptor 0 is not a terminal. The fix is simple, I've attached a
patch for more.c and get_terminal_width_height.c.
BAPper
|
|
|
|
|
|
There was an extra blank line preceding the first directory.
|
|
Hi, Glenn.
Current CVS "ls" applet have small problem: some options
ignoring. Last patch attached ;-)
--w
vodz
|
|
|
|
|
|
|
|
to ensure proper fallback behavior on, i.e. serial consoles.
-Erik
|
|
Latest BusyBox from CVS (Jul 7 2003).
File coreutils/ls.c
"if" at line 970 should be enclosed in #ifdef CONFIG_FEATURE_LS_SORTFILES
"if" at line 976 should be enclosed in #ifdef CONFIG_FEATURE_LS_TIMESTAMPS
|
|
I've attached my latest SE Linux patch for busybox against the latest CVS
version of busybox.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
had failed. Explicitly 0 out errno to prevent that.
|
|
color ls support, modifed by me to behave properly when not running
output to a terminal (i.e. 'ls | more')
-Erik
|
|
|
|
|
|
|
|
-Erik
|
|
-Erik
|
|
|
|
make busybox be more uClinux friendly. I also adjusted Config.h for
uClinux so it will automagically disable apps the arn't going to
work without fork() and such.
-Erik
|
|
have numbers printed as XXX.YU, so we need 6 digits not 4.
-Erik
|
|
|
|
|
|
and then fixed up df, du, and ls to use the new interface. I also
fixed up some formatting issues in ls while I was in there.
-Erik
|
|
|
|
readlink(2).
|
|
a patch was provided by Vladimir Oleynik, and am improved patch commited
by me.
|
|
|
|
shadowed variables. Move (almost) all syscalls to libbb/syscalls.c, so I can
handle them sanely and all at once.
-Erik
|
|
not going to scale up as well as I would like, and Matt Kraai and I have
discussed a better long term solution. But for now this will at least make all
the human-readable apps give correct answers.
Please test the human readable/non-human readable options on your systems!!!
-Erik
|
|
used by 'du' and 'df'. Now we just need to fix make_human_readable_str
so it behaves they way it used to before Matt fixed it.
|
|
file size. Should close bug #1140.
|
|
namespace polluting things that really should be static.
|
|
'format' function to 'make_human_readable_str'.
|
|
|
|
check this stuff in.
-Erik
|
|
-Erik
|
|
header file usage before the 0.49 release. To fix it, I had to move
the '#include "busybox.h"' to the end of the list of #include files.
-Erik
|
|
-Erik
|