#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.
This commit is contained in:
@@ -146,12 +146,8 @@ static int null (VALUE *v)
|
||||
|
||||
static void tostring (VALUE *v)
|
||||
{
|
||||
char *temp;
|
||||
|
||||
if (v->type == integer) {
|
||||
temp = xmalloc (4 * (sizeof (int) / sizeof (char)));
|
||||
sprintf (temp, "%d", v->u.i);
|
||||
v->u.s = temp;
|
||||
bb_asprintf (&(v->u.s), "%d", v->u.i);
|
||||
v->type = string;
|
||||
}
|
||||
}
|
||||
@@ -377,9 +373,7 @@ static VALUE *eval6 (void)
|
||||
else {
|
||||
v = xmalloc (sizeof(VALUE));
|
||||
v->type = string;
|
||||
v->u.s = strncpy ((char *) xmalloc (i2->u.i + 1),
|
||||
l->u.s + i1->u.i - 1, i2->u.i);
|
||||
v->u.s[i2->u.i] = 0;
|
||||
v->u.s = xstrndup(l->u.s + i1->u.i - 1, i2->u.i);
|
||||
}
|
||||
freev (l);
|
||||
freev (i1);
|
||||
|
||||
@@ -43,45 +43,47 @@ static int fs_link(const char *link_destname, const char *link_srcname,
|
||||
{
|
||||
int status;
|
||||
int src_is_dir;
|
||||
char *src_name;
|
||||
char *src_name = 0;
|
||||
const char *src;
|
||||
|
||||
if (link_destname==NULL)
|
||||
return(FALSE);
|
||||
|
||||
src_name = (char *) xmalloc(strlen(link_srcname)+strlen(link_destname)+1);
|
||||
|
||||
if (link_srcname==NULL)
|
||||
strcpy(src_name, link_destname);
|
||||
src = link_destname;
|
||||
else
|
||||
strcpy(src_name, link_srcname);
|
||||
src = link_srcname;
|
||||
|
||||
if (flag&LN_NODEREFERENCE)
|
||||
src_is_dir = is_directory(src_name, TRUE, NULL);
|
||||
src_is_dir = is_directory(src, TRUE, NULL);
|
||||
else
|
||||
src_is_dir = is_directory(src_name, FALSE, NULL);
|
||||
src_is_dir = is_directory(src, FALSE, NULL);
|
||||
|
||||
if ((src_is_dir==TRUE)&&((flag&LN_NODEREFERENCE)==0)) {
|
||||
char* srcdir_name;
|
||||
|
||||
srcdir_name = xstrdup(link_destname);
|
||||
strcat(src_name, "/");
|
||||
strcat(src_name, get_last_path_component(srcdir_name));
|
||||
src_name = concat_path_file(src, get_last_path_component(srcdir_name));
|
||||
src = src_name;
|
||||
free(srcdir_name);
|
||||
}
|
||||
|
||||
if (flag&LN_FORCE)
|
||||
unlink(src_name);
|
||||
unlink(src);
|
||||
|
||||
if (flag&LN_SYMLINK)
|
||||
status = symlink(link_destname, src_name);
|
||||
status = symlink(link_destname, src);
|
||||
else
|
||||
status = link(link_destname, src_name);
|
||||
status = link(link_destname, src);
|
||||
|
||||
if (status != 0) {
|
||||
perror_msg(src_name);
|
||||
return(FALSE);
|
||||
perror_msg(src);
|
||||
status = FALSE;
|
||||
} else {
|
||||
status = TRUE;
|
||||
}
|
||||
return(TRUE);
|
||||
free(src_name);
|
||||
return status;
|
||||
}
|
||||
|
||||
extern int ln_main(int argc, char **argv)
|
||||
|
||||
Reference in New Issue
Block a user