update buildroot to 2017.02.11
This commit is contained in:
@@ -1,87 +0,0 @@
|
||||
From dac762a702d01c8c2d42135795cc9bf23ff324a2 Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Wed, 11 Jan 2017 20:16:45 +0100
|
||||
Subject: [PATCH] wget: fix for brain-damaged HTTP servers. Closes 9471
|
||||
|
||||
write(3, "GET / HTTP/1.1\r\nUser-Agent: Wget\r\nConnection: close\r\n\r\n", 74) = 74
|
||||
shutdown(3, SHUT_WR) = 0
|
||||
alarm(900) = 900
|
||||
read(3, "", 1024) = 0
|
||||
write(2, "wget: error getting response\n", 29) = 29
|
||||
exit(1)
|
||||
|
||||
The peer simply does not return anything. It closes its connection.
|
||||
|
||||
Probably it detects wget closing its writing end: shutdown(3, SHUT_WR).
|
||||
|
||||
The point it, closing write side of the socket is _valid_ for HTTP.
|
||||
wget sent the full request, it won't be sending anything more:
|
||||
it will only receive the response, and that's it.
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
---
|
||||
networking/wget.c | 26 ++++++++++++++++++--------
|
||||
1 file changed, 18 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/networking/wget.c b/networking/wget.c
|
||||
index b082a0f59..afb09f587 100644
|
||||
--- a/networking/wget.c
|
||||
+++ b/networking/wget.c
|
||||
@@ -141,6 +141,8 @@
|
||||
#endif
|
||||
|
||||
|
||||
+#define SSL_SUPPORTED (ENABLE_FEATURE_WGET_OPENSSL || ENABLE_FEATURE_WGET_SSL_HELPER)
|
||||
+
|
||||
struct host_info {
|
||||
char *allocated;
|
||||
const char *path;
|
||||
@@ -151,7 +153,7 @@ struct host_info {
|
||||
};
|
||||
static const char P_FTP[] ALIGN1 = "ftp";
|
||||
static const char P_HTTP[] ALIGN1 = "http";
|
||||
-#if ENABLE_FEATURE_WGET_OPENSSL || ENABLE_FEATURE_WGET_SSL_HELPER
|
||||
+#if SSL_SUPPORTED
|
||||
static const char P_HTTPS[] ALIGN1 = "https";
|
||||
#endif
|
||||
|
||||
@@ -452,7 +454,7 @@ static void parse_url(const char *src_url, struct host_info *h)
|
||||
if (strcmp(url, P_FTP) == 0) {
|
||||
h->port = bb_lookup_port(P_FTP, "tcp", 21);
|
||||
} else
|
||||
-#if ENABLE_FEATURE_WGET_OPENSSL || ENABLE_FEATURE_WGET_SSL_HELPER
|
||||
+#if SSL_SUPPORTED
|
||||
if (strcmp(url, P_HTTPS) == 0) {
|
||||
h->port = bb_lookup_port(P_HTTPS, "tcp", 443);
|
||||
h->protocol = P_HTTPS;
|
||||
@@ -1093,12 +1095,20 @@ static void download_one_url(const char *url)
|
||||
}
|
||||
|
||||
fflush(sfp);
|
||||
- /* If we use SSL helper, keeping our end of the socket open for writing
|
||||
- * makes our end (i.e. the same fd!) readable (EAGAIN instead of EOF)
|
||||
- * even after child closes its copy of the fd.
|
||||
- * This helps:
|
||||
- */
|
||||
- shutdown(fileno(sfp), SHUT_WR);
|
||||
+
|
||||
+/* Tried doing this unconditionally.
|
||||
+ * Cloudflare and nginx/1.11.5 are shocked to see SHUT_WR on non-HTTPS.
|
||||
+ */
|
||||
+#if SSL_SUPPORTED
|
||||
+ if (target.protocol == P_HTTPS) {
|
||||
+ /* If we use SSL helper, keeping our end of the socket open for writing
|
||||
+ * makes our end (i.e. the same fd!) readable (EAGAIN instead of EOF)
|
||||
+ * even after child closes its copy of the fd.
|
||||
+ * This helps:
|
||||
+ */
|
||||
+ shutdown(fileno(sfp), SHUT_WR);
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Retrieve HTTP response line and check for "200" status code.
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -1,494 +0,0 @@
|
||||
From fa654812e79d2422b41cfff6443e2abcb7737517 Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Thu, 5 Jan 2017 11:43:53 +0100
|
||||
Subject: [PATCH] unzip: properly use CDF to find compressed files. Closes 9536
|
||||
|
||||
function old new delta
|
||||
unzip_main 2437 2350 -87
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
---
|
||||
archival/unzip.c | 285 +++++++++++++++++++++++++++++---------------------
|
||||
testsuite/unzip.tests | 6 +-
|
||||
2 files changed, 168 insertions(+), 123 deletions(-)
|
||||
|
||||
diff --git a/archival/unzip.c b/archival/unzip.c
|
||||
index c540485ac..edef22f75 100644
|
||||
--- a/archival/unzip.c
|
||||
+++ b/archival/unzip.c
|
||||
@@ -16,7 +16,6 @@
|
||||
* TODO
|
||||
* Zip64 + other methods
|
||||
*/
|
||||
-
|
||||
//config:config UNZIP
|
||||
//config: bool "unzip"
|
||||
//config: default y
|
||||
@@ -24,8 +23,17 @@
|
||||
//config: unzip will list or extract files from a ZIP archive,
|
||||
//config: commonly found on DOS/WIN systems. The default behavior
|
||||
//config: (with no options) is to extract the archive into the
|
||||
-//config: current directory. Use the `-d' option to extract to a
|
||||
-//config: directory of your choice.
|
||||
+//config: current directory.
|
||||
+//config:
|
||||
+//config:config FEATURE_UNZIP_CDF
|
||||
+//config: bool "Read and use Central Directory data"
|
||||
+//config: default y
|
||||
+//config: depends on UNZIP
|
||||
+//config: help
|
||||
+//config: If you know that you only need to deal with simple
|
||||
+//config: ZIP files without deleted/updated files, SFX archves etc,
|
||||
+//config: you can reduce code size by unselecting this option.
|
||||
+//config: To support less trivial ZIPs, say Y.
|
||||
|
||||
//applet:IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP))
|
||||
//kbuild:lib-$(CONFIG_UNZIP) += unzip.o
|
||||
@@ -80,30 +88,20 @@ typedef union {
|
||||
uint32_t ucmpsize PACKED; /* 18-21 */
|
||||
uint16_t filename_len; /* 22-23 */
|
||||
uint16_t extra_len; /* 24-25 */
|
||||
+ /* filename follows (not NUL terminated) */
|
||||
+ /* extra field follows */
|
||||
+ /* data follows */
|
||||
} formatted PACKED;
|
||||
} zip_header_t; /* PACKED - gcc 4.2.1 doesn't like it (spews warning) */
|
||||
|
||||
-/* Check the offset of the last element, not the length. This leniency
|
||||
- * allows for poor packing, whereby the overall struct may be too long,
|
||||
- * even though the elements are all in the right place.
|
||||
- */
|
||||
-struct BUG_zip_header_must_be_26_bytes {
|
||||
- char BUG_zip_header_must_be_26_bytes[
|
||||
- offsetof(zip_header_t, formatted.extra_len) + 2
|
||||
- == ZIP_HEADER_LEN ? 1 : -1];
|
||||
-};
|
||||
-
|
||||
-#define FIX_ENDIANNESS_ZIP(zip_header) do { \
|
||||
- (zip_header).formatted.version = SWAP_LE16((zip_header).formatted.version ); \
|
||||
- (zip_header).formatted.method = SWAP_LE16((zip_header).formatted.method ); \
|
||||
- (zip_header).formatted.modtime = SWAP_LE16((zip_header).formatted.modtime ); \
|
||||
- (zip_header).formatted.moddate = SWAP_LE16((zip_header).formatted.moddate ); \
|
||||
+#define FIX_ENDIANNESS_ZIP(zip_header) \
|
||||
+do { if (BB_BIG_ENDIAN) { \
|
||||
(zip_header).formatted.crc32 = SWAP_LE32((zip_header).formatted.crc32 ); \
|
||||
(zip_header).formatted.cmpsize = SWAP_LE32((zip_header).formatted.cmpsize ); \
|
||||
(zip_header).formatted.ucmpsize = SWAP_LE32((zip_header).formatted.ucmpsize ); \
|
||||
(zip_header).formatted.filename_len = SWAP_LE16((zip_header).formatted.filename_len); \
|
||||
(zip_header).formatted.extra_len = SWAP_LE16((zip_header).formatted.extra_len ); \
|
||||
-} while (0)
|
||||
+}} while (0)
|
||||
|
||||
#define CDF_HEADER_LEN 42
|
||||
|
||||
@@ -115,8 +113,8 @@ typedef union {
|
||||
uint16_t version_needed; /* 2-3 */
|
||||
uint16_t cdf_flags; /* 4-5 */
|
||||
uint16_t method; /* 6-7 */
|
||||
- uint16_t mtime; /* 8-9 */
|
||||
- uint16_t mdate; /* 10-11 */
|
||||
+ uint16_t modtime; /* 8-9 */
|
||||
+ uint16_t moddate; /* 10-11 */
|
||||
uint32_t crc32; /* 12-15 */
|
||||
uint32_t cmpsize; /* 16-19 */
|
||||
uint32_t ucmpsize; /* 20-23 */
|
||||
@@ -127,27 +125,27 @@ typedef union {
|
||||
uint16_t internal_file_attributes; /* 32-33 */
|
||||
uint32_t external_file_attributes PACKED; /* 34-37 */
|
||||
uint32_t relative_offset_of_local_header PACKED; /* 38-41 */
|
||||
+ /* filename follows (not NUL terminated) */
|
||||
+ /* extra field follows */
|
||||
+ /* comment follows */
|
||||
} formatted PACKED;
|
||||
} cdf_header_t;
|
||||
|
||||
-struct BUG_cdf_header_must_be_42_bytes {
|
||||
- char BUG_cdf_header_must_be_42_bytes[
|
||||
- offsetof(cdf_header_t, formatted.relative_offset_of_local_header) + 4
|
||||
- == CDF_HEADER_LEN ? 1 : -1];
|
||||
-};
|
||||
-
|
||||
-#define FIX_ENDIANNESS_CDF(cdf_header) do { \
|
||||
+#define FIX_ENDIANNESS_CDF(cdf_header) \
|
||||
+do { if (BB_BIG_ENDIAN) { \
|
||||
+ (cdf_header).formatted.version_made_by = SWAP_LE16((cdf_header).formatted.version_made_by); \
|
||||
+ (cdf_header).formatted.version_needed = SWAP_LE16((cdf_header).formatted.version_needed); \
|
||||
+ (cdf_header).formatted.method = SWAP_LE16((cdf_header).formatted.method ); \
|
||||
+ (cdf_header).formatted.modtime = SWAP_LE16((cdf_header).formatted.modtime ); \
|
||||
+ (cdf_header).formatted.moddate = SWAP_LE16((cdf_header).formatted.moddate ); \
|
||||
(cdf_header).formatted.crc32 = SWAP_LE32((cdf_header).formatted.crc32 ); \
|
||||
(cdf_header).formatted.cmpsize = SWAP_LE32((cdf_header).formatted.cmpsize ); \
|
||||
(cdf_header).formatted.ucmpsize = SWAP_LE32((cdf_header).formatted.ucmpsize ); \
|
||||
(cdf_header).formatted.file_name_length = SWAP_LE16((cdf_header).formatted.file_name_length); \
|
||||
(cdf_header).formatted.extra_field_length = SWAP_LE16((cdf_header).formatted.extra_field_length); \
|
||||
(cdf_header).formatted.file_comment_length = SWAP_LE16((cdf_header).formatted.file_comment_length); \
|
||||
- IF_DESKTOP( \
|
||||
- (cdf_header).formatted.version_made_by = SWAP_LE16((cdf_header).formatted.version_made_by); \
|
||||
(cdf_header).formatted.external_file_attributes = SWAP_LE32((cdf_header).formatted.external_file_attributes); \
|
||||
- ) \
|
||||
-} while (0)
|
||||
+}} while (0)
|
||||
|
||||
#define CDE_HEADER_LEN 16
|
||||
|
||||
@@ -166,20 +164,38 @@ typedef union {
|
||||
} formatted PACKED;
|
||||
} cde_header_t;
|
||||
|
||||
-struct BUG_cde_header_must_be_16_bytes {
|
||||
+#define FIX_ENDIANNESS_CDE(cde_header) \
|
||||
+do { if (BB_BIG_ENDIAN) { \
|
||||
+ (cde_header).formatted.cdf_offset = SWAP_LE32((cde_header).formatted.cdf_offset); \
|
||||
+}} while (0)
|
||||
+
|
||||
+struct BUG {
|
||||
+ /* Check the offset of the last element, not the length. This leniency
|
||||
+ * allows for poor packing, whereby the overall struct may be too long,
|
||||
+ * even though the elements are all in the right place.
|
||||
+ */
|
||||
+ char BUG_zip_header_must_be_26_bytes[
|
||||
+ offsetof(zip_header_t, formatted.extra_len) + 2
|
||||
+ == ZIP_HEADER_LEN ? 1 : -1];
|
||||
+ char BUG_cdf_header_must_be_42_bytes[
|
||||
+ offsetof(cdf_header_t, formatted.relative_offset_of_local_header) + 4
|
||||
+ == CDF_HEADER_LEN ? 1 : -1];
|
||||
char BUG_cde_header_must_be_16_bytes[
|
||||
sizeof(cde_header_t) == CDE_HEADER_LEN ? 1 : -1];
|
||||
};
|
||||
|
||||
-#define FIX_ENDIANNESS_CDE(cde_header) do { \
|
||||
- (cde_header).formatted.cdf_offset = SWAP_LE32((cde_header).formatted.cdf_offset); \
|
||||
-} while (0)
|
||||
|
||||
enum { zip_fd = 3 };
|
||||
|
||||
|
||||
-#if ENABLE_DESKTOP
|
||||
+/* This value means that we failed to find CDF */
|
||||
+#define BAD_CDF_OFFSET ((uint32_t)0xffffffff)
|
||||
+
|
||||
+#if !ENABLE_FEATURE_UNZIP_CDF
|
||||
|
||||
+# define find_cdf_offset() BAD_CDF_OFFSET
|
||||
+
|
||||
+#else
|
||||
/* Seen in the wild:
|
||||
* Self-extracting PRO2K3XP_32.exe contains 19078464 byte zip archive,
|
||||
* where CDE was nearly 48 kbytes before EOF.
|
||||
@@ -188,25 +204,26 @@ enum { zip_fd = 3 };
|
||||
* To make extraction work, bumped PEEK_FROM_END from 16k to 64k.
|
||||
*/
|
||||
#define PEEK_FROM_END (64*1024)
|
||||
-
|
||||
-/* This value means that we failed to find CDF */
|
||||
-#define BAD_CDF_OFFSET ((uint32_t)0xffffffff)
|
||||
-
|
||||
/* NB: does not preserve file position! */
|
||||
static uint32_t find_cdf_offset(void)
|
||||
{
|
||||
cde_header_t cde_header;
|
||||
+ unsigned char *buf;
|
||||
unsigned char *p;
|
||||
off_t end;
|
||||
- unsigned char *buf = xzalloc(PEEK_FROM_END);
|
||||
uint32_t found;
|
||||
|
||||
- end = xlseek(zip_fd, 0, SEEK_END);
|
||||
+ end = lseek(zip_fd, 0, SEEK_END);
|
||||
+ if (end == (off_t) -1)
|
||||
+ return BAD_CDF_OFFSET;
|
||||
+
|
||||
end -= PEEK_FROM_END;
|
||||
if (end < 0)
|
||||
end = 0;
|
||||
+
|
||||
dbg("Looking for cdf_offset starting from 0x%"OFF_FMT"x", end);
|
||||
xlseek(zip_fd, end, SEEK_SET);
|
||||
+ buf = xzalloc(PEEK_FROM_END);
|
||||
full_read(zip_fd, buf, PEEK_FROM_END);
|
||||
|
||||
found = BAD_CDF_OFFSET;
|
||||
@@ -252,30 +269,36 @@ static uint32_t find_cdf_offset(void)
|
||||
static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr)
|
||||
{
|
||||
off_t org;
|
||||
+ uint32_t magic;
|
||||
|
||||
- org = xlseek(zip_fd, 0, SEEK_CUR);
|
||||
+ if (cdf_offset == BAD_CDF_OFFSET)
|
||||
+ return cdf_offset;
|
||||
|
||||
- if (!cdf_offset)
|
||||
- cdf_offset = find_cdf_offset();
|
||||
-
|
||||
- if (cdf_offset != BAD_CDF_OFFSET) {
|
||||
- dbg("Reading CDF at 0x%x", (unsigned)cdf_offset);
|
||||
- xlseek(zip_fd, cdf_offset + 4, SEEK_SET);
|
||||
- xread(zip_fd, cdf_ptr->raw, CDF_HEADER_LEN);
|
||||
- FIX_ENDIANNESS_CDF(*cdf_ptr);
|
||||
- dbg(" file_name_length:%u extra_field_length:%u file_comment_length:%u",
|
||||
- (unsigned)cdf_ptr->formatted.file_name_length,
|
||||
- (unsigned)cdf_ptr->formatted.extra_field_length,
|
||||
- (unsigned)cdf_ptr->formatted.file_comment_length
|
||||
- );
|
||||
- cdf_offset += 4 + CDF_HEADER_LEN
|
||||
- + cdf_ptr->formatted.file_name_length
|
||||
- + cdf_ptr->formatted.extra_field_length
|
||||
- + cdf_ptr->formatted.file_comment_length;
|
||||
+ org = xlseek(zip_fd, 0, SEEK_CUR);
|
||||
+ dbg("Reading CDF at 0x%x", (unsigned)cdf_offset);
|
||||
+ xlseek(zip_fd, cdf_offset, SEEK_SET);
|
||||
+ xread(zip_fd, &magic, 4);
|
||||
+ /* Central Directory End? */
|
||||
+ if (magic == ZIP_CDE_MAGIC) {
|
||||
+ dbg("got ZIP_CDE_MAGIC");
|
||||
+ return 0; /* EOF */
|
||||
}
|
||||
+ xread(zip_fd, cdf_ptr->raw, CDF_HEADER_LEN);
|
||||
+ /* Caller doesn't need this: */
|
||||
+ /* dbg("Returning file position to 0x%"OFF_FMT"x", org); */
|
||||
+ /* xlseek(zip_fd, org, SEEK_SET); */
|
||||
+
|
||||
+ FIX_ENDIANNESS_CDF(*cdf_ptr);
|
||||
+ dbg(" file_name_length:%u extra_field_length:%u file_comment_length:%u",
|
||||
+ (unsigned)cdf_ptr->formatted.file_name_length,
|
||||
+ (unsigned)cdf_ptr->formatted.extra_field_length,
|
||||
+ (unsigned)cdf_ptr->formatted.file_comment_length
|
||||
+ );
|
||||
+ cdf_offset += 4 + CDF_HEADER_LEN
|
||||
+ + cdf_ptr->formatted.file_name_length
|
||||
+ + cdf_ptr->formatted.extra_field_length
|
||||
+ + cdf_ptr->formatted.file_comment_length;
|
||||
|
||||
- dbg("Returning file position to 0x%"OFF_FMT"x", org);
|
||||
- xlseek(zip_fd, org, SEEK_SET);
|
||||
return cdf_offset;
|
||||
};
|
||||
#endif
|
||||
@@ -324,6 +347,7 @@ static void unzip_extract(zip_header_t *zip_header, int dst_fd)
|
||||
bb_error_msg("bad length");
|
||||
}
|
||||
}
|
||||
+ /* TODO? method 12: bzip2, method 14: LZMA */
|
||||
}
|
||||
|
||||
static void my_fgets80(char *buf80)
|
||||
@@ -339,15 +363,12 @@ int unzip_main(int argc, char **argv)
|
||||
{
|
||||
enum { O_PROMPT, O_NEVER, O_ALWAYS };
|
||||
|
||||
- zip_header_t zip_header;
|
||||
smallint quiet = 0;
|
||||
- IF_NOT_DESKTOP(const) smallint verbose = 0;
|
||||
+ IF_NOT_FEATURE_UNZIP_CDF(const) smallint verbose = 0;
|
||||
smallint listing = 0;
|
||||
smallint overwrite = O_PROMPT;
|
||||
smallint x_opt_seen;
|
||||
-#if ENABLE_DESKTOP
|
||||
uint32_t cdf_offset;
|
||||
-#endif
|
||||
unsigned long total_usize;
|
||||
unsigned long total_size;
|
||||
unsigned total_entries;
|
||||
@@ -430,7 +451,7 @@ int unzip_main(int argc, char **argv)
|
||||
break;
|
||||
|
||||
case 'v': /* Verbose list */
|
||||
- IF_DESKTOP(verbose++;)
|
||||
+ IF_FEATURE_UNZIP_CDF(verbose++;)
|
||||
listing = 1;
|
||||
break;
|
||||
|
||||
@@ -545,78 +566,102 @@ int unzip_main(int argc, char **argv)
|
||||
total_usize = 0;
|
||||
total_size = 0;
|
||||
total_entries = 0;
|
||||
-#if ENABLE_DESKTOP
|
||||
- cdf_offset = 0;
|
||||
-#endif
|
||||
+ cdf_offset = find_cdf_offset(); /* try to seek to the end, find CDE and CDF start */
|
||||
while (1) {
|
||||
- uint32_t magic;
|
||||
+ zip_header_t zip_header;
|
||||
mode_t dir_mode = 0777;
|
||||
-#if ENABLE_DESKTOP
|
||||
+#if ENABLE_FEATURE_UNZIP_CDF
|
||||
mode_t file_mode = 0666;
|
||||
#endif
|
||||
|
||||
- /* Check magic number */
|
||||
- xread(zip_fd, &magic, 4);
|
||||
- /* Central directory? It's at the end, so exit */
|
||||
- if (magic == ZIP_CDF_MAGIC) {
|
||||
- dbg("got ZIP_CDF_MAGIC");
|
||||
- break;
|
||||
- }
|
||||
-#if ENABLE_DESKTOP
|
||||
- /* Data descriptor? It was a streaming file, go on */
|
||||
- if (magic == ZIP_DD_MAGIC) {
|
||||
- dbg("got ZIP_DD_MAGIC");
|
||||
- /* skip over duplicate crc32, cmpsize and ucmpsize */
|
||||
- unzip_skip(3 * 4);
|
||||
- continue;
|
||||
- }
|
||||
-#endif
|
||||
- if (magic != ZIP_FILEHEADER_MAGIC)
|
||||
- bb_error_msg_and_die("invalid zip magic %08X", (int)magic);
|
||||
- dbg("got ZIP_FILEHEADER_MAGIC");
|
||||
-
|
||||
- /* Read the file header */
|
||||
- xread(zip_fd, zip_header.raw, ZIP_HEADER_LEN);
|
||||
- FIX_ENDIANNESS_ZIP(zip_header);
|
||||
- if ((zip_header.formatted.method != 0) && (zip_header.formatted.method != 8)) {
|
||||
- bb_error_msg_and_die("unsupported method %d", zip_header.formatted.method);
|
||||
- }
|
||||
-#if !ENABLE_DESKTOP
|
||||
- if (zip_header.formatted.zip_flags & SWAP_LE16(0x0009)) {
|
||||
- bb_error_msg_and_die("zip flags 1 and 8 are not supported");
|
||||
- }
|
||||
-#else
|
||||
- if (zip_header.formatted.zip_flags & SWAP_LE16(0x0001)) {
|
||||
- /* 0x0001 - encrypted */
|
||||
- bb_error_msg_and_die("zip flag 1 (encryption) is not supported");
|
||||
- }
|
||||
+ if (!ENABLE_FEATURE_UNZIP_CDF || cdf_offset == BAD_CDF_OFFSET) {
|
||||
+ /* Normally happens when input is unseekable.
|
||||
+ *
|
||||
+ * Valid ZIP file has Central Directory at the end
|
||||
+ * with central directory file headers (CDFs).
|
||||
+ * After it, there is a Central Directory End structure.
|
||||
+ * CDFs identify what files are in the ZIP and where
|
||||
+ * they are located. This allows ZIP readers to load
|
||||
+ * the list of files without reading the entire ZIP archive.
|
||||
+ * ZIP files may be appended to, only files specified in
|
||||
+ * the CD are valid. Scanning for local file headers is
|
||||
+ * not a correct algorithm.
|
||||
+ *
|
||||
+ * We try to do the above, and resort to "linear" reading
|
||||
+ * of ZIP file only if seek failed or CDE wasn't found.
|
||||
+ */
|
||||
+ uint32_t magic;
|
||||
|
||||
- if (cdf_offset != BAD_CDF_OFFSET) {
|
||||
+ /* Check magic number */
|
||||
+ xread(zip_fd, &magic, 4);
|
||||
+ /* Central directory? It's at the end, so exit */
|
||||
+ if (magic == ZIP_CDF_MAGIC) {
|
||||
+ dbg("got ZIP_CDF_MAGIC");
|
||||
+ break;
|
||||
+ }
|
||||
+ /* Data descriptor? It was a streaming file, go on */
|
||||
+ if (magic == ZIP_DD_MAGIC) {
|
||||
+ dbg("got ZIP_DD_MAGIC");
|
||||
+ /* skip over duplicate crc32, cmpsize and ucmpsize */
|
||||
+ unzip_skip(3 * 4);
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (magic != ZIP_FILEHEADER_MAGIC)
|
||||
+ bb_error_msg_and_die("invalid zip magic %08X", (int)magic);
|
||||
+ dbg("got ZIP_FILEHEADER_MAGIC");
|
||||
+
|
||||
+ xread(zip_fd, zip_header.raw, ZIP_HEADER_LEN);
|
||||
+ FIX_ENDIANNESS_ZIP(zip_header);
|
||||
+ if ((zip_header.formatted.method != 0)
|
||||
+ && (zip_header.formatted.method != 8)
|
||||
+ ) {
|
||||
+ /* TODO? method 12: bzip2, method 14: LZMA */
|
||||
+ bb_error_msg_and_die("unsupported method %d", zip_header.formatted.method);
|
||||
+ }
|
||||
+ if (zip_header.formatted.zip_flags & SWAP_LE16(0x0009)) {
|
||||
+ bb_error_msg_and_die("zip flags 1 and 8 are not supported");
|
||||
+ }
|
||||
+ }
|
||||
+#if ENABLE_FEATURE_UNZIP_CDF
|
||||
+ else {
|
||||
+ /* cdf_offset is valid (and we know the file is seekable) */
|
||||
cdf_header_t cdf_header;
|
||||
cdf_offset = read_next_cdf(cdf_offset, &cdf_header);
|
||||
- /*
|
||||
- * Note: cdf_offset can become BAD_CDF_OFFSET after the above call.
|
||||
- */
|
||||
+ if (cdf_offset == 0) /* EOF? */
|
||||
+ break;
|
||||
+# if 0
|
||||
+ xlseek(zip_fd,
|
||||
+ SWAP_LE32(cdf_header.formatted.relative_offset_of_local_header) + 4,
|
||||
+ SEEK_SET);
|
||||
+ xread(zip_fd, zip_header.raw, ZIP_HEADER_LEN);
|
||||
+ FIX_ENDIANNESS_ZIP(zip_header);
|
||||
if (zip_header.formatted.zip_flags & SWAP_LE16(0x0008)) {
|
||||
/* 0x0008 - streaming. [u]cmpsize can be reliably gotten
|
||||
- * only from Central Directory. See unzip_doc.txt
|
||||
+ * only from Central Directory.
|
||||
*/
|
||||
zip_header.formatted.crc32 = cdf_header.formatted.crc32;
|
||||
zip_header.formatted.cmpsize = cdf_header.formatted.cmpsize;
|
||||
zip_header.formatted.ucmpsize = cdf_header.formatted.ucmpsize;
|
||||
}
|
||||
+# else
|
||||
+ /* CDF has the same data as local header, no need to read the latter */
|
||||
+ memcpy(&zip_header.formatted.version,
|
||||
+ &cdf_header.formatted.version_needed, ZIP_HEADER_LEN);
|
||||
+ xlseek(zip_fd,
|
||||
+ SWAP_LE32(cdf_header.formatted.relative_offset_of_local_header) + 4 + ZIP_HEADER_LEN,
|
||||
+ SEEK_SET);
|
||||
+# endif
|
||||
if ((cdf_header.formatted.version_made_by >> 8) == 3) {
|
||||
/* This archive is created on Unix */
|
||||
dir_mode = file_mode = (cdf_header.formatted.external_file_attributes >> 16);
|
||||
}
|
||||
}
|
||||
- if (cdf_offset == BAD_CDF_OFFSET
|
||||
- && (zip_header.formatted.zip_flags & SWAP_LE16(0x0008))
|
||||
- ) {
|
||||
- /* If it's a streaming zip, we _require_ CDF */
|
||||
- bb_error_msg_and_die("can't find file table");
|
||||
- }
|
||||
#endif
|
||||
+
|
||||
+ if (zip_header.formatted.zip_flags & SWAP_LE16(0x0001)) {
|
||||
+ /* 0x0001 - encrypted */
|
||||
+ bb_error_msg_and_die("zip flag 1 (encryption) is not supported");
|
||||
+ }
|
||||
dbg("File cmpsize:0x%x extra_len:0x%x ucmpsize:0x%x",
|
||||
(unsigned)zip_header.formatted.cmpsize,
|
||||
(unsigned)zip_header.formatted.extra_len,
|
||||
@@ -751,7 +796,7 @@ int unzip_main(int argc, char **argv)
|
||||
overwrite = O_ALWAYS;
|
||||
case 'y': /* Open file and fall into unzip */
|
||||
unzip_create_leading_dirs(dst_fn);
|
||||
-#if ENABLE_DESKTOP
|
||||
+#if ENABLE_FEATURE_UNZIP_CDF
|
||||
dst_fd = xopen3(dst_fn, O_WRONLY | O_CREAT | O_TRUNC, file_mode);
|
||||
#else
|
||||
dst_fd = xopen(dst_fn, O_WRONLY | O_CREAT | O_TRUNC);
|
||||
diff --git a/testsuite/unzip.tests b/testsuite/unzip.tests
|
||||
index d8738a3bd..d9c45242c 100755
|
||||
--- a/testsuite/unzip.tests
|
||||
+++ b/testsuite/unzip.tests
|
||||
@@ -31,11 +31,10 @@ rmdir foo
|
||||
rm foo.zip
|
||||
|
||||
# File containing some damaged encrypted stream
|
||||
+optional FEATURE_UNZIP_CDF
|
||||
testing "unzip (bad archive)" "uudecode; unzip bad.zip 2>&1; echo \$?" \
|
||||
"Archive: bad.zip
|
||||
- inflating: ]3j½r«IK-%Ix
|
||||
-unzip: corrupted data
|
||||
-unzip: inflate error
|
||||
+unzip: short read
|
||||
1
|
||||
" \
|
||||
"" "\
|
||||
@@ -49,6 +48,7 @@ BDYAAAAMAAEADQAAADIADQAAAEEAAAASw73Ct1DKokohPXQiNzA+FAI1HCcW
|
||||
NzITNFBLBQUKAC4JAA04Cw0EOhZQSwUGAQAABAIAAgCZAAAAeQAAAAIALhM=
|
||||
====
|
||||
"
|
||||
+SKIP=
|
||||
|
||||
rm *
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 4316dff48aacb29307e1b52cb761fef603759b9d Mon Sep 17 00:00:00 2001
|
||||
From 2b400d9b2b7309d6e479102fc3ce646e893058a5 Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Mon, 18 Sep 2017 13:09:11 +0200
|
||||
Subject: [PATCH] httpd: fix handling of range requests
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/networking/httpd.c b/networking/httpd.c
|
||||
index d301d598d..84d819723 100644
|
||||
index e072f23c7..5e32fc936 100644
|
||||
--- a/networking/httpd.c
|
||||
+++ b/networking/httpd.c
|
||||
@@ -2337,7 +2337,7 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
|
||||
@@ -1,27 +0,0 @@
|
||||
From f8692dc6a0035788a83821fa18b987d8748f97a7 Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Thu, 5 Jan 2017 11:47:28 +0100
|
||||
Subject: [PATCH] typo fix in config help text
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
---
|
||||
archival/unzip.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/archival/unzip.c b/archival/unzip.c
|
||||
index edef22f75..f1726439d 100644
|
||||
--- a/archival/unzip.c
|
||||
+++ b/archival/unzip.c
|
||||
@@ -31,7 +31,7 @@
|
||||
//config: depends on UNZIP
|
||||
//config: help
|
||||
//config: If you know that you only need to deal with simple
|
||||
-//config: ZIP files without deleted/updated files, SFX archves etc,
|
||||
+//config: ZIP files without deleted/updated files, SFX archives etc,
|
||||
//config: you can reduce code size by unselecting this option.
|
||||
//config: To support less trivial ZIPs, say Y.
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
From 0402cb32df015d9372578e3db27db47b33d5c7b0 Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Sun, 22 Oct 2017 18:23:23 +0200
|
||||
Subject: [PATCH] bunzip2: fix runCnt overflow from bug 10431
|
||||
|
||||
This particular corrupted file can be dealth with by using "unsigned".
|
||||
If there will be cases where it genuinely overflows, there is a disabled
|
||||
code to deal with that too.
|
||||
|
||||
function old new delta
|
||||
get_next_block 1678 1667 -11
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Patch status: upstream commit 0402cb32df0
|
||||
|
||||
archival/libarchive/decompress_bunzip2.c | 30 +++++++++++++++++++-----------
|
||||
1 file changed, 19 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/archival/libarchive/decompress_bunzip2.c b/archival/libarchive/decompress_bunzip2.c
|
||||
index 7cd18f5ed4cf..bec89edd3a4d 100644
|
||||
--- a/archival/libarchive/decompress_bunzip2.c
|
||||
+++ b/archival/libarchive/decompress_bunzip2.c
|
||||
@@ -156,15 +156,15 @@ static unsigned get_bits(bunzip_data *bd, int bits_wanted)
|
||||
static int get_next_block(bunzip_data *bd)
|
||||
{
|
||||
struct group_data *hufGroup;
|
||||
- int dbufCount, dbufSize, groupCount, *base, *limit, selector,
|
||||
- i, j, runPos, symCount, symTotal, nSelectors, byteCount[256];
|
||||
- int runCnt = runCnt; /* for compiler */
|
||||
+ int groupCount, *base, *limit, selector,
|
||||
+ i, j, symCount, symTotal, nSelectors, byteCount[256];
|
||||
uint8_t uc, symToByte[256], mtfSymbol[256], *selectors;
|
||||
uint32_t *dbuf;
|
||||
unsigned origPtr, t;
|
||||
+ unsigned dbufCount, runPos;
|
||||
+ unsigned runCnt = runCnt; /* for compiler */
|
||||
|
||||
dbuf = bd->dbuf;
|
||||
- dbufSize = bd->dbufSize;
|
||||
selectors = bd->selectors;
|
||||
|
||||
/* In bbox, we are ok with aborting through setjmp which is set up in start_bunzip */
|
||||
@@ -187,7 +187,7 @@ static int get_next_block(bunzip_data *bd)
|
||||
it didn't actually work. */
|
||||
if (get_bits(bd, 1)) return RETVAL_OBSOLETE_INPUT;
|
||||
origPtr = get_bits(bd, 24);
|
||||
- if ((int)origPtr > dbufSize) return RETVAL_DATA_ERROR;
|
||||
+ if (origPtr > bd->dbufSize) return RETVAL_DATA_ERROR;
|
||||
|
||||
/* mapping table: if some byte values are never used (encoding things
|
||||
like ascii text), the compression code removes the gaps to have fewer
|
||||
@@ -435,7 +435,14 @@ static int get_next_block(bunzip_data *bd)
|
||||
symbols, but a run of length 0 doesn't mean anything in this
|
||||
context). Thus space is saved. */
|
||||
runCnt += (runPos << nextSym); /* +runPos if RUNA; +2*runPos if RUNB */
|
||||
- if (runPos < dbufSize) runPos <<= 1;
|
||||
+//The 32-bit overflow of runCnt wasn't yet seen, but probably can happen.
|
||||
+//This would be the fix (catches too large count way before it can overflow):
|
||||
+// if (runCnt > bd->dbufSize) {
|
||||
+// dbg("runCnt:%u > dbufSize:%u RETVAL_DATA_ERROR",
|
||||
+// runCnt, bd->dbufSize);
|
||||
+// return RETVAL_DATA_ERROR;
|
||||
+// }
|
||||
+ if (runPos < bd->dbufSize) runPos <<= 1;
|
||||
goto end_of_huffman_loop;
|
||||
}
|
||||
|
||||
@@ -445,14 +452,15 @@ static int get_next_block(bunzip_data *bd)
|
||||
literal used is the one at the head of the mtfSymbol array.) */
|
||||
if (runPos != 0) {
|
||||
uint8_t tmp_byte;
|
||||
- if (dbufCount + runCnt > dbufSize) {
|
||||
- dbg("dbufCount:%d+runCnt:%d %d > dbufSize:%d RETVAL_DATA_ERROR",
|
||||
- dbufCount, runCnt, dbufCount + runCnt, dbufSize);
|
||||
+ if (dbufCount + runCnt > bd->dbufSize) {
|
||||
+ dbg("dbufCount:%u+runCnt:%u %u > dbufSize:%u RETVAL_DATA_ERROR",
|
||||
+ dbufCount, runCnt, dbufCount + runCnt, bd->dbufSize);
|
||||
return RETVAL_DATA_ERROR;
|
||||
}
|
||||
tmp_byte = symToByte[mtfSymbol[0]];
|
||||
byteCount[tmp_byte] += runCnt;
|
||||
- while (--runCnt >= 0) dbuf[dbufCount++] = (uint32_t)tmp_byte;
|
||||
+ while ((int)--runCnt >= 0)
|
||||
+ dbuf[dbufCount++] = (uint32_t)tmp_byte;
|
||||
runPos = 0;
|
||||
}
|
||||
|
||||
@@ -466,7 +474,7 @@ static int get_next_block(bunzip_data *bd)
|
||||
first symbol in the mtf array, position 0, would have been handled
|
||||
as part of a run above. Therefore 1 unused mtf position minus
|
||||
2 non-literal nextSym values equals -1.) */
|
||||
- if (dbufCount >= dbufSize) return RETVAL_DATA_ERROR;
|
||||
+ if (dbufCount >= bd->dbufSize) return RETVAL_DATA_ERROR;
|
||||
i = nextSym - 1;
|
||||
uc = mtfSymbol[i];
|
||||
|
||||
--
|
||||
2.15.1
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
From 50504d3a3badb8ab80bd33797abcbb3b7427c267 Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ionescu-Idbohrn <cristian.ionescu-idbohrn@axis.com>
|
||||
Date: Thu, 5 Jan 2017 19:07:54 +0100
|
||||
Subject: [PATCH] unzip: remove now-pointless lseek which returns current
|
||||
position
|
||||
|
||||
archival/unzip.c: In function 'read_next_cdf':
|
||||
archival/unzip.c:271:8: warning: variable 'org' set but
|
||||
not used [-Wunused-but-set-variable]
|
||||
off_t org;
|
||||
^~~
|
||||
|
||||
Signed-off-by: Cristian Ionescu-Idbohrn <cristian.ionescu-idbohrn@axis.com>
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
---
|
||||
archival/unzip.c | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/archival/unzip.c b/archival/unzip.c
|
||||
index f1726439d..98a71c09d 100644
|
||||
--- a/archival/unzip.c
|
||||
+++ b/archival/unzip.c
|
||||
@@ -268,13 +268,11 @@ static uint32_t find_cdf_offset(void)
|
||||
|
||||
static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr)
|
||||
{
|
||||
- off_t org;
|
||||
uint32_t magic;
|
||||
|
||||
if (cdf_offset == BAD_CDF_OFFSET)
|
||||
return cdf_offset;
|
||||
|
||||
- org = xlseek(zip_fd, 0, SEEK_CUR);
|
||||
dbg("Reading CDF at 0x%x", (unsigned)cdf_offset);
|
||||
xlseek(zip_fd, cdf_offset, SEEK_SET);
|
||||
xread(zip_fd, &magic, 4);
|
||||
@@ -284,9 +282,6 @@ static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr)
|
||||
return 0; /* EOF */
|
||||
}
|
||||
xread(zip_fd, cdf_ptr->raw, CDF_HEADER_LEN);
|
||||
- /* Caller doesn't need this: */
|
||||
- /* dbg("Returning file position to 0x%"OFF_FMT"x", org); */
|
||||
- /* xlseek(zip_fd, org, SEEK_SET); */
|
||||
|
||||
FIX_ENDIANNESS_CDF(*cdf_ptr);
|
||||
dbg(" file_name_length:%u extra_field_length:%u file_comment_length:%u",
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
From 9ac42c500586fa5f10a1f6d22c3f797df11b1f6b Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Fri, 27 Oct 2017 15:37:03 +0200
|
||||
Subject: [PATCH] unlzma: fix SEGV, closes 10436
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Patch status: upstream commit 9ac42c500586f
|
||||
|
||||
archival/libarchive/decompress_unlzma.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/archival/libarchive/decompress_unlzma.c b/archival/libarchive/decompress_unlzma.c
|
||||
index a9040877efa0..be4342414435 100644
|
||||
--- a/archival/libarchive/decompress_unlzma.c
|
||||
+++ b/archival/libarchive/decompress_unlzma.c
|
||||
@@ -450,8 +450,12 @@ unpack_lzma_stream(transformer_state_t *xstate)
|
||||
IF_NOT_FEATURE_LZMA_FAST(string:)
|
||||
do {
|
||||
uint32_t pos = buffer_pos - rep0;
|
||||
- if ((int32_t)pos < 0)
|
||||
+ if ((int32_t)pos < 0) {
|
||||
pos += header.dict_size;
|
||||
+ /* bug 10436 has an example file where this triggers: */
|
||||
+ if ((int32_t)pos < 0)
|
||||
+ goto bad;
|
||||
+ }
|
||||
previous_byte = buffer[pos];
|
||||
IF_NOT_FEATURE_LZMA_FAST(one_byte2:)
|
||||
buffer[buffer_pos++] = previous_byte;
|
||||
--
|
||||
2.15.1
|
||||
|
||||
@@ -1,509 +0,0 @@
|
||||
From ee72302ac5e3b0b2217f616ab316d3c89e5a1f4c Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Sun, 8 Jan 2017 14:14:19 +0100
|
||||
Subject: [PATCH] unzip: do not use CDF.extra_len, read local file header.
|
||||
Closes 9536
|
||||
|
||||
While at it, shorten many field and variable names.
|
||||
|
||||
function old new delta
|
||||
unzip_main 2334 2376 +42
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
---
|
||||
archival/unzip.c | 236 ++++++++++++++++++++++++++------------------------
|
||||
testsuite/unzip.tests | 4 +-
|
||||
2 files changed, 125 insertions(+), 115 deletions(-)
|
||||
|
||||
diff --git a/archival/unzip.c b/archival/unzip.c
|
||||
index 98a71c09d..921493591 100644
|
||||
--- a/archival/unzip.c
|
||||
+++ b/archival/unzip.c
|
||||
@@ -62,8 +62,8 @@
|
||||
enum {
|
||||
#if BB_BIG_ENDIAN
|
||||
ZIP_FILEHEADER_MAGIC = 0x504b0304,
|
||||
- ZIP_CDF_MAGIC = 0x504b0102, /* central directory's file header */
|
||||
- ZIP_CDE_MAGIC = 0x504b0506, /* "end of central directory" record */
|
||||
+ ZIP_CDF_MAGIC = 0x504b0102, /* CDF item */
|
||||
+ ZIP_CDE_MAGIC = 0x504b0506, /* End of CDF */
|
||||
ZIP_DD_MAGIC = 0x504b0708,
|
||||
#else
|
||||
ZIP_FILEHEADER_MAGIC = 0x04034b50,
|
||||
@@ -91,16 +91,16 @@ typedef union {
|
||||
/* filename follows (not NUL terminated) */
|
||||
/* extra field follows */
|
||||
/* data follows */
|
||||
- } formatted PACKED;
|
||||
+ } fmt PACKED;
|
||||
} zip_header_t; /* PACKED - gcc 4.2.1 doesn't like it (spews warning) */
|
||||
|
||||
-#define FIX_ENDIANNESS_ZIP(zip_header) \
|
||||
+#define FIX_ENDIANNESS_ZIP(zip) \
|
||||
do { if (BB_BIG_ENDIAN) { \
|
||||
- (zip_header).formatted.crc32 = SWAP_LE32((zip_header).formatted.crc32 ); \
|
||||
- (zip_header).formatted.cmpsize = SWAP_LE32((zip_header).formatted.cmpsize ); \
|
||||
- (zip_header).formatted.ucmpsize = SWAP_LE32((zip_header).formatted.ucmpsize ); \
|
||||
- (zip_header).formatted.filename_len = SWAP_LE16((zip_header).formatted.filename_len); \
|
||||
- (zip_header).formatted.extra_len = SWAP_LE16((zip_header).formatted.extra_len ); \
|
||||
+ (zip).fmt.crc32 = SWAP_LE32((zip).fmt.crc32 ); \
|
||||
+ (zip).fmt.cmpsize = SWAP_LE32((zip).fmt.cmpsize ); \
|
||||
+ (zip).fmt.ucmpsize = SWAP_LE32((zip).fmt.ucmpsize ); \
|
||||
+ (zip).fmt.filename_len = SWAP_LE16((zip).fmt.filename_len); \
|
||||
+ (zip).fmt.extra_len = SWAP_LE16((zip).fmt.extra_len ); \
|
||||
}} while (0)
|
||||
|
||||
#define CDF_HEADER_LEN 42
|
||||
@@ -118,39 +118,39 @@ typedef union {
|
||||
uint32_t crc32; /* 12-15 */
|
||||
uint32_t cmpsize; /* 16-19 */
|
||||
uint32_t ucmpsize; /* 20-23 */
|
||||
- uint16_t file_name_length; /* 24-25 */
|
||||
- uint16_t extra_field_length; /* 26-27 */
|
||||
+ uint16_t filename_len; /* 24-25 */
|
||||
+ uint16_t extra_len; /* 26-27 */
|
||||
uint16_t file_comment_length; /* 28-29 */
|
||||
uint16_t disk_number_start; /* 30-31 */
|
||||
- uint16_t internal_file_attributes; /* 32-33 */
|
||||
- uint32_t external_file_attributes PACKED; /* 34-37 */
|
||||
+ uint16_t internal_attributes; /* 32-33 */
|
||||
+ uint32_t external_attributes PACKED; /* 34-37 */
|
||||
uint32_t relative_offset_of_local_header PACKED; /* 38-41 */
|
||||
/* filename follows (not NUL terminated) */
|
||||
/* extra field follows */
|
||||
- /* comment follows */
|
||||
- } formatted PACKED;
|
||||
+ /* file comment follows */
|
||||
+ } fmt PACKED;
|
||||
} cdf_header_t;
|
||||
|
||||
-#define FIX_ENDIANNESS_CDF(cdf_header) \
|
||||
+#define FIX_ENDIANNESS_CDF(cdf) \
|
||||
do { if (BB_BIG_ENDIAN) { \
|
||||
- (cdf_header).formatted.version_made_by = SWAP_LE16((cdf_header).formatted.version_made_by); \
|
||||
- (cdf_header).formatted.version_needed = SWAP_LE16((cdf_header).formatted.version_needed); \
|
||||
- (cdf_header).formatted.method = SWAP_LE16((cdf_header).formatted.method ); \
|
||||
- (cdf_header).formatted.modtime = SWAP_LE16((cdf_header).formatted.modtime ); \
|
||||
- (cdf_header).formatted.moddate = SWAP_LE16((cdf_header).formatted.moddate ); \
|
||||
- (cdf_header).formatted.crc32 = SWAP_LE32((cdf_header).formatted.crc32 ); \
|
||||
- (cdf_header).formatted.cmpsize = SWAP_LE32((cdf_header).formatted.cmpsize ); \
|
||||
- (cdf_header).formatted.ucmpsize = SWAP_LE32((cdf_header).formatted.ucmpsize ); \
|
||||
- (cdf_header).formatted.file_name_length = SWAP_LE16((cdf_header).formatted.file_name_length); \
|
||||
- (cdf_header).formatted.extra_field_length = SWAP_LE16((cdf_header).formatted.extra_field_length); \
|
||||
- (cdf_header).formatted.file_comment_length = SWAP_LE16((cdf_header).formatted.file_comment_length); \
|
||||
- (cdf_header).formatted.external_file_attributes = SWAP_LE32((cdf_header).formatted.external_file_attributes); \
|
||||
+ (cdf).fmt.version_made_by = SWAP_LE16((cdf).fmt.version_made_by); \
|
||||
+ (cdf).fmt.version_needed = SWAP_LE16((cdf).fmt.version_needed); \
|
||||
+ (cdf).fmt.method = SWAP_LE16((cdf).fmt.method ); \
|
||||
+ (cdf).fmt.modtime = SWAP_LE16((cdf).fmt.modtime ); \
|
||||
+ (cdf).fmt.moddate = SWAP_LE16((cdf).fmt.moddate ); \
|
||||
+ (cdf).fmt.crc32 = SWAP_LE32((cdf).fmt.crc32 ); \
|
||||
+ (cdf).fmt.cmpsize = SWAP_LE32((cdf).fmt.cmpsize ); \
|
||||
+ (cdf).fmt.ucmpsize = SWAP_LE32((cdf).fmt.ucmpsize ); \
|
||||
+ (cdf).fmt.filename_len = SWAP_LE16((cdf).fmt.filename_len); \
|
||||
+ (cdf).fmt.extra_len = SWAP_LE16((cdf).fmt.extra_len ); \
|
||||
+ (cdf).fmt.file_comment_length = SWAP_LE16((cdf).fmt.file_comment_length); \
|
||||
+ (cdf).fmt.external_attributes = SWAP_LE32((cdf).fmt.external_attributes); \
|
||||
}} while (0)
|
||||
|
||||
-#define CDE_HEADER_LEN 16
|
||||
+#define CDE_LEN 16
|
||||
|
||||
typedef union {
|
||||
- uint8_t raw[CDE_HEADER_LEN];
|
||||
+ uint8_t raw[CDE_LEN];
|
||||
struct {
|
||||
/* uint32_t signature; 50 4b 05 06 */
|
||||
uint16_t this_disk_no;
|
||||
@@ -159,14 +159,14 @@ typedef union {
|
||||
uint16_t cdf_entries_total;
|
||||
uint32_t cdf_size;
|
||||
uint32_t cdf_offset;
|
||||
- /* uint16_t file_comment_length; */
|
||||
- /* .ZIP file comment (variable size) */
|
||||
- } formatted PACKED;
|
||||
-} cde_header_t;
|
||||
+ /* uint16_t archive_comment_length; */
|
||||
+ /* archive comment follows */
|
||||
+ } fmt PACKED;
|
||||
+} cde_t;
|
||||
|
||||
-#define FIX_ENDIANNESS_CDE(cde_header) \
|
||||
+#define FIX_ENDIANNESS_CDE(cde) \
|
||||
do { if (BB_BIG_ENDIAN) { \
|
||||
- (cde_header).formatted.cdf_offset = SWAP_LE32((cde_header).formatted.cdf_offset); \
|
||||
+ (cde).fmt.cdf_offset = SWAP_LE32((cde).fmt.cdf_offset); \
|
||||
}} while (0)
|
||||
|
||||
struct BUG {
|
||||
@@ -175,13 +175,13 @@ struct BUG {
|
||||
* even though the elements are all in the right place.
|
||||
*/
|
||||
char BUG_zip_header_must_be_26_bytes[
|
||||
- offsetof(zip_header_t, formatted.extra_len) + 2
|
||||
+ offsetof(zip_header_t, fmt.extra_len) + 2
|
||||
== ZIP_HEADER_LEN ? 1 : -1];
|
||||
char BUG_cdf_header_must_be_42_bytes[
|
||||
- offsetof(cdf_header_t, formatted.relative_offset_of_local_header) + 4
|
||||
+ offsetof(cdf_header_t, fmt.relative_offset_of_local_header) + 4
|
||||
== CDF_HEADER_LEN ? 1 : -1];
|
||||
- char BUG_cde_header_must_be_16_bytes[
|
||||
- sizeof(cde_header_t) == CDE_HEADER_LEN ? 1 : -1];
|
||||
+ char BUG_cde_must_be_16_bytes[
|
||||
+ sizeof(cde_t) == CDE_LEN ? 1 : -1];
|
||||
};
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@ enum { zip_fd = 3 };
|
||||
/* NB: does not preserve file position! */
|
||||
static uint32_t find_cdf_offset(void)
|
||||
{
|
||||
- cde_header_t cde_header;
|
||||
+ cde_t cde;
|
||||
unsigned char *buf;
|
||||
unsigned char *p;
|
||||
off_t end;
|
||||
@@ -228,7 +228,7 @@ static uint32_t find_cdf_offset(void)
|
||||
|
||||
found = BAD_CDF_OFFSET;
|
||||
p = buf;
|
||||
- while (p <= buf + PEEK_FROM_END - CDE_HEADER_LEN - 4) {
|
||||
+ while (p <= buf + PEEK_FROM_END - CDE_LEN - 4) {
|
||||
if (*p != 'P') {
|
||||
p++;
|
||||
continue;
|
||||
@@ -240,19 +240,19 @@ static uint32_t find_cdf_offset(void)
|
||||
if (*++p != 6)
|
||||
continue;
|
||||
/* we found CDE! */
|
||||
- memcpy(cde_header.raw, p + 1, CDE_HEADER_LEN);
|
||||
- FIX_ENDIANNESS_CDE(cde_header);
|
||||
+ memcpy(cde.raw, p + 1, CDE_LEN);
|
||||
+ FIX_ENDIANNESS_CDE(cde);
|
||||
/*
|
||||
* I've seen .ZIP files with seemingly valid CDEs
|
||||
* where cdf_offset points past EOF - ??
|
||||
* This check ignores such CDEs:
|
||||
*/
|
||||
- if (cde_header.formatted.cdf_offset < end + (p - buf)) {
|
||||
- found = cde_header.formatted.cdf_offset;
|
||||
+ if (cde.fmt.cdf_offset < end + (p - buf)) {
|
||||
+ found = cde.fmt.cdf_offset;
|
||||
dbg("Possible cdf_offset:0x%x at 0x%"OFF_FMT"x",
|
||||
(unsigned)found, end + (p-3 - buf));
|
||||
dbg(" cdf_offset+cdf_size:0x%x",
|
||||
- (unsigned)(found + SWAP_LE32(cde_header.formatted.cdf_size)));
|
||||
+ (unsigned)(found + SWAP_LE32(cde.fmt.cdf_size)));
|
||||
/*
|
||||
* We do not "break" here because only the last CDE is valid.
|
||||
* I've seen a .zip archive which contained a .zip file,
|
||||
@@ -266,7 +266,7 @@ static uint32_t find_cdf_offset(void)
|
||||
return found;
|
||||
};
|
||||
|
||||
-static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr)
|
||||
+static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf)
|
||||
{
|
||||
uint32_t magic;
|
||||
|
||||
@@ -276,23 +276,25 @@ static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr)
|
||||
dbg("Reading CDF at 0x%x", (unsigned)cdf_offset);
|
||||
xlseek(zip_fd, cdf_offset, SEEK_SET);
|
||||
xread(zip_fd, &magic, 4);
|
||||
- /* Central Directory End? */
|
||||
+ /* Central Directory End? Assume CDF has ended.
|
||||
+ * (more correct method is to use cde.cdf_entries_total counter)
|
||||
+ */
|
||||
if (magic == ZIP_CDE_MAGIC) {
|
||||
dbg("got ZIP_CDE_MAGIC");
|
||||
return 0; /* EOF */
|
||||
}
|
||||
- xread(zip_fd, cdf_ptr->raw, CDF_HEADER_LEN);
|
||||
+ xread(zip_fd, cdf->raw, CDF_HEADER_LEN);
|
||||
|
||||
- FIX_ENDIANNESS_CDF(*cdf_ptr);
|
||||
- dbg(" file_name_length:%u extra_field_length:%u file_comment_length:%u",
|
||||
- (unsigned)cdf_ptr->formatted.file_name_length,
|
||||
- (unsigned)cdf_ptr->formatted.extra_field_length,
|
||||
- (unsigned)cdf_ptr->formatted.file_comment_length
|
||||
+ FIX_ENDIANNESS_CDF(*cdf);
|
||||
+ dbg(" filename_len:%u extra_len:%u file_comment_length:%u",
|
||||
+ (unsigned)cdf->fmt.filename_len,
|
||||
+ (unsigned)cdf->fmt.extra_len,
|
||||
+ (unsigned)cdf->fmt.file_comment_length
|
||||
);
|
||||
cdf_offset += 4 + CDF_HEADER_LEN
|
||||
- + cdf_ptr->formatted.file_name_length
|
||||
- + cdf_ptr->formatted.extra_field_length
|
||||
- + cdf_ptr->formatted.file_comment_length;
|
||||
+ + cdf->fmt.filename_len
|
||||
+ + cdf->fmt.extra_len
|
||||
+ + cdf->fmt.file_comment_length;
|
||||
|
||||
return cdf_offset;
|
||||
};
|
||||
@@ -315,28 +317,28 @@ static void unzip_create_leading_dirs(const char *fn)
|
||||
free(name);
|
||||
}
|
||||
|
||||
-static void unzip_extract(zip_header_t *zip_header, int dst_fd)
|
||||
+static void unzip_extract(zip_header_t *zip, int dst_fd)
|
||||
{
|
||||
- if (zip_header->formatted.method == 0) {
|
||||
+ if (zip->fmt.method == 0) {
|
||||
/* Method 0 - stored (not compressed) */
|
||||
- off_t size = zip_header->formatted.ucmpsize;
|
||||
+ off_t size = zip->fmt.ucmpsize;
|
||||
if (size)
|
||||
bb_copyfd_exact_size(zip_fd, dst_fd, size);
|
||||
} else {
|
||||
/* Method 8 - inflate */
|
||||
transformer_state_t xstate;
|
||||
init_transformer_state(&xstate);
|
||||
- xstate.bytes_in = zip_header->formatted.cmpsize;
|
||||
+ xstate.bytes_in = zip->fmt.cmpsize;
|
||||
xstate.src_fd = zip_fd;
|
||||
xstate.dst_fd = dst_fd;
|
||||
if (inflate_unzip(&xstate) < 0)
|
||||
bb_error_msg_and_die("inflate error");
|
||||
/* Validate decompression - crc */
|
||||
- if (zip_header->formatted.crc32 != (xstate.crc32 ^ 0xffffffffL)) {
|
||||
+ if (zip->fmt.crc32 != (xstate.crc32 ^ 0xffffffffL)) {
|
||||
bb_error_msg_and_die("crc error");
|
||||
}
|
||||
/* Validate decompression - size */
|
||||
- if (zip_header->formatted.ucmpsize != xstate.bytes_out) {
|
||||
+ if (zip->fmt.ucmpsize != xstate.bytes_out) {
|
||||
/* Don't die. Who knows, maybe len calculation
|
||||
* was botched somewhere. After all, crc matched! */
|
||||
bb_error_msg("bad length");
|
||||
@@ -563,7 +565,7 @@ int unzip_main(int argc, char **argv)
|
||||
total_entries = 0;
|
||||
cdf_offset = find_cdf_offset(); /* try to seek to the end, find CDE and CDF start */
|
||||
while (1) {
|
||||
- zip_header_t zip_header;
|
||||
+ zip_header_t zip;
|
||||
mode_t dir_mode = 0777;
|
||||
#if ENABLE_FEATURE_UNZIP_CDF
|
||||
mode_t file_mode = 0666;
|
||||
@@ -589,7 +591,7 @@ int unzip_main(int argc, char **argv)
|
||||
|
||||
/* Check magic number */
|
||||
xread(zip_fd, &magic, 4);
|
||||
- /* Central directory? It's at the end, so exit */
|
||||
+ /* CDF item? Assume there are no more files, exit */
|
||||
if (magic == ZIP_CDF_MAGIC) {
|
||||
dbg("got ZIP_CDF_MAGIC");
|
||||
break;
|
||||
@@ -605,71 +607,74 @@ int unzip_main(int argc, char **argv)
|
||||
bb_error_msg_and_die("invalid zip magic %08X", (int)magic);
|
||||
dbg("got ZIP_FILEHEADER_MAGIC");
|
||||
|
||||
- xread(zip_fd, zip_header.raw, ZIP_HEADER_LEN);
|
||||
- FIX_ENDIANNESS_ZIP(zip_header);
|
||||
- if ((zip_header.formatted.method != 0)
|
||||
- && (zip_header.formatted.method != 8)
|
||||
+ xread(zip_fd, zip.raw, ZIP_HEADER_LEN);
|
||||
+ FIX_ENDIANNESS_ZIP(zip);
|
||||
+ if ((zip.fmt.method != 0)
|
||||
+ && (zip.fmt.method != 8)
|
||||
) {
|
||||
/* TODO? method 12: bzip2, method 14: LZMA */
|
||||
- bb_error_msg_and_die("unsupported method %d", zip_header.formatted.method);
|
||||
+ bb_error_msg_and_die("unsupported method %d", zip.fmt.method);
|
||||
}
|
||||
- if (zip_header.formatted.zip_flags & SWAP_LE16(0x0009)) {
|
||||
+ if (zip.fmt.zip_flags & SWAP_LE16(0x0009)) {
|
||||
bb_error_msg_and_die("zip flags 1 and 8 are not supported");
|
||||
}
|
||||
}
|
||||
#if ENABLE_FEATURE_UNZIP_CDF
|
||||
else {
|
||||
/* cdf_offset is valid (and we know the file is seekable) */
|
||||
- cdf_header_t cdf_header;
|
||||
- cdf_offset = read_next_cdf(cdf_offset, &cdf_header);
|
||||
+ cdf_header_t cdf;
|
||||
+ cdf_offset = read_next_cdf(cdf_offset, &cdf);
|
||||
if (cdf_offset == 0) /* EOF? */
|
||||
break;
|
||||
-# if 0
|
||||
+# if 1
|
||||
xlseek(zip_fd,
|
||||
- SWAP_LE32(cdf_header.formatted.relative_offset_of_local_header) + 4,
|
||||
+ SWAP_LE32(cdf.fmt.relative_offset_of_local_header) + 4,
|
||||
SEEK_SET);
|
||||
- xread(zip_fd, zip_header.raw, ZIP_HEADER_LEN);
|
||||
- FIX_ENDIANNESS_ZIP(zip_header);
|
||||
- if (zip_header.formatted.zip_flags & SWAP_LE16(0x0008)) {
|
||||
+ xread(zip_fd, zip.raw, ZIP_HEADER_LEN);
|
||||
+ FIX_ENDIANNESS_ZIP(zip);
|
||||
+ if (zip.fmt.zip_flags & SWAP_LE16(0x0008)) {
|
||||
/* 0x0008 - streaming. [u]cmpsize can be reliably gotten
|
||||
* only from Central Directory.
|
||||
*/
|
||||
- zip_header.formatted.crc32 = cdf_header.formatted.crc32;
|
||||
- zip_header.formatted.cmpsize = cdf_header.formatted.cmpsize;
|
||||
- zip_header.formatted.ucmpsize = cdf_header.formatted.ucmpsize;
|
||||
+ zip.fmt.crc32 = cdf.fmt.crc32;
|
||||
+ zip.fmt.cmpsize = cdf.fmt.cmpsize;
|
||||
+ zip.fmt.ucmpsize = cdf.fmt.ucmpsize;
|
||||
}
|
||||
# else
|
||||
- /* CDF has the same data as local header, no need to read the latter */
|
||||
- memcpy(&zip_header.formatted.version,
|
||||
- &cdf_header.formatted.version_needed, ZIP_HEADER_LEN);
|
||||
+ /* CDF has the same data as local header, no need to read the latter...
|
||||
+ * ...not really. An archive was seen with cdf.extra_len == 6 but
|
||||
+ * zip.extra_len == 0.
|
||||
+ */
|
||||
+ memcpy(&zip.fmt.version,
|
||||
+ &cdf.fmt.version_needed, ZIP_HEADER_LEN);
|
||||
xlseek(zip_fd,
|
||||
- SWAP_LE32(cdf_header.formatted.relative_offset_of_local_header) + 4 + ZIP_HEADER_LEN,
|
||||
+ SWAP_LE32(cdf.fmt.relative_offset_of_local_header) + 4 + ZIP_HEADER_LEN,
|
||||
SEEK_SET);
|
||||
# endif
|
||||
- if ((cdf_header.formatted.version_made_by >> 8) == 3) {
|
||||
+ if ((cdf.fmt.version_made_by >> 8) == 3) {
|
||||
/* This archive is created on Unix */
|
||||
- dir_mode = file_mode = (cdf_header.formatted.external_file_attributes >> 16);
|
||||
+ dir_mode = file_mode = (cdf.fmt.external_attributes >> 16);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
- if (zip_header.formatted.zip_flags & SWAP_LE16(0x0001)) {
|
||||
+ if (zip.fmt.zip_flags & SWAP_LE16(0x0001)) {
|
||||
/* 0x0001 - encrypted */
|
||||
bb_error_msg_and_die("zip flag 1 (encryption) is not supported");
|
||||
}
|
||||
dbg("File cmpsize:0x%x extra_len:0x%x ucmpsize:0x%x",
|
||||
- (unsigned)zip_header.formatted.cmpsize,
|
||||
- (unsigned)zip_header.formatted.extra_len,
|
||||
- (unsigned)zip_header.formatted.ucmpsize
|
||||
+ (unsigned)zip.fmt.cmpsize,
|
||||
+ (unsigned)zip.fmt.extra_len,
|
||||
+ (unsigned)zip.fmt.ucmpsize
|
||||
);
|
||||
|
||||
/* Read filename */
|
||||
free(dst_fn);
|
||||
- dst_fn = xzalloc(zip_header.formatted.filename_len + 1);
|
||||
- xread(zip_fd, dst_fn, zip_header.formatted.filename_len);
|
||||
+ dst_fn = xzalloc(zip.fmt.filename_len + 1);
|
||||
+ xread(zip_fd, dst_fn, zip.fmt.filename_len);
|
||||
|
||||
/* Skip extra header bytes */
|
||||
- unzip_skip(zip_header.formatted.extra_len);
|
||||
+ unzip_skip(zip.fmt.extra_len);
|
||||
|
||||
/* Guard against "/abspath", "/../" and similar attacks */
|
||||
overlapping_strcpy(dst_fn, strip_unsafe_prefix(dst_fn));
|
||||
@@ -684,32 +689,32 @@ int unzip_main(int argc, char **argv)
|
||||
/* List entry */
|
||||
char dtbuf[sizeof("mm-dd-yyyy hh:mm")];
|
||||
sprintf(dtbuf, "%02u-%02u-%04u %02u:%02u",
|
||||
- (zip_header.formatted.moddate >> 5) & 0xf, // mm: 0x01e0
|
||||
- (zip_header.formatted.moddate) & 0x1f, // dd: 0x001f
|
||||
- (zip_header.formatted.moddate >> 9) + 1980, // yy: 0xfe00
|
||||
- (zip_header.formatted.modtime >> 11), // hh: 0xf800
|
||||
- (zip_header.formatted.modtime >> 5) & 0x3f // mm: 0x07e0
|
||||
- // seconds/2 are not shown, encoded in ----------- 0x001f
|
||||
+ (zip.fmt.moddate >> 5) & 0xf, // mm: 0x01e0
|
||||
+ (zip.fmt.moddate) & 0x1f, // dd: 0x001f
|
||||
+ (zip.fmt.moddate >> 9) + 1980, // yy: 0xfe00
|
||||
+ (zip.fmt.modtime >> 11), // hh: 0xf800
|
||||
+ (zip.fmt.modtime >> 5) & 0x3f // mm: 0x07e0
|
||||
+ // seconds/2 not shown, encoded in -- 0x001f
|
||||
);
|
||||
if (!verbose) {
|
||||
// " Length Date Time Name\n"
|
||||
// "--------- ---------- ----- ----"
|
||||
printf( "%9u " "%s " "%s\n",
|
||||
- (unsigned)zip_header.formatted.ucmpsize,
|
||||
+ (unsigned)zip.fmt.ucmpsize,
|
||||
dtbuf,
|
||||
dst_fn);
|
||||
} else {
|
||||
- unsigned long percents = zip_header.formatted.ucmpsize - zip_header.formatted.cmpsize;
|
||||
+ unsigned long percents = zip.fmt.ucmpsize - zip.fmt.cmpsize;
|
||||
if ((int32_t)percents < 0)
|
||||
percents = 0; /* happens if ucmpsize < cmpsize */
|
||||
percents = percents * 100;
|
||||
- if (zip_header.formatted.ucmpsize)
|
||||
- percents /= zip_header.formatted.ucmpsize;
|
||||
+ if (zip.fmt.ucmpsize)
|
||||
+ percents /= zip.fmt.ucmpsize;
|
||||
// " Length Method Size Cmpr Date Time CRC-32 Name\n"
|
||||
// "-------- ------ ------- ---- ---------- ----- -------- ----"
|
||||
printf( "%8u %s" "%9u%4u%% " "%s " "%08x " "%s\n",
|
||||
- (unsigned)zip_header.formatted.ucmpsize,
|
||||
- zip_header.formatted.method == 0 ? "Stored" : "Defl:N", /* Defl is method 8 */
|
||||
+ (unsigned)zip.fmt.ucmpsize,
|
||||
+ zip.fmt.method == 0 ? "Stored" : "Defl:N", /* Defl is method 8 */
|
||||
/* TODO: show other methods?
|
||||
* 1 - Shrunk
|
||||
* 2 - Reduced with compression factor 1
|
||||
@@ -722,15 +727,16 @@ int unzip_main(int argc, char **argv)
|
||||
* 10 - PKWARE Data Compression Library Imploding
|
||||
* 11 - Reserved by PKWARE
|
||||
* 12 - BZIP2
|
||||
+ * 14 - LZMA
|
||||
*/
|
||||
- (unsigned)zip_header.formatted.cmpsize,
|
||||
+ (unsigned)zip.fmt.cmpsize,
|
||||
(unsigned)percents,
|
||||
dtbuf,
|
||||
- zip_header.formatted.crc32,
|
||||
+ zip.fmt.crc32,
|
||||
dst_fn);
|
||||
- total_size += zip_header.formatted.cmpsize;
|
||||
+ total_size += zip.fmt.cmpsize;
|
||||
}
|
||||
- total_usize += zip_header.formatted.ucmpsize;
|
||||
+ total_usize += zip.fmt.ucmpsize;
|
||||
i = 'n';
|
||||
} else if (dst_fd == STDOUT_FILENO) {
|
||||
/* Extracting to STDOUT */
|
||||
@@ -798,9 +804,11 @@ int unzip_main(int argc, char **argv)
|
||||
#endif
|
||||
case -1: /* Unzip */
|
||||
if (!quiet) {
|
||||
- printf(" inflating: %s\n", dst_fn);
|
||||
+ printf(/* zip.fmt.method == 0
|
||||
+ ? " extracting: %s\n"
|
||||
+ : */ " inflating: %s\n", dst_fn);
|
||||
}
|
||||
- unzip_extract(&zip_header, dst_fd);
|
||||
+ unzip_extract(&zip, dst_fd);
|
||||
if (dst_fd != STDOUT_FILENO) {
|
||||
/* closing STDOUT is potentially bad for future business */
|
||||
close(dst_fd);
|
||||
@@ -811,7 +819,7 @@ int unzip_main(int argc, char **argv)
|
||||
overwrite = O_NEVER;
|
||||
case 'n':
|
||||
/* Skip entry data */
|
||||
- unzip_skip(zip_header.formatted.cmpsize);
|
||||
+ unzip_skip(zip.fmt.cmpsize);
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
diff --git a/testsuite/unzip.tests b/testsuite/unzip.tests
|
||||
index d9c45242c..2e4becdb8 100755
|
||||
--- a/testsuite/unzip.tests
|
||||
+++ b/testsuite/unzip.tests
|
||||
@@ -34,7 +34,9 @@ rm foo.zip
|
||||
optional FEATURE_UNZIP_CDF
|
||||
testing "unzip (bad archive)" "uudecode; unzip bad.zip 2>&1; echo \$?" \
|
||||
"Archive: bad.zip
|
||||
-unzip: short read
|
||||
+ inflating: ]3j½r«IK-%Ix
|
||||
+unzip: corrupted data
|
||||
+unzip: inflate error
|
||||
1
|
||||
" \
|
||||
"" "\
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Busybox version: 1.26.0
|
||||
# Thu Dec 29 21:13:55 2016
|
||||
# Busybox version: 1.27.1
|
||||
# Sun Jul 30 15:42:11 2017
|
||||
#
|
||||
CONFIG_HAVE_DOT_CONFIG=y
|
||||
|
||||
@@ -12,7 +12,6 @@ CONFIG_HAVE_DOT_CONFIG=y
|
||||
# CONFIG_EXTRA_COMPAT is not set
|
||||
CONFIG_INCLUDE_SUSv2=y
|
||||
# CONFIG_USE_PORTABLE_CODE is not set
|
||||
CONFIG_PLATFORM_LINUX=y
|
||||
# CONFIG_SHOW_USAGE is not set
|
||||
# CONFIG_FEATURE_VERBOSE_USAGE is not set
|
||||
# CONFIG_FEATURE_COMPRESS_USAGE is not set
|
||||
@@ -35,13 +34,14 @@ CONFIG_FEATURE_SUID=y
|
||||
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
|
||||
CONFIG_FEATURE_SYSLOG=y
|
||||
# CONFIG_FEATURE_HAVE_RPC is not set
|
||||
CONFIG_PLATFORM_LINUX=y
|
||||
|
||||
#
|
||||
# Build Options
|
||||
#
|
||||
CONFIG_STATIC=y
|
||||
# CONFIG_PIE is not set
|
||||
CONFIG_NOMMU=y
|
||||
# CONFIG_NOMMU is not set
|
||||
# CONFIG_BUILD_LIBBUSYBOX is not set
|
||||
# CONFIG_FEATURE_INDIVIDUAL is not set
|
||||
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
|
||||
@@ -89,7 +89,6 @@ CONFIG_MD5_SMALL=1
|
||||
CONFIG_SHA3_SMALL=1
|
||||
# CONFIG_FEATURE_FAST_TOP is not set
|
||||
# CONFIG_FEATURE_ETC_NETWORKS is not set
|
||||
CONFIG_FEATURE_USE_TERMIOS=y
|
||||
CONFIG_FEATURE_EDITING=y
|
||||
CONFIG_FEATURE_EDITING_MAX_LEN=1024
|
||||
CONFIG_FEATURE_EDITING_VI=y
|
||||
@@ -150,6 +149,7 @@ CONFIG_LZCAT=y
|
||||
CONFIG_XZCAT=y
|
||||
# CONFIG_XZ is not set
|
||||
# CONFIG_BZIP2 is not set
|
||||
CONFIG_FEATURE_BZIP2_DECOMPRESS=y
|
||||
# CONFIG_CPIO is not set
|
||||
# CONFIG_FEATURE_CPIO_O is not set
|
||||
# CONFIG_FEATURE_CPIO_P is not set
|
||||
@@ -159,6 +159,7 @@ CONFIG_XZCAT=y
|
||||
# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set
|
||||
CONFIG_GZIP_FAST=0
|
||||
# CONFIG_FEATURE_GZIP_LEVELS is not set
|
||||
CONFIG_FEATURE_GZIP_DECOMPRESS=y
|
||||
# CONFIG_LZOP is not set
|
||||
CONFIG_UNLZOP=y
|
||||
CONFIG_LZOPCAT=y
|
||||
@@ -166,26 +167,29 @@ CONFIG_LZOPCAT=y
|
||||
# CONFIG_RPM2CPIO is not set
|
||||
# CONFIG_RPM is not set
|
||||
# CONFIG_TAR is not set
|
||||
# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
|
||||
# CONFIG_FEATURE_TAR_CREATE is not set
|
||||
# CONFIG_FEATURE_TAR_AUTODETECT is not set
|
||||
# CONFIG_FEATURE_TAR_FROM is not set
|
||||
# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
|
||||
# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
|
||||
# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set
|
||||
# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
|
||||
# CONFIG_FEATURE_TAR_TO_COMMAND is not set
|
||||
# CONFIG_FEATURE_TAR_UNAME_GNAME is not set
|
||||
# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set
|
||||
# CONFIG_FEATURE_TAR_SELINUX is not set
|
||||
# CONFIG_UNZIP is not set
|
||||
# CONFIG_FEATURE_UNZIP_CDF is not set
|
||||
# CONFIG_FEATURE_UNZIP_BZIP2 is not set
|
||||
# CONFIG_FEATURE_UNZIP_LZMA is not set
|
||||
# CONFIG_FEATURE_UNZIP_XZ is not set
|
||||
|
||||
#
|
||||
# Coreutils
|
||||
#
|
||||
CONFIG_BASENAME=y
|
||||
# CONFIG_CAL is not set
|
||||
CONFIG_CAT=y
|
||||
CONFIG_CATV=y
|
||||
CONFIG_FEATURE_CATV=y
|
||||
CONFIG_CHGRP=y
|
||||
CONFIG_CHMOD=y
|
||||
CONFIG_CHOWN=y
|
||||
@@ -222,6 +226,7 @@ CONFIG_ENV=y
|
||||
# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
|
||||
CONFIG_EXPR=y
|
||||
CONFIG_EXPR_MATH_SUPPORT_64=y
|
||||
CONFIG_FACTOR=y
|
||||
CONFIG_FALSE=y
|
||||
CONFIG_FOLD=y
|
||||
# CONFIG_FSYNC is not set
|
||||
@@ -232,12 +237,14 @@ CONFIG_ID=y
|
||||
# CONFIG_GROUPS is not set
|
||||
CONFIG_INSTALL=y
|
||||
CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
|
||||
CONFIG_LINK=y
|
||||
CONFIG_LN=y
|
||||
CONFIG_LOGNAME=y
|
||||
CONFIG_LS=y
|
||||
CONFIG_FEATURE_LS_FILETYPES=y
|
||||
CONFIG_FEATURE_LS_FOLLOWLINKS=y
|
||||
CONFIG_FEATURE_LS_RECURSIVE=y
|
||||
CONFIG_FEATURE_LS_WIDTH=y
|
||||
CONFIG_FEATURE_LS_SORTFILES=y
|
||||
CONFIG_FEATURE_LS_TIMESTAMPS=y
|
||||
CONFIG_FEATURE_LS_USERNAME=y
|
||||
@@ -257,11 +264,15 @@ CONFIG_MKDIR=y
|
||||
CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
|
||||
CONFIG_MKFIFO=y
|
||||
CONFIG_MKNOD=y
|
||||
# CONFIG_MKTEMP is not set
|
||||
CONFIG_MV=y
|
||||
CONFIG_FEATURE_MV_LONG_OPTIONS=y
|
||||
CONFIG_NICE=y
|
||||
CONFIG_NL=y
|
||||
CONFIG_NOHUP=y
|
||||
CONFIG_NPROC=y
|
||||
CONFIG_OD=y
|
||||
CONFIG_PASTE=y
|
||||
CONFIG_PRINTENV=y
|
||||
CONFIG_PRINTF=y
|
||||
CONFIG_PWD=y
|
||||
@@ -272,6 +283,7 @@ CONFIG_RM=y
|
||||
CONFIG_RMDIR=y
|
||||
# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
|
||||
CONFIG_SEQ=y
|
||||
CONFIG_SHRED=y
|
||||
# CONFIG_SHUF is not set
|
||||
CONFIG_SLEEP=y
|
||||
CONFIG_FEATURE_FANCY_SLEEP=y
|
||||
@@ -296,6 +308,7 @@ CONFIG_TEST=y
|
||||
CONFIG_TEST1=y
|
||||
CONFIG_TEST2=y
|
||||
CONFIG_FEATURE_TEST_64=y
|
||||
# CONFIG_TIMEOUT is not set
|
||||
CONFIG_TOUCH=y
|
||||
# CONFIG_FEATURE_TOUCH_NODEREF is not set
|
||||
CONFIG_FEATURE_TOUCH_SUSV3=y
|
||||
@@ -317,6 +330,7 @@ CONFIG_WC=y
|
||||
# CONFIG_FEATURE_WC_LARGE is not set
|
||||
CONFIG_WHOAMI=y
|
||||
CONFIG_WHO=y
|
||||
CONFIG_W=y
|
||||
# CONFIG_USERS is not set
|
||||
CONFIG_YES=y
|
||||
|
||||
@@ -330,11 +344,6 @@ CONFIG_FEATURE_VERBOSE=y
|
||||
#
|
||||
CONFIG_FEATURE_PRESERVE_HARDLINKS=y
|
||||
|
||||
#
|
||||
# Common options for ls, more and telnet
|
||||
#
|
||||
CONFIG_FEATURE_AUTOWIDTH=y
|
||||
|
||||
#
|
||||
# Common options for df, du, ls
|
||||
#
|
||||
@@ -369,14 +378,13 @@ CONFIG_DEFAULT_SETFONT_DIR=""
|
||||
#
|
||||
# Debian Utilities
|
||||
#
|
||||
# CONFIG_MKTEMP is not set
|
||||
# CONFIG_PIPE_PROGRESS is not set
|
||||
CONFIG_RUN_PARTS=y
|
||||
CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
|
||||
CONFIG_FEATURE_RUN_PARTS_FANCY=y
|
||||
CONFIG_START_STOP_DAEMON=y
|
||||
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
|
||||
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
|
||||
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
|
||||
CONFIG_WHICH=y
|
||||
|
||||
#
|
||||
@@ -467,12 +475,10 @@ CONFIG_FEATURE_KILL_REMOVED=y
|
||||
CONFIG_FEATURE_KILL_DELAY=0
|
||||
CONFIG_FEATURE_INIT_SCTTY=y
|
||||
CONFIG_FEATURE_INIT_SYSLOG=y
|
||||
CONFIG_FEATURE_EXTRA_QUIET=y
|
||||
CONFIG_FEATURE_INIT_QUIET=y
|
||||
# CONFIG_FEATURE_INIT_COREDUMPS is not set
|
||||
CONFIG_INIT_TERMINAL_TYPE="linux"
|
||||
CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y
|
||||
CONFIG_MESG=y
|
||||
CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
|
||||
|
||||
#
|
||||
# Login/Password Management Utilities
|
||||
@@ -511,6 +517,7 @@ CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
|
||||
# CONFIG_SU is not set
|
||||
# CONFIG_FEATURE_SU_SYSLOG is not set
|
||||
# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
|
||||
# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
|
||||
# CONFIG_SULOGIN is not set
|
||||
# CONFIG_VLOCK is not set
|
||||
|
||||
@@ -525,6 +532,7 @@ CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
|
||||
#
|
||||
# Linux Module Utilities
|
||||
#
|
||||
# CONFIG_MODPROBE_SMALL is not set
|
||||
# CONFIG_DEPMOD is not set
|
||||
# CONFIG_INSMOD is not set
|
||||
# CONFIG_LSMOD is not set
|
||||
@@ -532,22 +540,21 @@ CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
|
||||
# CONFIG_MODINFO is not set
|
||||
# CONFIG_MODPROBE is not set
|
||||
# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
|
||||
# CONFIG_MODPROBE_SMALL is not set
|
||||
# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
|
||||
# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
|
||||
# CONFIG_RMMOD is not set
|
||||
|
||||
#
|
||||
# Options common to multiple modutils
|
||||
#
|
||||
# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set
|
||||
# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
|
||||
# CONFIG_FEATURE_2_4_MODULES is not set
|
||||
# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
|
||||
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
|
||||
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
|
||||
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
|
||||
# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
|
||||
# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
|
||||
# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
|
||||
# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
|
||||
# CONFIG_FEATURE_MODUTILS_ALIAS is not set
|
||||
# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
|
||||
CONFIG_DEFAULT_MODULES_DIR=""
|
||||
@@ -562,8 +569,13 @@ CONFIG_DEFAULT_DEPMOD_FILE=""
|
||||
# CONFIG_BLKID is not set
|
||||
# CONFIG_FEATURE_BLKID_TYPE is not set
|
||||
# CONFIG_BLOCKDEV is not set
|
||||
# CONFIG_CAL is not set
|
||||
# CONFIG_CHRT is not set
|
||||
CONFIG_DMESG=y
|
||||
CONFIG_FEATURE_DMESG_PRETTY=y
|
||||
# CONFIG_EJECT is not set
|
||||
# CONFIG_FEATURE_EJECT_SCSI is not set
|
||||
CONFIG_FALLOCATE=y
|
||||
# CONFIG_FATATTR is not set
|
||||
# CONFIG_FBSET is not set
|
||||
# CONFIG_FEATURE_FBSET_FANCY is not set
|
||||
@@ -583,17 +595,22 @@ CONFIG_FEATURE_DMESG_PRETTY=y
|
||||
# CONFIG_FDFLUSH is not set
|
||||
CONFIG_FREERAMDISK=y
|
||||
# CONFIG_FSCK_MINIX is not set
|
||||
CONFIG_FSFREEZE=y
|
||||
# CONFIG_FSTRIM is not set
|
||||
CONFIG_GETOPT=y
|
||||
CONFIG_FEATURE_GETOPT_LONG=y
|
||||
# CONFIG_HEXDUMP is not set
|
||||
# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
|
||||
# CONFIG_HD is not set
|
||||
CONFIG_XXD=y
|
||||
# CONFIG_HWCLOCK is not set
|
||||
# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
|
||||
# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
|
||||
# CONFIG_IONICE is not set
|
||||
# CONFIG_IPCRM is not set
|
||||
# CONFIG_IPCS is not set
|
||||
# CONFIG_LAST is not set
|
||||
# CONFIG_FEATURE_LAST_FANCY is not set
|
||||
# CONFIG_LOSETUP is not set
|
||||
# CONFIG_LSPCI is not set
|
||||
# CONFIG_LSUSB is not set
|
||||
@@ -603,6 +620,8 @@ CONFIG_FEATURE_GETOPT_LONG=y
|
||||
# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
|
||||
# CONFIG_FEATURE_MDEV_EXEC is not set
|
||||
# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
|
||||
CONFIG_MESG=y
|
||||
CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
|
||||
CONFIG_MKE2FS=y
|
||||
# CONFIG_MKFS_EXT2 is not set
|
||||
# CONFIG_MKFS_MINIX is not set
|
||||
@@ -623,12 +642,14 @@ CONFIG_FEATURE_MOUNT_CIFS=y
|
||||
CONFIG_FEATURE_MOUNT_FLAGS=y
|
||||
CONFIG_FEATURE_MOUNT_FSTAB=y
|
||||
CONFIG_FEATURE_MOUNT_OTHERTAB=y
|
||||
# CONFIG_MOUNTPOINT is not set
|
||||
# CONFIG_NSENTER is not set
|
||||
# CONFIG_FEATURE_NSENTER_LONG_OPTS is not set
|
||||
# CONFIG_PIVOT_ROOT is not set
|
||||
# CONFIG_RDATE is not set
|
||||
# CONFIG_RDEV is not set
|
||||
# CONFIG_READPROFILE is not set
|
||||
# CONFIG_RENICE is not set
|
||||
# CONFIG_REV is not set
|
||||
# CONFIG_RTCWAKE is not set
|
||||
# CONFIG_SCRIPT is not set
|
||||
@@ -636,15 +657,20 @@ CONFIG_FEATURE_MOUNT_OTHERTAB=y
|
||||
# CONFIG_SETARCH is not set
|
||||
CONFIG_LINUX32=y
|
||||
CONFIG_LINUX64=y
|
||||
CONFIG_SETPRIV=y
|
||||
# CONFIG_SETSID is not set
|
||||
CONFIG_SWAPON=y
|
||||
# CONFIG_FEATURE_SWAPON_DISCARD is not set
|
||||
# CONFIG_FEATURE_SWAPON_PRI is not set
|
||||
CONFIG_SWAPOFF=y
|
||||
# CONFIG_SWITCH_ROOT is not set
|
||||
# CONFIG_TASKSET is not set
|
||||
# CONFIG_FEATURE_TASKSET_FANCY is not set
|
||||
# CONFIG_UEVENT is not set
|
||||
CONFIG_UMOUNT=y
|
||||
CONFIG_FEATURE_UMOUNT_ALL=y
|
||||
# CONFIG_UNSHARE is not set
|
||||
# CONFIG_WALL is not set
|
||||
|
||||
#
|
||||
# Common options for mount/umount
|
||||
@@ -694,7 +720,6 @@ CONFIG_FEATURE_BEEP_LENGTH_MS=0
|
||||
# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
|
||||
# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
|
||||
# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
|
||||
# CONFIG_CHRT is not set
|
||||
# CONFIG_CONSPY is not set
|
||||
# CONFIG_CROND is not set
|
||||
# CONFIG_FEATURE_CROND_D is not set
|
||||
@@ -709,8 +734,6 @@ CONFIG_FEATURE_CROND_DIR=""
|
||||
# CONFIG_DEVFSD_VERBOSE is not set
|
||||
# CONFIG_FEATURE_DEVFS is not set
|
||||
# CONFIG_DEVMEM is not set
|
||||
# CONFIG_EJECT is not set
|
||||
# CONFIG_FEATURE_EJECT_SCSI is not set
|
||||
# CONFIG_FBSPLASH is not set
|
||||
# CONFIG_FLASHCP is not set
|
||||
# CONFIG_FLASH_ERASEALL is not set
|
||||
@@ -728,9 +751,6 @@ CONFIG_FEATURE_CROND_DIR=""
|
||||
# CONFIG_I2CDUMP is not set
|
||||
# CONFIG_I2CDETECT is not set
|
||||
# CONFIG_INOTIFYD is not set
|
||||
# CONFIG_IONICE is not set
|
||||
# CONFIG_LAST is not set
|
||||
# CONFIG_FEATURE_LAST_FANCY is not set
|
||||
# CONFIG_LESS is not set
|
||||
CONFIG_FEATURE_LESS_MAXLINES=0
|
||||
# CONFIG_FEATURE_LESS_BRACKETS is not set
|
||||
@@ -742,27 +762,24 @@ CONFIG_FEATURE_LESS_MAXLINES=0
|
||||
# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
|
||||
# CONFIG_FEATURE_LESS_DASHCMD is not set
|
||||
# CONFIG_FEATURE_LESS_LINENUMS is not set
|
||||
CONFIG_LSSCSI=y
|
||||
# CONFIG_MAKEDEVS is not set
|
||||
# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
|
||||
# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
|
||||
# CONFIG_MAN is not set
|
||||
# CONFIG_MICROCOM is not set
|
||||
# CONFIG_MOUNTPOINT is not set
|
||||
# CONFIG_MT is not set
|
||||
# CONFIG_NANDWRITE is not set
|
||||
# CONFIG_NANDDUMP is not set
|
||||
CONFIG_PARTPROBE=y
|
||||
# CONFIG_RAIDAUTORUN is not set
|
||||
# CONFIG_READAHEAD is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_RUNLEVEL is not set
|
||||
# CONFIG_RX is not set
|
||||
CONFIG_SETSERIAL=y
|
||||
# CONFIG_SETSID is not set
|
||||
# CONFIG_STRINGS is not set
|
||||
# CONFIG_TASKSET is not set
|
||||
# CONFIG_FEATURE_TASKSET_FANCY is not set
|
||||
# CONFIG_TIME is not set
|
||||
# CONFIG_TIMEOUT is not set
|
||||
# CONFIG_TTYSIZE is not set
|
||||
# CONFIG_UBIRENAME is not set
|
||||
# CONFIG_UBIATTACH is not set
|
||||
@@ -772,7 +789,6 @@ CONFIG_SETSERIAL=y
|
||||
# CONFIG_UBIRSVOL is not set
|
||||
# CONFIG_UBIUPDATEVOL is not set
|
||||
# CONFIG_VOLNAME is not set
|
||||
# CONFIG_WALL is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
|
||||
#
|
||||
@@ -822,8 +838,6 @@ CONFIG_IFUP=y
|
||||
CONFIG_IFDOWN=y
|
||||
CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
|
||||
CONFIG_FEATURE_IFUPDOWN_IP=y
|
||||
CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
|
||||
# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
|
||||
CONFIG_FEATURE_IFUPDOWN_IPV4=y
|
||||
# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
|
||||
# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
|
||||
@@ -836,6 +850,12 @@ CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
|
||||
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
|
||||
# CONFIG_FEATURE_INETD_RPC is not set
|
||||
CONFIG_IP=y
|
||||
CONFIG_IPADDR=y
|
||||
CONFIG_IPLINK=y
|
||||
CONFIG_IPROUTE=y
|
||||
# CONFIG_IPTUNNEL is not set
|
||||
# CONFIG_IPRULE is not set
|
||||
# CONFIG_IPNEIGH is not set
|
||||
CONFIG_FEATURE_IP_ADDRESS=y
|
||||
CONFIG_FEATURE_IP_LINK=y
|
||||
CONFIG_FEATURE_IP_ROUTE=y
|
||||
@@ -843,17 +863,10 @@ CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2"
|
||||
# CONFIG_FEATURE_IP_TUNNEL is not set
|
||||
# CONFIG_FEATURE_IP_RULE is not set
|
||||
# CONFIG_FEATURE_IP_NEIGH is not set
|
||||
CONFIG_FEATURE_IP_SHORT_FORMS=y
|
||||
# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
|
||||
CONFIG_IPADDR=y
|
||||
CONFIG_IPLINK=y
|
||||
CONFIG_IPROUTE=y
|
||||
# CONFIG_IPTUNNEL is not set
|
||||
# CONFIG_IPRULE is not set
|
||||
# CONFIG_IPNEIGH is not set
|
||||
# CONFIG_IPCALC is not set
|
||||
# CONFIG_FEATURE_IPCALC_FANCY is not set
|
||||
# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
|
||||
# CONFIG_FEATURE_IPCALC_FANCY is not set
|
||||
# CONFIG_FAKEIDENTD is not set
|
||||
# CONFIG_NAMEIF is not set
|
||||
# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
|
||||
@@ -875,11 +888,13 @@ CONFIG_PING=y
|
||||
# CONFIG_PSCAN is not set
|
||||
CONFIG_ROUTE=y
|
||||
# CONFIG_SLATTACH is not set
|
||||
# CONFIG_SSL_CLIENT is not set
|
||||
# CONFIG_TCPSVD is not set
|
||||
# CONFIG_UDPSVD is not set
|
||||
CONFIG_TELNET=y
|
||||
CONFIG_FEATURE_TELNET_TTYPE=y
|
||||
CONFIG_FEATURE_TELNET_AUTOLOGIN=y
|
||||
CONFIG_FEATURE_TELNET_WIDTH=y
|
||||
# CONFIG_TELNETD is not set
|
||||
# CONFIG_FEATURE_TELNETD_STANDALONE is not set
|
||||
# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
|
||||
@@ -890,6 +905,7 @@ CONFIG_FEATURE_TELNET_AUTOLOGIN=y
|
||||
# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
|
||||
# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
|
||||
# CONFIG_TFTP_DEBUG is not set
|
||||
# CONFIG_TLS is not set
|
||||
# CONFIG_TRACEROUTE is not set
|
||||
# CONFIG_TRACEROUTE6 is not set
|
||||
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
|
||||
@@ -898,29 +914,32 @@ CONFIG_FEATURE_TELNET_AUTOLOGIN=y
|
||||
# CONFIG_FEATURE_TUNCTL_UG is not set
|
||||
# CONFIG_VCONFIG is not set
|
||||
CONFIG_WGET=y
|
||||
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
|
||||
# CONFIG_FEATURE_WGET_STATUSBAR is not set
|
||||
# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
|
||||
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
|
||||
# CONFIG_FEATURE_WGET_TIMEOUT is not set
|
||||
# CONFIG_FEATURE_WGET_HTTPS is not set
|
||||
# CONFIG_FEATURE_WGET_OPENSSL is not set
|
||||
# CONFIG_FEATURE_WGET_SSL_HELPER is not set
|
||||
# CONFIG_WHOIS is not set
|
||||
# CONFIG_ZCIP is not set
|
||||
# CONFIG_UDHCPC6 is not set
|
||||
# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
|
||||
# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
|
||||
# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
|
||||
# CONFIG_UDHCPD is not set
|
||||
# CONFIG_DHCPRELAY is not set
|
||||
# CONFIG_DUMPLEASES is not set
|
||||
# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
|
||||
# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
|
||||
CONFIG_DHCPD_LEASES_FILE=""
|
||||
# CONFIG_DUMPLEASES is not set
|
||||
# CONFIG_DHCPRELAY is not set
|
||||
CONFIG_UDHCPC=y
|
||||
# CONFIG_FEATURE_UDHCPC_ARPING is not set
|
||||
CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y
|
||||
CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
|
||||
# CONFIG_FEATURE_UDHCP_PORT is not set
|
||||
CONFIG_UDHCP_DEBUG=9
|
||||
# CONFIG_FEATURE_UDHCP_RFC3397 is not set
|
||||
# CONFIG_FEATURE_UDHCP_8021Q is not set
|
||||
CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
|
||||
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
|
||||
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
|
||||
|
||||
@@ -961,18 +980,19 @@ CONFIG_KILLALL5=y
|
||||
# CONFIG_FEATURE_PIDOF_OMIT is not set
|
||||
# CONFIG_PMAP is not set
|
||||
# CONFIG_POWERTOP is not set
|
||||
# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set
|
||||
CONFIG_PS=y
|
||||
CONFIG_FEATURE_PS_WIDE=y
|
||||
CONFIG_FEATURE_PS_LONG=y
|
||||
# CONFIG_FEATURE_PS_TIME is not set
|
||||
# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
|
||||
# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
|
||||
# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
|
||||
# CONFIG_PSTREE is not set
|
||||
# CONFIG_PWDX is not set
|
||||
# CONFIG_RENICE is not set
|
||||
# CONFIG_SMEMCAP is not set
|
||||
# CONFIG_BB_SYSCTL is not set
|
||||
# CONFIG_TOP is not set
|
||||
# CONFIG_FEATURE_TOP_INTERACTIVE is not set
|
||||
# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set
|
||||
# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set
|
||||
# CONFIG_FEATURE_TOP_SMP_CPU is not set
|
||||
@@ -1018,27 +1038,32 @@ CONFIG_SVC=y
|
||||
#
|
||||
# Shells
|
||||
#
|
||||
# CONFIG_SH_IS_ASH is not set
|
||||
CONFIG_SH_IS_HUSH=y
|
||||
# CONFIG_SH_IS_NONE is not set
|
||||
# CONFIG_BASH_IS_ASH is not set
|
||||
# CONFIG_BASH_IS_HUSH is not set
|
||||
CONFIG_BASH_IS_NONE=y
|
||||
# CONFIG_ASH is not set
|
||||
# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
|
||||
# CONFIG_ASH_INTERNAL_GLOB is not set
|
||||
# CONFIG_ASH_RANDOM_SUPPORT is not set
|
||||
# CONFIG_ASH_EXPAND_PRMT is not set
|
||||
# CONFIG_ASH_BASH_COMPAT is not set
|
||||
# CONFIG_ASH_IDLE_TIMEOUT is not set
|
||||
# CONFIG_ASH_JOB_CONTROL is not set
|
||||
# CONFIG_ASH_ALIAS is not set
|
||||
# CONFIG_ASH_GETOPTS is not set
|
||||
# CONFIG_ASH_BUILTIN_ECHO is not set
|
||||
# CONFIG_ASH_BUILTIN_PRINTF is not set
|
||||
# CONFIG_ASH_BUILTIN_TEST is not set
|
||||
# CONFIG_ASH_HELP is not set
|
||||
# CONFIG_ASH_CMDCMD is not set
|
||||
# CONFIG_ASH_RANDOM_SUPPORT is not set
|
||||
# CONFIG_ASH_EXPAND_PRMT is not set
|
||||
# CONFIG_ASH_IDLE_TIMEOUT is not set
|
||||
# CONFIG_ASH_MAIL is not set
|
||||
# CONFIG_ASH_ECHO is not set
|
||||
# CONFIG_ASH_PRINTF is not set
|
||||
# CONFIG_ASH_TEST is not set
|
||||
# CONFIG_ASH_HELP is not set
|
||||
# CONFIG_ASH_GETOPTS is not set
|
||||
# CONFIG_ASH_CMDCMD is not set
|
||||
# CONFIG_CTTYHACK is not set
|
||||
CONFIG_HUSH=y
|
||||
CONFIG_HUSH_BASH_COMPAT=y
|
||||
CONFIG_HUSH_BRACE_EXPANSION=y
|
||||
CONFIG_HUSH_HELP=y
|
||||
CONFIG_HUSH_INTERACTIVE=y
|
||||
CONFIG_HUSH_SAVEHISTORY=y
|
||||
CONFIG_HUSH_JOB=y
|
||||
@@ -1049,17 +1074,30 @@ CONFIG_HUSH_CASE=y
|
||||
CONFIG_HUSH_FUNCTIONS=y
|
||||
CONFIG_HUSH_LOCAL=y
|
||||
CONFIG_HUSH_RANDOM_SUPPORT=y
|
||||
CONFIG_HUSH_EXPORT_N=y
|
||||
CONFIG_HUSH_MODE_X=y
|
||||
CONFIG_HUSH_ECHO=y
|
||||
CONFIG_HUSH_PRINTF=y
|
||||
CONFIG_HUSH_TEST=y
|
||||
CONFIG_HUSH_HELP=y
|
||||
CONFIG_HUSH_EXPORT=y
|
||||
CONFIG_HUSH_EXPORT_N=y
|
||||
CONFIG_HUSH_KILL=y
|
||||
CONFIG_HUSH_WAIT=y
|
||||
CONFIG_HUSH_TRAP=y
|
||||
CONFIG_HUSH_TYPE=y
|
||||
CONFIG_HUSH_READ=y
|
||||
CONFIG_HUSH_SET=y
|
||||
CONFIG_HUSH_UNSET=y
|
||||
CONFIG_HUSH_ULIMIT=y
|
||||
CONFIG_HUSH_UMASK=y
|
||||
# CONFIG_HUSH_MEMLEAK is not set
|
||||
# CONFIG_MSH is not set
|
||||
# CONFIG_FEATURE_SH_IS_ASH is not set
|
||||
CONFIG_FEATURE_SH_IS_HUSH=y
|
||||
# CONFIG_FEATURE_SH_IS_NONE is not set
|
||||
# CONFIG_FEATURE_BASH_IS_ASH is not set
|
||||
# CONFIG_FEATURE_BASH_IS_HUSH is not set
|
||||
CONFIG_FEATURE_BASH_IS_NONE=y
|
||||
CONFIG_SH_MATH_SUPPORT=y
|
||||
# CONFIG_SH_MATH_SUPPORT_64 is not set
|
||||
|
||||
#
|
||||
# Options common to all shells
|
||||
#
|
||||
CONFIG_FEATURE_SH_MATH=y
|
||||
CONFIG_FEATURE_SH_MATH_64=y
|
||||
CONFIG_FEATURE_SH_EXTRA_QUIET=y
|
||||
# CONFIG_FEATURE_SH_STANDALONE is not set
|
||||
# CONFIG_FEATURE_SH_NOFORK is not set
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Busybox version: 1.26.0
|
||||
# Thu Dec 29 21:01:56 2016
|
||||
# Busybox version: 1.27.1
|
||||
# Sun Jul 30 15:27:03 2017
|
||||
#
|
||||
CONFIG_HAVE_DOT_CONFIG=y
|
||||
|
||||
@@ -12,7 +12,6 @@ CONFIG_DESKTOP=y
|
||||
# CONFIG_EXTRA_COMPAT is not set
|
||||
CONFIG_INCLUDE_SUSv2=y
|
||||
# CONFIG_USE_PORTABLE_CODE is not set
|
||||
CONFIG_PLATFORM_LINUX=y
|
||||
CONFIG_SHOW_USAGE=y
|
||||
CONFIG_FEATURE_VERBOSE_USAGE=y
|
||||
# CONFIG_FEATURE_COMPRESS_USAGE is not set
|
||||
@@ -35,6 +34,7 @@ CONFIG_FEATURE_SUID=y
|
||||
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
|
||||
CONFIG_FEATURE_SYSLOG=y
|
||||
# CONFIG_FEATURE_HAVE_RPC is not set
|
||||
CONFIG_PLATFORM_LINUX=y
|
||||
|
||||
#
|
||||
# Build Options
|
||||
@@ -89,7 +89,6 @@ CONFIG_MD5_SMALL=1
|
||||
CONFIG_SHA3_SMALL=1
|
||||
# CONFIG_FEATURE_FAST_TOP is not set
|
||||
# CONFIG_FEATURE_ETC_NETWORKS is not set
|
||||
CONFIG_FEATURE_USE_TERMIOS=y
|
||||
CONFIG_FEATURE_EDITING=y
|
||||
CONFIG_FEATURE_EDITING_MAX_LEN=1024
|
||||
CONFIG_FEATURE_EDITING_VI=y
|
||||
@@ -150,6 +149,7 @@ CONFIG_UNXZ=y
|
||||
CONFIG_XZCAT=y
|
||||
CONFIG_XZ=y
|
||||
# CONFIG_BZIP2 is not set
|
||||
CONFIG_FEATURE_BZIP2_DECOMPRESS=y
|
||||
CONFIG_CPIO=y
|
||||
# CONFIG_FEATURE_CPIO_O is not set
|
||||
# CONFIG_FEATURE_CPIO_P is not set
|
||||
@@ -159,6 +159,7 @@ CONFIG_GZIP=y
|
||||
# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set
|
||||
CONFIG_GZIP_FAST=0
|
||||
# CONFIG_FEATURE_GZIP_LEVELS is not set
|
||||
CONFIG_FEATURE_GZIP_DECOMPRESS=y
|
||||
# CONFIG_LZOP is not set
|
||||
CONFIG_UNLZOP=y
|
||||
CONFIG_LZOPCAT=y
|
||||
@@ -166,26 +167,29 @@ CONFIG_LZOPCAT=y
|
||||
# CONFIG_RPM2CPIO is not set
|
||||
# CONFIG_RPM is not set
|
||||
CONFIG_TAR=y
|
||||
CONFIG_FEATURE_TAR_LONG_OPTIONS=y
|
||||
CONFIG_FEATURE_TAR_CREATE=y
|
||||
# CONFIG_FEATURE_TAR_AUTODETECT is not set
|
||||
CONFIG_FEATURE_TAR_FROM=y
|
||||
# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
|
||||
# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
|
||||
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
|
||||
CONFIG_FEATURE_TAR_LONG_OPTIONS=y
|
||||
CONFIG_FEATURE_TAR_TO_COMMAND=y
|
||||
# CONFIG_FEATURE_TAR_UNAME_GNAME is not set
|
||||
# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set
|
||||
# CONFIG_FEATURE_TAR_SELINUX is not set
|
||||
CONFIG_UNZIP=y
|
||||
CONFIG_FEATURE_UNZIP_CDF=y
|
||||
CONFIG_FEATURE_UNZIP_BZIP2=y
|
||||
CONFIG_FEATURE_UNZIP_LZMA=y
|
||||
CONFIG_FEATURE_UNZIP_XZ=y
|
||||
|
||||
#
|
||||
# Coreutils
|
||||
#
|
||||
CONFIG_BASENAME=y
|
||||
# CONFIG_CAL is not set
|
||||
CONFIG_CAT=y
|
||||
CONFIG_CATV=y
|
||||
CONFIG_FEATURE_CATV=y
|
||||
CONFIG_CHGRP=y
|
||||
CONFIG_CHMOD=y
|
||||
CONFIG_CHOWN=y
|
||||
@@ -222,6 +226,7 @@ CONFIG_ENV=y
|
||||
# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
|
||||
CONFIG_EXPR=y
|
||||
CONFIG_EXPR_MATH_SUPPORT_64=y
|
||||
CONFIG_FACTOR=y
|
||||
CONFIG_FALSE=y
|
||||
CONFIG_FOLD=y
|
||||
# CONFIG_FSYNC is not set
|
||||
@@ -232,12 +237,14 @@ CONFIG_ID=y
|
||||
# CONFIG_GROUPS is not set
|
||||
CONFIG_INSTALL=y
|
||||
CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
|
||||
CONFIG_LINK=y
|
||||
CONFIG_LN=y
|
||||
CONFIG_LOGNAME=y
|
||||
CONFIG_LS=y
|
||||
CONFIG_FEATURE_LS_FILETYPES=y
|
||||
CONFIG_FEATURE_LS_FOLLOWLINKS=y
|
||||
CONFIG_FEATURE_LS_RECURSIVE=y
|
||||
CONFIG_FEATURE_LS_WIDTH=y
|
||||
CONFIG_FEATURE_LS_SORTFILES=y
|
||||
CONFIG_FEATURE_LS_TIMESTAMPS=y
|
||||
CONFIG_FEATURE_LS_USERNAME=y
|
||||
@@ -257,11 +264,15 @@ CONFIG_MKDIR=y
|
||||
CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
|
||||
CONFIG_MKFIFO=y
|
||||
CONFIG_MKNOD=y
|
||||
CONFIG_MKTEMP=y
|
||||
CONFIG_MV=y
|
||||
CONFIG_FEATURE_MV_LONG_OPTIONS=y
|
||||
CONFIG_NICE=y
|
||||
CONFIG_NL=y
|
||||
CONFIG_NOHUP=y
|
||||
CONFIG_NPROC=y
|
||||
CONFIG_OD=y
|
||||
CONFIG_PASTE=y
|
||||
CONFIG_PRINTENV=y
|
||||
CONFIG_PRINTF=y
|
||||
CONFIG_PWD=y
|
||||
@@ -272,6 +283,7 @@ CONFIG_RM=y
|
||||
CONFIG_RMDIR=y
|
||||
# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
|
||||
CONFIG_SEQ=y
|
||||
CONFIG_SHRED=y
|
||||
# CONFIG_SHUF is not set
|
||||
CONFIG_SLEEP=y
|
||||
CONFIG_FEATURE_FANCY_SLEEP=y
|
||||
@@ -296,6 +308,7 @@ CONFIG_TEST=y
|
||||
CONFIG_TEST1=y
|
||||
CONFIG_TEST2=y
|
||||
CONFIG_FEATURE_TEST_64=y
|
||||
# CONFIG_TIMEOUT is not set
|
||||
CONFIG_TOUCH=y
|
||||
# CONFIG_FEATURE_TOUCH_NODEREF is not set
|
||||
CONFIG_FEATURE_TOUCH_SUSV3=y
|
||||
@@ -317,6 +330,7 @@ CONFIG_WC=y
|
||||
# CONFIG_FEATURE_WC_LARGE is not set
|
||||
CONFIG_WHOAMI=y
|
||||
CONFIG_WHO=y
|
||||
CONFIG_W=y
|
||||
# CONFIG_USERS is not set
|
||||
CONFIG_YES=y
|
||||
|
||||
@@ -330,11 +344,6 @@ CONFIG_FEATURE_VERBOSE=y
|
||||
#
|
||||
CONFIG_FEATURE_PRESERVE_HARDLINKS=y
|
||||
|
||||
#
|
||||
# Common options for ls, more and telnet
|
||||
#
|
||||
CONFIG_FEATURE_AUTOWIDTH=y
|
||||
|
||||
#
|
||||
# Common options for df, du, ls
|
||||
#
|
||||
@@ -373,14 +382,13 @@ CONFIG_SETLOGCONS=y
|
||||
#
|
||||
# Debian Utilities
|
||||
#
|
||||
CONFIG_MKTEMP=y
|
||||
CONFIG_PIPE_PROGRESS=y
|
||||
CONFIG_RUN_PARTS=y
|
||||
CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
|
||||
# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
|
||||
CONFIG_START_STOP_DAEMON=y
|
||||
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
|
||||
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
|
||||
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
|
||||
CONFIG_WHICH=y
|
||||
|
||||
#
|
||||
@@ -471,12 +479,10 @@ CONFIG_FEATURE_KILL_REMOVED=y
|
||||
CONFIG_FEATURE_KILL_DELAY=0
|
||||
CONFIG_FEATURE_INIT_SCTTY=y
|
||||
CONFIG_FEATURE_INIT_SYSLOG=y
|
||||
CONFIG_FEATURE_EXTRA_QUIET=y
|
||||
CONFIG_FEATURE_INIT_QUIET=y
|
||||
# CONFIG_FEATURE_INIT_COREDUMPS is not set
|
||||
CONFIG_INIT_TERMINAL_TYPE="linux"
|
||||
CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y
|
||||
CONFIG_MESG=y
|
||||
CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
|
||||
|
||||
#
|
||||
# Login/Password Management Utilities
|
||||
@@ -515,6 +521,7 @@ CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
|
||||
CONFIG_SU=y
|
||||
CONFIG_FEATURE_SU_SYSLOG=y
|
||||
CONFIG_FEATURE_SU_CHECKS_SHELLS=y
|
||||
# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
|
||||
CONFIG_SULOGIN=y
|
||||
CONFIG_VLOCK=y
|
||||
|
||||
@@ -529,6 +536,7 @@ CONFIG_LSATTR=y
|
||||
#
|
||||
# Linux Module Utilities
|
||||
#
|
||||
# CONFIG_MODPROBE_SMALL is not set
|
||||
# CONFIG_DEPMOD is not set
|
||||
CONFIG_INSMOD=y
|
||||
CONFIG_LSMOD=y
|
||||
@@ -536,22 +544,21 @@ CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
|
||||
# CONFIG_MODINFO is not set
|
||||
CONFIG_MODPROBE=y
|
||||
# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
|
||||
# CONFIG_MODPROBE_SMALL is not set
|
||||
# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
|
||||
# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
|
||||
CONFIG_RMMOD=y
|
||||
|
||||
#
|
||||
# Options common to multiple modutils
|
||||
#
|
||||
CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y
|
||||
# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
|
||||
# CONFIG_FEATURE_2_4_MODULES is not set
|
||||
# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
|
||||
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
|
||||
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
|
||||
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
|
||||
# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
|
||||
# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
|
||||
CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
|
||||
# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
|
||||
CONFIG_FEATURE_MODUTILS_ALIAS=y
|
||||
CONFIG_FEATURE_MODUTILS_SYMBOLS=y
|
||||
CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
|
||||
@@ -566,8 +573,13 @@ CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
|
||||
CONFIG_BLKID=y
|
||||
# CONFIG_FEATURE_BLKID_TYPE is not set
|
||||
# CONFIG_BLOCKDEV is not set
|
||||
# CONFIG_CAL is not set
|
||||
CONFIG_CHRT=y
|
||||
CONFIG_DMESG=y
|
||||
CONFIG_FEATURE_DMESG_PRETTY=y
|
||||
CONFIG_EJECT=y
|
||||
# CONFIG_FEATURE_EJECT_SCSI is not set
|
||||
CONFIG_FALLOCATE=y
|
||||
# CONFIG_FATATTR is not set
|
||||
CONFIG_FBSET=y
|
||||
CONFIG_FEATURE_FBSET_FANCY=y
|
||||
@@ -587,17 +599,22 @@ CONFIG_FLOCK=y
|
||||
CONFIG_FDFLUSH=y
|
||||
CONFIG_FREERAMDISK=y
|
||||
# CONFIG_FSCK_MINIX is not set
|
||||
CONFIG_FSFREEZE=y
|
||||
CONFIG_FSTRIM=y
|
||||
CONFIG_GETOPT=y
|
||||
CONFIG_FEATURE_GETOPT_LONG=y
|
||||
CONFIG_HEXDUMP=y
|
||||
# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
|
||||
# CONFIG_HD is not set
|
||||
CONFIG_XXD=y
|
||||
CONFIG_HWCLOCK=y
|
||||
CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
|
||||
CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
|
||||
# CONFIG_IONICE is not set
|
||||
CONFIG_IPCRM=y
|
||||
CONFIG_IPCS=y
|
||||
CONFIG_LAST=y
|
||||
# CONFIG_FEATURE_LAST_FANCY is not set
|
||||
CONFIG_LOSETUP=y
|
||||
CONFIG_LSPCI=y
|
||||
CONFIG_LSUSB=y
|
||||
@@ -607,6 +624,8 @@ CONFIG_FEATURE_MDEV_RENAME=y
|
||||
# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
|
||||
CONFIG_FEATURE_MDEV_EXEC=y
|
||||
# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
|
||||
CONFIG_MESG=y
|
||||
CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
|
||||
CONFIG_MKE2FS=y
|
||||
# CONFIG_MKFS_EXT2 is not set
|
||||
# CONFIG_MKFS_MINIX is not set
|
||||
@@ -627,12 +646,14 @@ CONFIG_FEATURE_MOUNT_CIFS=y
|
||||
CONFIG_FEATURE_MOUNT_FLAGS=y
|
||||
CONFIG_FEATURE_MOUNT_FSTAB=y
|
||||
CONFIG_FEATURE_MOUNT_OTHERTAB=y
|
||||
CONFIG_MOUNTPOINT=y
|
||||
# CONFIG_NSENTER is not set
|
||||
# CONFIG_FEATURE_NSENTER_LONG_OPTS is not set
|
||||
CONFIG_PIVOT_ROOT=y
|
||||
CONFIG_RDATE=y
|
||||
# CONFIG_RDEV is not set
|
||||
CONFIG_READPROFILE=y
|
||||
CONFIG_RENICE=y
|
||||
# CONFIG_REV is not set
|
||||
# CONFIG_RTCWAKE is not set
|
||||
# CONFIG_SCRIPT is not set
|
||||
@@ -640,15 +661,20 @@ CONFIG_READPROFILE=y
|
||||
CONFIG_SETARCH=y
|
||||
CONFIG_LINUX32=y
|
||||
CONFIG_LINUX64=y
|
||||
CONFIG_SETPRIV=y
|
||||
CONFIG_SETSID=y
|
||||
CONFIG_SWAPON=y
|
||||
# CONFIG_FEATURE_SWAPON_DISCARD is not set
|
||||
# CONFIG_FEATURE_SWAPON_PRI is not set
|
||||
CONFIG_SWAPOFF=y
|
||||
CONFIG_SWITCH_ROOT=y
|
||||
# CONFIG_TASKSET is not set
|
||||
# CONFIG_FEATURE_TASKSET_FANCY is not set
|
||||
CONFIG_UEVENT=y
|
||||
CONFIG_UMOUNT=y
|
||||
CONFIG_FEATURE_UMOUNT_ALL=y
|
||||
# CONFIG_UNSHARE is not set
|
||||
# CONFIG_WALL is not set
|
||||
|
||||
#
|
||||
# Common options for mount/umount
|
||||
@@ -702,7 +728,6 @@ CONFIG_FEATURE_BEEP_LENGTH_MS=0
|
||||
# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
|
||||
# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
|
||||
# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
|
||||
CONFIG_CHRT=y
|
||||
# CONFIG_CONSPY is not set
|
||||
CONFIG_CROND=y
|
||||
# CONFIG_FEATURE_CROND_D is not set
|
||||
@@ -717,8 +742,6 @@ CONFIG_DC=y
|
||||
# CONFIG_DEVFSD_VERBOSE is not set
|
||||
# CONFIG_FEATURE_DEVFS is not set
|
||||
CONFIG_DEVMEM=y
|
||||
CONFIG_EJECT=y
|
||||
# CONFIG_FEATURE_EJECT_SCSI is not set
|
||||
# CONFIG_FBSPLASH is not set
|
||||
# CONFIG_FLASHCP is not set
|
||||
# CONFIG_FLASH_ERASEALL is not set
|
||||
@@ -736,9 +759,6 @@ CONFIG_I2CSET=y
|
||||
CONFIG_I2CDUMP=y
|
||||
CONFIG_I2CDETECT=y
|
||||
# CONFIG_INOTIFYD is not set
|
||||
# CONFIG_IONICE is not set
|
||||
CONFIG_LAST=y
|
||||
# CONFIG_FEATURE_LAST_FANCY is not set
|
||||
CONFIG_LESS=y
|
||||
CONFIG_FEATURE_LESS_MAXLINES=9999999
|
||||
CONFIG_FEATURE_LESS_BRACKETS=y
|
||||
@@ -750,27 +770,24 @@ CONFIG_FEATURE_LESS_REGEXP=y
|
||||
# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
|
||||
# CONFIG_FEATURE_LESS_DASHCMD is not set
|
||||
# CONFIG_FEATURE_LESS_LINENUMS is not set
|
||||
CONFIG_LSSCSI=y
|
||||
CONFIG_MAKEDEVS=y
|
||||
# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
|
||||
CONFIG_FEATURE_MAKEDEVS_TABLE=y
|
||||
# CONFIG_MAN is not set
|
||||
CONFIG_MICROCOM=y
|
||||
CONFIG_MOUNTPOINT=y
|
||||
CONFIG_MT=y
|
||||
# CONFIG_NANDWRITE is not set
|
||||
# CONFIG_NANDDUMP is not set
|
||||
CONFIG_PARTPROBE=y
|
||||
# CONFIG_RAIDAUTORUN is not set
|
||||
# CONFIG_READAHEAD is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
CONFIG_RUNLEVEL=y
|
||||
# CONFIG_RX is not set
|
||||
CONFIG_SETSERIAL=y
|
||||
CONFIG_SETSID=y
|
||||
CONFIG_STRINGS=y
|
||||
# CONFIG_TASKSET is not set
|
||||
# CONFIG_FEATURE_TASKSET_FANCY is not set
|
||||
CONFIG_TIME=y
|
||||
# CONFIG_TIMEOUT is not set
|
||||
# CONFIG_TTYSIZE is not set
|
||||
CONFIG_UBIRENAME=y
|
||||
# CONFIG_UBIATTACH is not set
|
||||
@@ -780,7 +797,6 @@ CONFIG_UBIRENAME=y
|
||||
# CONFIG_UBIRSVOL is not set
|
||||
# CONFIG_UBIUPDATEVOL is not set
|
||||
# CONFIG_VOLNAME is not set
|
||||
# CONFIG_WALL is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
|
||||
#
|
||||
@@ -830,8 +846,6 @@ CONFIG_IFUP=y
|
||||
CONFIG_IFDOWN=y
|
||||
CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
|
||||
CONFIG_FEATURE_IFUPDOWN_IP=y
|
||||
# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
|
||||
# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
|
||||
CONFIG_FEATURE_IFUPDOWN_IPV4=y
|
||||
CONFIG_FEATURE_IFUPDOWN_IPV6=y
|
||||
CONFIG_FEATURE_IFUPDOWN_MAPPING=y
|
||||
@@ -844,6 +858,12 @@ CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
|
||||
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
|
||||
# CONFIG_FEATURE_INETD_RPC is not set
|
||||
CONFIG_IP=y
|
||||
CONFIG_IPADDR=y
|
||||
CONFIG_IPLINK=y
|
||||
CONFIG_IPROUTE=y
|
||||
CONFIG_IPTUNNEL=y
|
||||
CONFIG_IPRULE=y
|
||||
CONFIG_IPNEIGH=y
|
||||
CONFIG_FEATURE_IP_ADDRESS=y
|
||||
CONFIG_FEATURE_IP_LINK=y
|
||||
CONFIG_FEATURE_IP_ROUTE=y
|
||||
@@ -851,17 +871,10 @@ CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2"
|
||||
CONFIG_FEATURE_IP_TUNNEL=y
|
||||
CONFIG_FEATURE_IP_RULE=y
|
||||
CONFIG_FEATURE_IP_NEIGH=y
|
||||
CONFIG_FEATURE_IP_SHORT_FORMS=y
|
||||
# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
|
||||
CONFIG_IPADDR=y
|
||||
CONFIG_IPLINK=y
|
||||
CONFIG_IPROUTE=y
|
||||
CONFIG_IPTUNNEL=y
|
||||
CONFIG_IPRULE=y
|
||||
CONFIG_IPNEIGH=y
|
||||
# CONFIG_IPCALC is not set
|
||||
# CONFIG_FEATURE_IPCALC_FANCY is not set
|
||||
# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
|
||||
# CONFIG_FEATURE_IPCALC_FANCY is not set
|
||||
# CONFIG_FAKEIDENTD is not set
|
||||
CONFIG_NAMEIF=y
|
||||
# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
|
||||
@@ -883,11 +896,13 @@ CONFIG_FEATURE_FANCY_PING=y
|
||||
# CONFIG_PSCAN is not set
|
||||
CONFIG_ROUTE=y
|
||||
# CONFIG_SLATTACH is not set
|
||||
# CONFIG_SSL_CLIENT is not set
|
||||
# CONFIG_TCPSVD is not set
|
||||
# CONFIG_UDPSVD is not set
|
||||
CONFIG_TELNET=y
|
||||
CONFIG_FEATURE_TELNET_TTYPE=y
|
||||
CONFIG_FEATURE_TELNET_AUTOLOGIN=y
|
||||
CONFIG_FEATURE_TELNET_WIDTH=y
|
||||
# CONFIG_TELNETD is not set
|
||||
# CONFIG_FEATURE_TELNETD_STANDALONE is not set
|
||||
# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
|
||||
@@ -902,6 +917,7 @@ CONFIG_FEATURE_TFTP_PUT=y
|
||||
CONFIG_FEATURE_TFTP_BLOCKSIZE=y
|
||||
# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
|
||||
# CONFIG_TFTP_DEBUG is not set
|
||||
# CONFIG_TLS is not set
|
||||
CONFIG_TRACEROUTE=y
|
||||
# CONFIG_TRACEROUTE6 is not set
|
||||
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
|
||||
@@ -910,29 +926,32 @@ CONFIG_TRACEROUTE=y
|
||||
# CONFIG_FEATURE_TUNCTL_UG is not set
|
||||
CONFIG_VCONFIG=y
|
||||
CONFIG_WGET=y
|
||||
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
|
||||
CONFIG_FEATURE_WGET_STATUSBAR=y
|
||||
CONFIG_FEATURE_WGET_AUTHENTICATION=y
|
||||
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
|
||||
CONFIG_FEATURE_WGET_TIMEOUT=y
|
||||
# CONFIG_FEATURE_WGET_HTTPS is not set
|
||||
# CONFIG_FEATURE_WGET_OPENSSL is not set
|
||||
# CONFIG_FEATURE_WGET_SSL_HELPER is not set
|
||||
# CONFIG_WHOIS is not set
|
||||
# CONFIG_ZCIP is not set
|
||||
# CONFIG_UDHCPC6 is not set
|
||||
# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
|
||||
# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
|
||||
# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
|
||||
# CONFIG_UDHCPD is not set
|
||||
# CONFIG_DHCPRELAY is not set
|
||||
# CONFIG_DUMPLEASES is not set
|
||||
# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
|
||||
# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
|
||||
CONFIG_DHCPD_LEASES_FILE=""
|
||||
# CONFIG_DUMPLEASES is not set
|
||||
# CONFIG_DHCPRELAY is not set
|
||||
CONFIG_UDHCPC=y
|
||||
CONFIG_FEATURE_UDHCPC_ARPING=y
|
||||
CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y
|
||||
CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
|
||||
# CONFIG_FEATURE_UDHCP_PORT is not set
|
||||
CONFIG_UDHCP_DEBUG=0
|
||||
# CONFIG_FEATURE_UDHCP_RFC3397 is not set
|
||||
CONFIG_FEATURE_UDHCP_8021Q=y
|
||||
CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
|
||||
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
|
||||
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
|
||||
|
||||
@@ -973,18 +992,19 @@ CONFIG_FEATURE_PIDOF_SINGLE=y
|
||||
CONFIG_FEATURE_PIDOF_OMIT=y
|
||||
# CONFIG_PMAP is not set
|
||||
# CONFIG_POWERTOP is not set
|
||||
# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set
|
||||
CONFIG_PS=y
|
||||
# CONFIG_FEATURE_PS_WIDE is not set
|
||||
# CONFIG_FEATURE_PS_LONG is not set
|
||||
# CONFIG_FEATURE_PS_TIME is not set
|
||||
# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
|
||||
# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
|
||||
# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
|
||||
# CONFIG_PSTREE is not set
|
||||
# CONFIG_PWDX is not set
|
||||
CONFIG_RENICE=y
|
||||
# CONFIG_SMEMCAP is not set
|
||||
CONFIG_BB_SYSCTL=y
|
||||
CONFIG_TOP=y
|
||||
CONFIG_FEATURE_TOP_INTERACTIVE=y
|
||||
CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
|
||||
CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
|
||||
# CONFIG_FEATURE_TOP_SMP_CPU is not set
|
||||
@@ -1030,27 +1050,32 @@ CONFIG_SVC=y
|
||||
#
|
||||
# Shells
|
||||
#
|
||||
CONFIG_SH_IS_ASH=y
|
||||
# CONFIG_SH_IS_HUSH is not set
|
||||
# CONFIG_SH_IS_NONE is not set
|
||||
# CONFIG_BASH_IS_ASH is not set
|
||||
# CONFIG_BASH_IS_HUSH is not set
|
||||
CONFIG_BASH_IS_NONE=y
|
||||
CONFIG_ASH=y
|
||||
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_ASH_INTERNAL_GLOB=y
|
||||
CONFIG_ASH_RANDOM_SUPPORT=y
|
||||
CONFIG_ASH_EXPAND_PRMT=y
|
||||
CONFIG_ASH_BASH_COMPAT=y
|
||||
CONFIG_ASH_IDLE_TIMEOUT=y
|
||||
CONFIG_ASH_JOB_CONTROL=y
|
||||
CONFIG_ASH_ALIAS=y
|
||||
CONFIG_ASH_GETOPTS=y
|
||||
CONFIG_ASH_BUILTIN_ECHO=y
|
||||
CONFIG_ASH_BUILTIN_PRINTF=y
|
||||
CONFIG_ASH_BUILTIN_TEST=y
|
||||
CONFIG_ASH_HELP=y
|
||||
CONFIG_ASH_CMDCMD=y
|
||||
CONFIG_ASH_RANDOM_SUPPORT=y
|
||||
CONFIG_ASH_EXPAND_PRMT=y
|
||||
CONFIG_ASH_IDLE_TIMEOUT=y
|
||||
# CONFIG_ASH_MAIL is not set
|
||||
CONFIG_ASH_ECHO=y
|
||||
CONFIG_ASH_PRINTF=y
|
||||
CONFIG_ASH_TEST=y
|
||||
CONFIG_ASH_HELP=y
|
||||
CONFIG_ASH_GETOPTS=y
|
||||
CONFIG_ASH_CMDCMD=y
|
||||
# CONFIG_CTTYHACK is not set
|
||||
# CONFIG_HUSH is not set
|
||||
# CONFIG_HUSH_BASH_COMPAT is not set
|
||||
# CONFIG_HUSH_BRACE_EXPANSION is not set
|
||||
# CONFIG_HUSH_HELP is not set
|
||||
# CONFIG_HUSH_INTERACTIVE is not set
|
||||
# CONFIG_HUSH_SAVEHISTORY is not set
|
||||
# CONFIG_HUSH_JOB is not set
|
||||
@@ -1061,17 +1086,30 @@ CONFIG_ASH_CMDCMD=y
|
||||
# CONFIG_HUSH_FUNCTIONS is not set
|
||||
# CONFIG_HUSH_LOCAL is not set
|
||||
# CONFIG_HUSH_RANDOM_SUPPORT is not set
|
||||
# CONFIG_HUSH_EXPORT_N is not set
|
||||
# CONFIG_HUSH_MODE_X is not set
|
||||
# CONFIG_HUSH_ECHO is not set
|
||||
# CONFIG_HUSH_PRINTF is not set
|
||||
# CONFIG_HUSH_TEST is not set
|
||||
# CONFIG_HUSH_HELP is not set
|
||||
# CONFIG_HUSH_EXPORT is not set
|
||||
# CONFIG_HUSH_EXPORT_N is not set
|
||||
# CONFIG_HUSH_KILL is not set
|
||||
# CONFIG_HUSH_WAIT is not set
|
||||
# CONFIG_HUSH_TRAP is not set
|
||||
# CONFIG_HUSH_TYPE is not set
|
||||
# CONFIG_HUSH_READ is not set
|
||||
# CONFIG_HUSH_SET is not set
|
||||
# CONFIG_HUSH_UNSET is not set
|
||||
# CONFIG_HUSH_ULIMIT is not set
|
||||
# CONFIG_HUSH_UMASK is not set
|
||||
# CONFIG_HUSH_MEMLEAK is not set
|
||||
# CONFIG_MSH is not set
|
||||
CONFIG_FEATURE_SH_IS_ASH=y
|
||||
# CONFIG_FEATURE_SH_IS_HUSH is not set
|
||||
# CONFIG_FEATURE_SH_IS_NONE is not set
|
||||
# CONFIG_FEATURE_BASH_IS_ASH is not set
|
||||
# CONFIG_FEATURE_BASH_IS_HUSH is not set
|
||||
CONFIG_FEATURE_BASH_IS_NONE=y
|
||||
CONFIG_SH_MATH_SUPPORT=y
|
||||
# CONFIG_SH_MATH_SUPPORT_64 is not set
|
||||
|
||||
#
|
||||
# Options common to all shells
|
||||
#
|
||||
CONFIG_FEATURE_SH_MATH=y
|
||||
CONFIG_FEATURE_SH_MATH_64=y
|
||||
CONFIG_FEATURE_SH_EXTRA_QUIET=y
|
||||
# CONFIG_FEATURE_SH_STANDALONE is not set
|
||||
# CONFIG_FEATURE_SH_NOFORK is not set
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# From https://busybox.net/downloads/busybox-1.26.2.tar.bz2.sign
|
||||
md5 bb59d25ee2643db20f212eec539429f1 busybox-1.26.2.tar.bz2
|
||||
sha1 0b3e3cd49d6d9e30f66e364bf842663348b23dc9 busybox-1.26.2.tar.bz2
|
||||
# From https://busybox.net/downloads/busybox-1.27.2.tar.bz2.sign
|
||||
md5 476186f4bab81781dab2369bfd42734e busybox-1.27.2.tar.bz2
|
||||
sha1 11669e223cc38de646ce26080e91ca29b8d42ad9 busybox-1.27.2.tar.bz2
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
BUSYBOX_VERSION = 1.26.2
|
||||
BUSYBOX_VERSION = 1.27.2
|
||||
BUSYBOX_SITE = http://www.busybox.net/downloads
|
||||
BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2
|
||||
BUSYBOX_LICENSE = GPLv2
|
||||
|
||||
Reference in New Issue
Block a user