Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package busybox for openSUSE:Factory checked in at 2021-05-12 19:31:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/busybox (Old) and /work/SRC/openSUSE:Factory/.busybox.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "busybox" Wed May 12 19:31:42 2021 rev:67 rq:892050 version:1.33.1 Changes: -------- --- /work/SRC/openSUSE:Factory/busybox/busybox.changes 2021-02-07 15:14:28.873416095 +0100 +++ /work/SRC/openSUSE:Factory/.busybox.new.2988/busybox.changes 2021-05-12 19:32:06.487067343 +0200 @@ -1,0 +2,12 @@ +Fri May 7 19:04:53 UTC 2021 - Andreas Stieger <andreas.stie...@gmx.de> + +- update to 1.33.1: + * httpd: fix sendfile + * ash: fix HISTFILE corruptio + * ash: fix unset variable pattern expansion + * traceroute: fix option parsing + * gunzip: fix for archive corruption +- drop update_passwd_selinux_fix.patch, included upstream +- add upstream signing key and verify source signature + +------------------------------------------------------------------- Old: ---- busybox-1.33.0.tar.bz2 update_passwd_selinux_fix.patch New: ---- busybox-1.33.1.tar.bz2 busybox-1.33.1.tar.bz2.sig busybox.keyring ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ busybox.spec ++++++ --- /var/tmp/diff_new_pack.Yp5zYG/_old 2021-05-12 19:32:07.071065010 +0200 +++ /var/tmp/diff_new_pack.Yp5zYG/_new 2021-05-12 19:32:07.071065010 +0200 @@ -17,21 +17,21 @@ Name: busybox -Version: 1.33.0 +Version: 1.33.1 Release: 0 Summary: Minimalist variant of UNIX utilities linked in a single executable License: GPL-2.0-or-later Group: System/Base -URL: http://www.busybox.net/ -Source: http://busybox.net/downloads/%{name}-%{version}.tar.bz2 +URL: https://www.busybox.net/ +Source: https://busybox.net/downloads/%{name}-%{version}.tar.bz2 Source1: BusyBox.1 Source2: busybox.config Source3: busybox-static.config Source4: man.conf +Source5: https://busybox.net/downloads/%{name}-%{version}.tar.bz2.sig +Source6: https://busybox.net/~vda/vda_pubkey.gpg#/%{name}.keyring Patch0: cpio-long-opt.patch Patch1: sendmail-ignore-F-option.patch -# Compile fix from upstream -Patch10: update_passwd_selinux_fix.patch # other patches Patch100: busybox.install.patch Provides: useradd_or_adduser_dep @@ -76,7 +76,6 @@ %setup -q %patch0 -p1 %patch1 -p1 -%patch10 -p1 %patch100 -p0 cp -a %{SOURCE1} docs/ find "(" -name CVS -o -name .cvsignore -o -name .svn -o -name .gitignore ")" \ ++++++ busybox-1.33.0.tar.bz2 -> busybox-1.33.1.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/0003-httpd-fix-offset-for-sendfile.patch new/busybox-1.33.1/0003-httpd-fix-offset-for-sendfile.patch --- old/busybox-1.33.0/0003-httpd-fix-offset-for-sendfile.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/busybox-1.33.1/0003-httpd-fix-offset-for-sendfile.patch 2021-03-09 00:23:30.000000000 +0100 @@ -0,0 +1,48 @@ +From 04e0d8e579b289178b0303a92c705012237f4ca3 Mon Sep 17 00:00:00 2001 +From: Maxim Storchak <m.storc...@gmail.com> +Date: Tue, 29 Dec 2020 17:29:05 +0200 +Subject: [PATCH 03/65] httpd: fix offset for sendfile + +If the Range: header is not present it the request, +the offset passed to sendfile is wrong, +and httpd falls back to the read-write loop. + +function old new delta +send_file_and_exit 857 865 +8 +handle_incoming_and_exit 2239 2230 -9 +------------------------------------------------------------------------------ +(add/remove: 0/0 grow/shrink: 1/1 up/down: 8/-9) Total: -1 bytes + +Signed-off-by: Maxim Storchak <m.storc...@gmail.com> +Signed-off-by: Denys Vlasenko <vda.li...@googlemail.com> +--- + networking/httpd.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/networking/httpd.c b/networking/httpd.c +index 4346141ee..4c014bc71 100644 +--- a/networking/httpd.c ++++ b/networking/httpd.c +@@ -1871,7 +1871,7 @@ static NOINLINE void send_file_and_exit(const char *url, int what) + send_headers(HTTP_OK); + #if ENABLE_FEATURE_USE_SENDFILE + { +- off_t offset = range_start; ++ off_t offset = (range_start < 0) ? 0 : range_start; + while (1) { + /* sz is rounded down to 64k */ + ssize_t sz = MAXINT(ssize_t) - 0xffff; +@@ -2486,8 +2486,8 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr) + if (STRNCASECMP(iobuf, "Range:") == 0) { + /* We know only bytes=NNN-[MMM] */ + char *s = skip_whitespace(iobuf + sizeof("Range:")-1); +- if (is_prefixed_with(s, "bytes=")) { +- s += sizeof("bytes=")-1; ++ s = is_prefixed_with(s, "bytes="); ++ if (s) { + range_start = BB_STRTOOFF(s, &s, 10); + if (s[0] != '-' || range_start < 0) { + range_start = -1; +-- +2.30.0 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/0011-ash-make-a-strdup-copy-of-HISTFILE-for-line-editing.patch new/busybox-1.33.1/0011-ash-make-a-strdup-copy-of-HISTFILE-for-line-editing.patch --- old/busybox-1.33.0/0011-ash-make-a-strdup-copy-of-HISTFILE-for-line-editing.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/busybox-1.33.1/0011-ash-make-a-strdup-copy-of-HISTFILE-for-line-editing.patch 2021-03-09 00:23:30.000000000 +0100 @@ -0,0 +1,40 @@ +From 3f8ec00b0c54790283cfec675716ef4b8e00bd8a Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko <vda.li...@googlemail.com> +Date: Sun, 3 Jan 2021 10:55:39 +0100 +Subject: [PATCH 11/65] ash: make a strdup copy of $HISTFILE for line editing + +Otherwise if $HISTFILE is unset or reassigned, bad things can happen. + +function old new delta +ash_main 1210 1218 +8 + +Signed-off-by: Denys Vlasenko <vda.li...@googlemail.com> +--- + shell/ash.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/shell/ash.c b/shell/ash.c +index 54f004375..f9d59e50e 100644 +--- a/shell/ash.c ++++ b/shell/ash.c +@@ -14499,7 +14499,7 @@ int ash_main(int argc UNUSED_PARAM, char **argv) + + if (sflag || minusc == NULL) { + #if MAX_HISTORY > 0 && ENABLE_FEATURE_EDITING_SAVEHISTORY +- if (iflag) { ++ if (line_input_state) { + const char *hp = lookupvar("HISTFILE"); + if (!hp) { + hp = lookupvar("HOME"); +@@ -14513,7 +14513,7 @@ int ash_main(int argc UNUSED_PARAM, char **argv) + } + } + if (hp) +- line_input_state->hist_file = hp; ++ line_input_state->hist_file = xstrdup(hp); + # if ENABLE_FEATURE_SH_HISTFILESIZE + hp = lookupvar("HISTFILESIZE"); + line_input_state->max_history = size_from_HISTFILESIZE(hp); +-- +2.30.0 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/0030-ash-fix-unset_var-pattern-repl.patch new/busybox-1.33.1/0030-ash-fix-unset_var-pattern-repl.patch --- old/busybox-1.33.0/0030-ash-fix-unset_var-pattern-repl.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/busybox-1.33.1/0030-ash-fix-unset_var-pattern-repl.patch 2021-05-03 20:02:47.000000000 +0200 @@ -0,0 +1,50 @@ +From 883cdb79a440d0425766f67aaef0cabde0a5060e Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko <vda.li...@googlemail.com> +Date: Sat, 9 Jan 2021 08:27:37 +0100 +Subject: [PATCH 030/187] ash: fix ${unset_var/pattern/repl} + +function old new delta +subevalvar 1349 1353 +4 + +Signed-off-by: Denys Vlasenko <vda.li...@googlemail.com> +--- + shell/ash.c | 3 ++- + shell/ash_test/ash-vars/var_bash_repl_empty_var.right | 1 + + shell/ash_test/ash-vars/var_bash_repl_empty_var.tests | 2 ++ + 3 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/shell/ash.c b/shell/ash.c +index 37f9dd71b..76bf39ec2 100644 +--- a/shell/ash.c ++++ b/shell/ash.c +@@ -7015,7 +7015,8 @@ subevalvar(char *start, char *str, int strloc, + slash_pos = -1; + if (repl) { + slash_pos = expdest - ((char *)stackblock() + strloc); +- STPUTC('/', expdest); ++ if (!(flag & EXP_DISCARD)) ++ STPUTC('/', expdest); + //bb_error_msg("repl+1:'%s'", repl + 1); + p = argstr(repl + 1, (flag & EXP_DISCARD) | EXP_TILDE); /* EXP_TILDE: echo "${v/x/~}" expands ~ ! */ + *repl = '/'; +diff --git a/shell/ash_test/ash-vars/var_bash_repl_empty_var.right b/shell/ash_test/ash-vars/var_bash_repl_empty_var.right +index 892916783..cf8f088c1 100644 +--- a/shell/ash_test/ash-vars/var_bash_repl_empty_var.right ++++ b/shell/ash_test/ash-vars/var_bash_repl_empty_var.right +@@ -1,2 +1,3 @@ + ++ + Ok:0 +diff --git a/shell/ash_test/ash-vars/var_bash_repl_empty_var.tests b/shell/ash_test/ash-vars/var_bash_repl_empty_var.tests +index 73a43d38e..22aaba560 100755 +--- a/shell/ash_test/ash-vars/var_bash_repl_empty_var.tests ++++ b/shell/ash_test/ash-vars/var_bash_repl_empty_var.tests +@@ -1,3 +1,5 @@ ++unset v ++echo ${v/*/w} + v='' + echo ${v/*/w} + echo Ok:$? +-- +2.30.0 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/0032-update_passwd-fix-context-variable.patch new/busybox-1.33.1/0032-update_passwd-fix-context-variable.patch --- old/busybox-1.33.0/0032-update_passwd-fix-context-variable.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/busybox-1.33.1/0032-update_passwd-fix-context-variable.patch 2021-03-09 00:23:30.000000000 +0100 @@ -0,0 +1,39 @@ +From 808d93c0eca49e0b22056e23d965f0d967433fbb Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls <bernd.ku...@t-online.de> +Date: Sun, 10 Jan 2021 13:20:44 +0100 +Subject: [PATCH 32/65] update_passwd: fix context variable + +Commit +https://git.busybox.net/busybox/commit/libbb/update_passwd.c?id=2496616b0a8d1c80cd1416b73a4847b59b9f969a + +changed the variable used from context to seuser but forgot this +change resulting in build errors detected by buildroot autobuilders: + +http://autobuild.buildroot.net/results/b89/b89b7d0f0601bb706e76cea31cf4e43326e5540c//build-end.log + +libbb/update_passwd.c:51:11: error: 'context' undeclared (first use in + this function); did you mean 'ucontext'? + freecon(context); + +Signed-off-by: Bernd Kuhls <bernd.ku...@t-online.de> +Signed-off-by: Denys Vlasenko <vda.li...@googlemail.com> +--- + libbb/update_passwd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libbb/update_passwd.c b/libbb/update_passwd.c +index 7b67f30cd..a228075cc 100644 +--- a/libbb/update_passwd.c ++++ b/libbb/update_passwd.c +@@ -48,7 +48,7 @@ static void check_selinux_update_passwd(const char *username) + bb_simple_error_msg_and_die("SELinux: access denied"); + } + if (ENABLE_FEATURE_CLEAN_UP) +- freecon(context); ++ freecon(seuser); + } + #else + # define check_selinux_update_passwd(username) ((void)0) +-- +2.30.0 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/0033-traceroute-fix-option-parsing.patch new/busybox-1.33.1/0033-traceroute-fix-option-parsing.patch --- old/busybox-1.33.0/0033-traceroute-fix-option-parsing.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/busybox-1.33.1/0033-traceroute-fix-option-parsing.patch 2021-03-09 00:23:30.000000000 +0100 @@ -0,0 +1,26 @@ +From f3a55b306ed3803133ab028b72b255c65d94197f Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko <vda.li...@googlemail.com> +Date: Tue, 2 Feb 2021 13:48:21 +0100 +Subject: [PATCH 33/65] traceroute: fix option parsing + +Signed-off-by: Denys Vlasenko <vda.li...@googlemail.com> +--- + networking/traceroute.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/networking/traceroute.c b/networking/traceroute.c +index 8f5cd0bf2..057f8591a 100644 +--- a/networking/traceroute.c ++++ b/networking/traceroute.c +@@ -896,7 +896,7 @@ traceroute_init(int op, char **argv) + + op |= getopt32(argv, "^" + OPT_STRING +- "\0" "-1:x-x" /* minimum 1 arg */ ++ "\0" "-1" /* minimum 1 arg */ + , &tos_str, &device, &max_ttl_str, &port_str, &nprobes_str + , &source, &waittime_str, &pausemsecs_str, &first_ttl_str + ); +-- +2.30.0 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/0070-decompress_gunzip-Fix-DoS-if-gzip-is-corrupt.patch new/busybox-1.33.1/0070-decompress_gunzip-Fix-DoS-if-gzip-is-corrupt.patch --- old/busybox-1.33.0/0070-decompress_gunzip-Fix-DoS-if-gzip-is-corrupt.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/busybox-1.33.1/0070-decompress_gunzip-Fix-DoS-if-gzip-is-corrupt.patch 2021-03-12 10:48:57.000000000 +0100 @@ -0,0 +1,57 @@ +From f25d254dfd4243698c31a4f3153d4ac72aa9e9bd Mon Sep 17 00:00:00 2001 +From: Samuel Sapalski <samuel.sapal...@nokia.com> +Date: Wed, 3 Mar 2021 16:31:22 +0100 +Subject: [PATCH 70/70] decompress_gunzip: Fix DoS if gzip is corrupt + +On certain corrupt gzip files, huft_build will set the error bit on +the result pointer. If afterwards abort_unzip is called huft_free +might run into a segmentation fault or an invalid pointer to +free(p). + +In order to mitigate this, we check in huft_free if the error bit +is set and clear it before the linked list is freed. + +Signed-off-by: Samuel Sapalski <samuel.sapal...@nokia.com> +Signed-off-by: Peter Kaestle <peter.kaes...@nokia.com> +Signed-off-by: Denys Vlasenko <vda.li...@googlemail.com> +--- + archival/libarchive/decompress_gunzip.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/archival/libarchive/decompress_gunzip.c b/archival/libarchive/decompress_gunzip.c +index eb3b64930..e93cd5005 100644 +--- a/archival/libarchive/decompress_gunzip.c ++++ b/archival/libarchive/decompress_gunzip.c +@@ -220,10 +220,20 @@ static const uint8_t border[] ALIGN1 = { + * each table. + * t: table to free + */ ++#define BAD_HUFT(p) ((uintptr_t)(p) & 1) ++#define ERR_RET ((huft_t*)(uintptr_t)1) + static void huft_free(huft_t *p) + { + huft_t *q; + ++ /* ++ * If 'p' has the error bit set we have to clear it, otherwise we might run ++ * into a segmentation fault or an invalid pointer to free(p) ++ */ ++ if (BAD_HUFT(p)) { ++ p = (huft_t*)((uintptr_t)(p) ^ (uintptr_t)(ERR_RET)); ++ } ++ + /* Go through linked list, freeing from the malloced (t[-1]) address. */ + while (p) { + q = (--p)->v.t; +@@ -289,8 +299,6 @@ static unsigned fill_bitbuffer(STATE_PARAM unsigned bitbuffer, unsigned *current + * or a valid pointer to a Huffman table, ORed with 0x1 if incompete table + * is given: "fixed inflate" decoder feeds us such data. + */ +-#define BAD_HUFT(p) ((uintptr_t)(p) & 1) +-#define ERR_RET ((huft_t*)(uintptr_t)1) + static huft_t* huft_build(const unsigned *b, const unsigned n, + const unsigned s, const struct cp_ext *cp_ext, + unsigned *m) +-- +2.30.0 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/0MKPATCH new/busybox-1.33.1/0MKPATCH --- old/busybox-1.33.0/0MKPATCH 1970-01-01 01:00:00.000000000 +0100 +++ new/busybox-1.33.1/0MKPATCH 2021-05-03 14:48:57.000000000 +0200 @@ -0,0 +1,3 @@ +#!/bin/sh + +git format-patch a4c3a341394a1fb25be8c15d2ddfe3ec77cbb83c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/Makefile new/busybox-1.33.1/Makefile --- old/busybox-1.33.0/Makefile 2020-12-29 17:46:47.000000000 +0100 +++ new/busybox-1.33.1/Makefile 2021-05-03 20:07:13.000000000 +0200 @@ -1,6 +1,6 @@ VERSION = 1 PATCHLEVEL = 33 -SUBLEVEL = 0 +SUBLEVEL = 1 EXTRAVERSION = NAME = Unnamed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/archival/libarchive/decompress_gunzip.c new/busybox-1.33.1/archival/libarchive/decompress_gunzip.c --- old/busybox-1.33.0/archival/libarchive/decompress_gunzip.c 2020-12-29 17:46:47.000000000 +0100 +++ new/busybox-1.33.1/archival/libarchive/decompress_gunzip.c 2021-05-03 14:50:09.000000000 +0200 @@ -220,10 +220,20 @@ * each table. * t: table to free */ +#define BAD_HUFT(p) ((uintptr_t)(p) & 1) +#define ERR_RET ((huft_t*)(uintptr_t)1) static void huft_free(huft_t *p) { huft_t *q; + /* + * If 'p' has the error bit set we have to clear it, otherwise we might run + * into a segmentation fault or an invalid pointer to free(p) + */ + if (BAD_HUFT(p)) { + p = (huft_t*)((uintptr_t)(p) ^ (uintptr_t)(ERR_RET)); + } + /* Go through linked list, freeing from the malloced (t[-1]) address. */ while (p) { q = (--p)->v.t; @@ -289,8 +299,6 @@ * or a valid pointer to a Huffman table, ORed with 0x1 if incompete table * is given: "fixed inflate" decoder feeds us such data. */ -#define BAD_HUFT(p) ((uintptr_t)(p) & 1) -#define ERR_RET ((huft_t*)(uintptr_t)1) static huft_t* huft_build(const unsigned *b, const unsigned n, const unsigned s, const struct cp_ext *cp_ext, unsigned *m) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/libbb/update_passwd.c new/busybox-1.33.1/libbb/update_passwd.c --- old/busybox-1.33.0/libbb/update_passwd.c 2020-12-29 17:46:47.000000000 +0100 +++ new/busybox-1.33.1/libbb/update_passwd.c 2021-03-09 00:28:26.000000000 +0100 @@ -48,7 +48,7 @@ bb_simple_error_msg_and_die("SELinux: access denied"); } if (ENABLE_FEATURE_CLEAN_UP) - freecon(context); + freecon(seuser); } #else # define check_selinux_update_passwd(username) ((void)0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/networking/httpd.c new/busybox-1.33.1/networking/httpd.c --- old/busybox-1.33.0/networking/httpd.c 2020-12-29 17:46:47.000000000 +0100 +++ new/busybox-1.33.1/networking/httpd.c 2021-03-09 00:28:26.000000000 +0100 @@ -1871,7 +1871,7 @@ send_headers(HTTP_OK); #if ENABLE_FEATURE_USE_SENDFILE { - off_t offset = range_start; + off_t offset = (range_start < 0) ? 0 : range_start; while (1) { /* sz is rounded down to 64k */ ssize_t sz = MAXINT(ssize_t) - 0xffff; @@ -2486,8 +2486,8 @@ if (STRNCASECMP(iobuf, "Range:") == 0) { /* We know only bytes=NNN-[MMM] */ char *s = skip_whitespace(iobuf + sizeof("Range:")-1); - if (is_prefixed_with(s, "bytes=")) { - s += sizeof("bytes=")-1; + s = is_prefixed_with(s, "bytes="); + if (s) { range_start = BB_STRTOOFF(s, &s, 10); if (s[0] != '-' || range_start < 0) { range_start = -1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/networking/traceroute.c new/busybox-1.33.1/networking/traceroute.c --- old/busybox-1.33.0/networking/traceroute.c 2020-12-29 17:46:47.000000000 +0100 +++ new/busybox-1.33.1/networking/traceroute.c 2021-03-09 00:28:26.000000000 +0100 @@ -896,7 +896,7 @@ op |= getopt32(argv, "^" OPT_STRING - "\0" "-1:x-x" /* minimum 1 arg */ + "\0" "-1" /* minimum 1 arg */ , &tos_str, &device, &max_ttl_str, &port_str, &nprobes_str , &source, &waittime_str, &pausemsecs_str, &first_ttl_str ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/shell/ash.c new/busybox-1.33.1/shell/ash.c --- old/busybox-1.33.0/shell/ash.c 2020-12-29 17:46:47.000000000 +0100 +++ new/busybox-1.33.1/shell/ash.c 2021-05-03 20:06:49.000000000 +0200 @@ -7011,7 +7011,8 @@ slash_pos = -1; if (repl) { slash_pos = expdest - ((char *)stackblock() + strloc); - STPUTC('/', expdest); + if (!(flag & EXP_DISCARD)) + STPUTC('/', expdest); //bb_error_msg("repl+1:'%s'", repl + 1); p = argstr(repl + 1, (flag & EXP_DISCARD) | EXP_TILDE); /* EXP_TILDE: echo "${v/x/~}" expands ~ ! */ *repl = '/'; @@ -14499,7 +14500,7 @@ if (sflag || minusc == NULL) { #if MAX_HISTORY > 0 && ENABLE_FEATURE_EDITING_SAVEHISTORY - if (iflag) { + if (line_input_state) { const char *hp = lookupvar("HISTFILE"); if (!hp) { hp = lookupvar("HOME"); @@ -14513,7 +14514,7 @@ } } if (hp) - line_input_state->hist_file = hp; + line_input_state->hist_file = xstrdup(hp); # if ENABLE_FEATURE_SH_HISTFILESIZE hp = lookupvar("HISTFILESIZE"); line_input_state->max_history = size_from_HISTFILESIZE(hp); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/shell/ash_test/ash-vars/var_bash_repl_empty_var.right new/busybox-1.33.1/shell/ash_test/ash-vars/var_bash_repl_empty_var.right --- old/busybox-1.33.0/shell/ash_test/ash-vars/var_bash_repl_empty_var.right 2020-12-29 17:46:47.000000000 +0100 +++ new/busybox-1.33.1/shell/ash_test/ash-vars/var_bash_repl_empty_var.right 2021-05-03 20:06:49.000000000 +0200 @@ -1,2 +1,3 @@ + Ok:0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/busybox-1.33.0/shell/ash_test/ash-vars/var_bash_repl_empty_var.tests new/busybox-1.33.1/shell/ash_test/ash-vars/var_bash_repl_empty_var.tests --- old/busybox-1.33.0/shell/ash_test/ash-vars/var_bash_repl_empty_var.tests 2020-12-29 17:46:47.000000000 +0100 +++ new/busybox-1.33.1/shell/ash_test/ash-vars/var_bash_repl_empty_var.tests 2021-05-03 20:06:49.000000000 +0200 @@ -1,3 +1,5 @@ +unset v +echo ${v/*/w} v='' echo ${v/*/w} echo Ok:$?