aboutsummaryrefslogtreecommitdiff
path: root/archival
diff options
context:
space:
mode:
authorRobert Griebl <griebl@gmx.de>2002-07-19 00:05:54 +0000
committerRobert Griebl <griebl@gmx.de>2002-07-19 00:05:54 +0000
commitd378c3149c6c24e7788f04a6d20ba360f3ea407e (patch)
tree945ff88bbbde5a32c2b3342b22d801be90ea40f2 /archival
parent88947dd05e28a3b793b16dfd6db1b5414ca99017 (diff)
downloadbusybox-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 'archival')
-rw-r--r--archival/gunzip.c3
-rw-r--r--archival/libunarchive/get_header_ar.c3
-rw-r--r--archival/libunarchive/unarchive.c4
3 files changed, 3 insertions, 7 deletions
diff --git a/archival/gunzip.c b/archival/gunzip.c
index 83ed5e84a..4ab197f09 100644
--- a/archival/gunzip.c
+++ b/archival/gunzip.c
@@ -119,8 +119,7 @@ static int gunzip_file (const char *path, int flags)
} else {
error_msg_and_die("Invalid extension");
}
- out_path = (char *) xcalloc(sizeof(char), length + 1);
- strncpy(out_path, path, length);
+ out_path = xstrndup(path, length);
/* Open output file */
out_file = xfopen(out_path, "w");
diff --git a/archival/libunarchive/get_header_ar.c b/archival/libunarchive/get_header_ar.c
index 1618b767f..f172fa7c9 100644
--- a/archival/libunarchive/get_header_ar.c
+++ b/archival/libunarchive/get_header_ar.c
@@ -91,8 +91,7 @@ file_header_t *get_header_ar(FILE *src_stream)
}
} else {
/* short filenames */
- typed->name = xcalloc(1, 16);
- strncpy(typed->name, ar.formated.name, 16);
+ typed->name = xstrndup(ar.formated.name, 16);
}
typed->name[strcspn(typed->name, " /")]='\0';
diff --git a/archival/libunarchive/unarchive.c b/archival/libunarchive/unarchive.c
index 312b498a1..03e3c3ec2 100644
--- a/archival/libunarchive/unarchive.c
+++ b/archival/libunarchive/unarchive.c
@@ -58,9 +58,7 @@ char *extract_archive(FILE *src_stream, FILE *out_stream, const file_header_t *f
return(NULL);
}
}
- full_name = xmalloc(strlen(prefix) + strlen(path) + 1);
- strcpy(full_name, prefix);
- strcat(full_name, path);
+ bb_asprintf(&full_name, "%s%s", prefix, path);
} else {
full_name = file_entry->name;
}