From patchwork Tue Aug 13 16:19:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adolf Belka X-Patchwork-Id: 8000 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R11" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4WjxSP4ynjz3wwl for ; Tue, 13 Aug 2024 16:20:21 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) client-signature ECDSA (secp384r1)) (Client CN "mail02.haj.ipfire.org", Issuer "E5" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4WjxSM4QN1z60Z; Tue, 13 Aug 2024 16:20:19 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4WjxSM30STz3442; Tue, 13 Aug 2024 16:20:19 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R11" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4WjxSB4YqLz343G for ; Tue, 13 Aug 2024 16:20:10 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4WjxSB0rJgz5M4; Tue, 13 Aug 2024 16:20:10 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1723566010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+wYRtsb+wk6vtz8mWQXn4pJ5L3D1PrKvxTPxCi/TnGo=; b=s7a6KDgRL2f/sNfLOMxJmkX4NAf46qguEjaizcFGdDm5ztdgmetWI4ShY7LGLreGKjl5N/ wCPEA285DEtpU6Bg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1723566010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+wYRtsb+wk6vtz8mWQXn4pJ5L3D1PrKvxTPxCi/TnGo=; b=deNnCw/ZU+0b2YuZfd+SsX5Zq0Pr1jmLBd0K8kXpn8wN9VthCUShqOR73BkR92OwtG0oD2 5VicjKoygYREIXG7gGt3B/LKcD9ieV2TIy4tftRcEk2h+6u+EYOTFbaobH/JzN/LmP/EqK gwNq8ind5X+0l4yGYBGI9JdUUyyFvX2mcKJL0pkW4wwZumuU0l4tATD5dKADJquwOlK3E9 6M4YGJk19ImplOD7HJXDsZJYZgnEnfSw2l6qghgKuUSKqnbMloWCDY36MM5jDYD2/2FA11 KFRwE944TNucIuT/dkfclv7XAH1sXJaCKjIERfEFKLn++LFEwLu/AeK/MnMhNw== From: Adolf Belka To: development@lists.ipfire.org Subject: [PATCH] readline: Update patches to include 11 - 13 Date: Tue, 13 Aug 2024 18:19:46 +0200 Message-ID: <20240813162000.1113995-11-adolf.belka@ipfire.org> In-Reply-To: <20240813162000.1113995-1-adolf.belka@ipfire.org> References: <20240813162000.1113995-1-adolf.belka@ipfire.org> MIME-Version: 1.0 Message-ID-Hash: RXLB7VKUSW2Z3YJYGWP26FNGMAAQEGNL X-Message-ID-Hash: RXLB7VKUSW2Z3YJYGWP26FNGMAAQEGNL X-MailFrom: adolf.belka@ipfire.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: IPFire development talk Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: - Update patches from 1 - 10 to 1 - 13 - Update of rootfile not required - Changelog of patches 11 Some systems (e.g., macOS) send signals early on in interactive initialization, so readline should retry a failed open of the init file. 12 If a user happens to bind do-lowercase-version to something that isn't a capital letter, so _rl_to_lower doesn't change anything and the result is still bound to do-lowercase-version, readline can recurse infinitely. 13 When readline is accumulating bytes until it reads a complete multibyte character, reading a byte that makes the multibyte character invalid can result in discarding the bytes in the partial character. Signed-off-by: Adolf Belka --- lfs/readline | 2 +- src/patches/readline/readline82-011 | 75 +++++++++ src/patches/readline/readline82-012 | 93 +++++++++++ src/patches/readline/readline82-013 | 234 ++++++++++++++++++++++++++++ 4 files changed, 403 insertions(+), 1 deletion(-) create mode 100644 src/patches/readline/readline82-011 create mode 100644 src/patches/readline/readline82-012 create mode 100644 src/patches/readline/readline82-013 diff --git a/lfs/readline b/lfs/readline index 05d140de1..cfe4cbf18 100644 --- a/lfs/readline +++ b/lfs/readline @@ -72,7 +72,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - for i in $$(seq 1 10); do \ + for i in $$(seq 1 13); do \ cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline82-$$(printf "%03d" "$${i}") || exit 1; \ done diff --git a/src/patches/readline/readline82-011 b/src/patches/readline/readline82-011 new file mode 100644 index 000000000..3ad7a8ffd --- /dev/null +++ b/src/patches/readline/readline82-011 @@ -0,0 +1,75 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 8.2 +Patch-ID: readline82-011 + +Bug-Reported-by: Grisha Levit +Bug-Reference-ID: +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2024-02/msg00075.html + +Bug-Description: + +Patch (apply with `patch -p0'): + +Some systems (e.g., macOS) send signals early on in interactive initialization, +so readline should retry a failed open of the init file. + +*** ../readline-8.2-patched/bind.c Wed Feb 9 11:02:22 2022 +--- bind.c Tue Apr 23 15:07:13 2024 +*************** +*** 979,987 **** + int i, file; + +! file = -1; +! if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0)) + { + if (file >= 0) + close (file); + return ((char *)NULL); + } +--- 969,986 ---- + int i, file; + +! file = open (filename, O_RDONLY, 0666); +! /* If the open is interrupted, retry once */ +! if (file < 0 && errno == EINTR) + { ++ RL_CHECK_SIGNALS (); ++ file = open (filename, O_RDONLY, 0666); ++ } ++ ++ if ((file < 0) || (fstat (file, &finfo) < 0)) ++ { ++ i = errno; + if (file >= 0) + close (file); ++ errno = i; + return ((char *)NULL); + } +*************** +*** 992,999 **** +--- 991,1001 ---- + if (file_size != finfo.st_size || file_size + 1 < file_size) + { ++ i = errno; + if (file >= 0) + close (file); + #if defined (EFBIG) + errno = EFBIG; ++ #else ++ errno = i; + #endif + return ((char *)NULL); + +*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500 +--- patchlevel 2014-03-21 08:28:40.000000000 -0400 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 10 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 11 diff --git a/src/patches/readline/readline82-012 b/src/patches/readline/readline82-012 new file mode 100644 index 000000000..cbcb4cdaf --- /dev/null +++ b/src/patches/readline/readline82-012 @@ -0,0 +1,93 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 8.2 +Patch-ID: readline82-012 + +Bug-Reported-by: Grisha Levit +Bug-Reference-ID: +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2023-11/msg00019.html + +Bug-Description: + +If a user happens to bind do-lowercase-version to something that isn't a +capital letter, so _rl_to_lower doesn't change anything and the result is +still bound to do-lowercase-version, readline can recurse infinitely. + +Patch (apply with `patch -p0'): + +*** ../readline-8.2-patched/readline.c Thu Aug 11 18:35:37 2022 +--- readline.c Fri Feb 2 12:05:36 2024 +*************** +*** 900,905 **** + /* Special case rl_do_lowercase_version (). */ + if (func == rl_do_lowercase_version) +! /* Should we do anything special if key == ANYOTHERKEY? */ +! return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map)); + + rl_executing_keymap = map; +--- 912,926 ---- + /* Special case rl_do_lowercase_version (). */ + if (func == rl_do_lowercase_version) +! { +! /* Should we do anything special if key == ANYOTHERKEY? */ +! newkey = _rl_to_lower ((unsigned char)key); +! if (newkey != key) +! return (_rl_dispatch (newkey, map)); +! else +! { +! rl_ding (); /* gentle failure */ +! return 0; +! } +! } + + rl_executing_keymap = map; +*************** +*** 1110,1114 **** + func = m[ANYOTHERKEY].function; + if (type == ISFUNC && func == rl_do_lowercase_version) +! r = _rl_dispatch (_rl_to_lower ((unsigned char)key), map); + else if (type == ISFUNC) + { +--- 1131,1139 ---- + func = m[ANYOTHERKEY].function; + if (type == ISFUNC && func == rl_do_lowercase_version) +! { +! int newkey = _rl_to_lower ((unsigned char)key); +! /* check that there is actually a lowercase version to avoid infinite recursion */ +! r = (newkey != key) ? _rl_dispatch (newkey, map) : 1; +! } + else if (type == ISFUNC) + { + +*** ../readline-8.2-patched/isearch.c Thu Aug 11 18:35:37 2022 +--- isearch.c Fri Feb 2 12:05:36 2024 +*************** +*** 429,433 **** + f = cxt->keymap[c].function; + if (f == rl_do_lowercase_version) +! f = cxt->keymap[_rl_to_lower (c)].function; + } + +--- 431,439 ---- + f = cxt->keymap[c].function; + if (f == rl_do_lowercase_version) +! { +! f = cxt->keymap[_rl_to_lower (c)].function; +! if (f == rl_do_lowercase_version) +! f = rl_insert; +! } + } + + +*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500 +--- patchlevel 2014-03-21 08:28:40.000000000 -0400 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 11 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 12 diff --git a/src/patches/readline/readline82-013 b/src/patches/readline/readline82-013 new file mode 100644 index 000000000..cb4164fbe --- /dev/null +++ b/src/patches/readline/readline82-013 @@ -0,0 +1,234 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 8.2 +Patch-ID: readline82-013 + +Bug-Reported-by: Grisha Levit +Bug-Reference-ID: