summaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorRobert Griebl2002-07-19 00:05:54 +0000
committerRobert Griebl2002-07-19 00:05:54 +0000
commitd378c3149c6c24e7788f04a6d20ba360f3ea407e (patch)
tree945ff88bbbde5a32c2b3342b22d801be90ea40f2 /libbb
parent88947dd05e28a3b793b16dfd6db1b5414ca99017 (diff)
downloadbusybox-d378c3149c6c24e7788f04a6d20ba360f3ea407e.zip
busybox-d378c3149c6c24e7788f04a6d20ba360f3ea407e.tar.gz
Applied vodz' patches #49 and #50 (with a small correction in runshell.c)
#49: I found one memory overflow and memory leak in "ln" applet. Last patch reduced also 54 bytes. ;) #50: I found bug in loginutils/Makefile.in. New patch have also new function to libbb and aplied this to applets and other cosmetic changes.
Diffstat (limited to 'libbb')
-rw-r--r--libbb/Makefile.in2
-rw-r--r--libbb/concat_path_file.c3
-rw-r--r--libbb/run_shell.c5
-rw-r--r--libbb/xconnect.c1
-rw-r--r--libbb/xreadlink.c3
5 files changed, 6 insertions, 8 deletions
diff --git a/libbb/Makefile.in b/libbb/Makefile.in
index 70cc26d..e7ca9aa 100644
--- a/libbb/Makefile.in
+++ b/libbb/Makefile.in
@@ -41,7 +41,7 @@ LIBBB_SRC:= \
simplify_path.c inet_common.c inode_hash.c obscure.c pwd2spwd.c xfuncs.c \
correct_password.c change_identity.c setup_environment.c run_shell.c \
pw_encrypt.c restricted_shell.c xgethostbyname2.c create_icmp6_socket.c \
- xconnect.c
+ xconnect.c bb_asprintf.c
LIBBB_OBJS=$(patsubst %.c,$(LIBBB_DIR)%.o, $(LIBBB_SRC))
diff --git a/libbb/concat_path_file.c b/libbb/concat_path_file.c
index e62b99e..0146606 100644
--- a/libbb/concat_path_file.c
+++ b/libbb/concat_path_file.c
@@ -38,8 +38,7 @@ extern char *concat_path_file(const char *path, const char *filename)
lc = last_char_is(path, '/');
while (*filename == '/')
filename++;
- outbuf = xmalloc(strlen(path)+strlen(filename)+1+(lc==NULL));
- sprintf(outbuf, "%s%s%s", path, (lc==NULL)? "/" : "", filename);
+ bb_asprintf(&outbuf, "%s%s%s", path, (lc==NULL)? "/" : "", filename);
return outbuf;
}
diff --git a/libbb/run_shell.c b/libbb/run_shell.c
index 30050fe..b26eba1 100644
--- a/libbb/run_shell.c
+++ b/libbb/run_shell.c
@@ -60,9 +60,8 @@ void run_shell ( const char *shell, int loginshell, const char *command, const c
args [0] = get_last_path_component ( xstrdup ( shell ));
if ( loginshell ) {
- char *args0 = xmalloc ( xstrlen ( args [0] ) + 2 );
- args0 [0] = '-';
- strcpy ( args0 + 1, args [0] );
+ char *args0;
+ bb_asprintf ( &args0, "-%s", args [0] );
args [0] = args0;
}
diff --git a/libbb/xconnect.c b/libbb/xconnect.c
index d6d144f..9e77149 100644
--- a/libbb/xconnect.c
+++ b/libbb/xconnect.c
@@ -6,6 +6,7 @@
*
*/
+#include "inet_common.h"
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
diff --git a/libbb/xreadlink.c b/libbb/xreadlink.c
index 932e487..9944b51 100644
--- a/libbb/xreadlink.c
+++ b/libbb/xreadlink.c
@@ -24,7 +24,7 @@ extern char *xreadlink(const char *path)
buf = xrealloc(buf, bufsize += GROWBY);
readsize = readlink(path, buf, bufsize); /* 1st try */
if (readsize == -1) {
- perror_msg("%s:%s", applet_name, path);
+ perror_msg("%s", path);
return NULL;
}
}
@@ -34,4 +34,3 @@ extern char *xreadlink(const char *path)
return buf;
}
-