mirror of
https://github.com/acmesh-official/acme.sh.git
synced 2026-10-21 13:31:18 +00:00
_json_encode/_json_decode: use printf instead of echo
dash's echo interprets backslash escapes, so the \. MarkdownV2 escapes built by notify/telegram.sh collapsed to \. in the JSON body and Telegram rejected the message with "Character '.' is reserved". bash's echo does not, which is why only dash-based systems were hit. Fixes #7212
This commit is contained in:
1 parent
5d07634e0f
commit
3288c35c2a
1 file changed
+4
-2
@@ -907,7 +907,9 @@ _json_encode() {
|
||||
_j_str="$(sed 's/"/\\"/g' | sed "s/\r/\\r/g")"
|
||||
_debug3 "_json_encode"
|
||||
_debug3 "_j_str" "$_j_str"
|
||||
echo "$_j_str" | _hex_dump | _lower_case | sed 's/0a/5c 6e/g' | tr -d ' ' | _h2b | tr -d "\r\n"
|
||||
#printf, not echo: dash's echo interprets backslash escapes and would
|
||||
#collapse the \\ sequences (e.g. Telegram MarkdownV2 escapes, issue 7212)
|
||||
printf "%s\n" "$_j_str" | _hex_dump | _lower_case | sed 's/0a/5c 6e/g' | tr -d ' ' | _h2b | tr -d "\r\n"
|
||||
}
|
||||
|
||||
#from: http:\/\/ to http://
|
||||
@@ -915,7 +917,7 @@ _json_decode() {
|
||||
_j_str="$(sed 's#\\/#/#g')"
|
||||
_debug3 "_json_decode"
|
||||
_debug3 "_j_str" "$_j_str"
|
||||
echo "$_j_str"
|
||||
printf "%s\n" "$_j_str"
|
||||
}
|
||||
|
||||
#extract the authorization URLs from an order response on stdin, as a
|
||||
|
||||