53 lines
1.5 KiB
Diff
53 lines
1.5 KiB
Diff
From a99d905216cc0aac5de0c3050f4afc54e21c6bc5 Mon Sep 17 00:00:00 2001
|
|
From: Chet Ramey <chet.ramey@case.edu>
|
|
Date: Wed, 5 Oct 2022 10:37:38 -0400
|
|
Subject: [PATCH] Bash-5.2 patch 2: fix crash in readline when started with an
|
|
invalid locale specification
|
|
|
|
---
|
|
lib/readline/nls.c | 8 +++++++-
|
|
patchlevel.h | 2 +-
|
|
2 files changed, 8 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/lib/readline/nls.c b/lib/readline/nls.c
|
|
index d2f67e0..5d1cd19 100644
|
|
--- a/lib/readline/nls.c
|
|
+++ b/lib/readline/nls.c
|
|
@@ -56,6 +56,8 @@
|
|
|
|
static int utf8locale PARAMS((char *));
|
|
|
|
+#define RL_DEFAULT_LOCALE "C"
|
|
+
|
|
#if !defined (HAVE_SETLOCALE)
|
|
/* A list of legal values for the LANG or LC_CTYPE environment variables.
|
|
If a locale name in this list is the value for the LC_ALL, LC_CTYPE,
|
|
@@ -136,7 +138,11 @@ _rl_init_locale (void)
|
|
if (lspec == 0)
|
|
lspec = "";
|
|
ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */
|
|
-
|
|
+ if (ret == 0 || *ret == 0)
|
|
+ ret = setlocale (LC_CTYPE, (char *)NULL);
|
|
+ if (ret == 0 || *ret == 0)
|
|
+ ret = RL_DEFAULT_LOCALE;
|
|
+
|
|
_rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0;
|
|
|
|
return ret;
|
|
diff --git a/patchlevel.h b/patchlevel.h
|
|
index 10fde2e..17586ff 100644
|
|
--- a/patchlevel.h
|
|
+++ b/patchlevel.h
|
|
@@ -25,6 +25,6 @@
|
|
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
|
|
looks for to find the patch level (for the sccs version string). */
|
|
|
|
-#define PATCHLEVEL 8
|
|
+#define PATCHLEVEL 9
|
|
|
|
#endif /* _PATCHLEVEL_H_ */
|
|
--
|
|
2.35.1
|
|
|