67c8c7037b
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
40 lines
1.0 KiB
Diff
40 lines
1.0 KiB
Diff
Upstream http://busybox.net/downloads/fixes-1.23.0/busybox-1.23.0-ash.patch
|
|
post-release hotfix patch for ash segfault.
|
|
|
|
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
|
|
|
--- busybox-1.23.0/shell/ash.c
|
|
+++ busybox-1.23.0-ash/shell/ash.c
|
|
@@ -6746,6 +6746,14 @@ varvalue(char *name, int varflags, int f
|
|
len = strlen(p);
|
|
if (!(subtype == VSPLUS || subtype == VSLENGTH))
|
|
memtodest(p, len, syntax, quotes);
|
|
+#if ENABLE_UNICODE_SUPPORT
|
|
+ if (subtype == VSLENGTH && len > 0) {
|
|
+ reinit_unicode_for_ash();
|
|
+ if (unicode_status == UNICODE_ON) {
|
|
+ len = unicode_strlen(p);
|
|
+ }
|
|
+ }
|
|
+#endif
|
|
return len;
|
|
}
|
|
|
|
@@ -6829,15 +6837,7 @@ evalvar(char *p, int flags, struct strli
|
|
varunset(p, var, 0, 0);
|
|
|
|
if (subtype == VSLENGTH) {
|
|
- ssize_t n = varlen;
|
|
- if (n > 0) {
|
|
- reinit_unicode_for_ash();
|
|
- if (unicode_status == UNICODE_ON) {
|
|
- const char *val = lookupvar(var);
|
|
- n = unicode_strlen(val);
|
|
- }
|
|
- }
|
|
- cvtnum(n > 0 ? n : 0);
|
|
+ cvtnum(varlen > 0 ? varlen : 0);
|
|
goto record;
|
|
}
|
|
|