diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2024-02-26 16:26:15 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2024-02-26 16:27:53 +0100 |
commit | c5a1be25ba6dd705382ce6c25d96a32f79974c04 (patch) | |
tree | 48b92a1b07b47329a2d48867ee5b7c11a84bea4a /shell/ash.c | |
parent | f873c63085e3f3745040286999779077ccc03987 (diff) | |
download | busybox-w32-c5a1be25ba6dd705382ce6c25d96a32f79974c04.tar.gz busybox-w32-c5a1be25ba6dd705382ce6c25d96a32f79974c04.tar.bz2 busybox-w32-c5a1be25ba6dd705382ce6c25d96a32f79974c04.zip |
ash: fix handling of single-quoted strings in pattern substitution
function old new delta
subevalvar 1576 1588 +12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/ash.c')
-rw-r--r-- | shell/ash.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/shell/ash.c b/shell/ash.c index 771fc8bf9..4ca4c6c56 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -7073,6 +7073,11 @@ subevalvar(char *start, char *str, int strloc, | |||
7073 | repl = NULL; | 7073 | repl = NULL; |
7074 | break; | 7074 | break; |
7075 | } | 7075 | } |
7076 | /* Skip over quoted 'str'. Example: ${var/'/'} - second / is not a separator */ | ||
7077 | if ((unsigned char)*repl == CTLQUOTEMARK) { | ||
7078 | while ((unsigned char)*++repl != CTLQUOTEMARK) | ||
7079 | continue; | ||
7080 | } | ||
7076 | if (*repl == '/') { | 7081 | if (*repl == '/') { |
7077 | *repl = '\0'; | 7082 | *repl = '\0'; |
7078 | break; | 7083 | break; |