On Sat, Apr 11, 2015 at 01:27:53PM -0400, Chet Ramey wrote: > On 4/10/15 11:09 AM, Greg Wooledge wrote: > > - Fix the $"..." security hole (I tried and failed). > > http://www.gnu.org/software/gettext/manual/html_node/bash.html > > Yeah, I didn't like the all-or-nothing choice the patch implemented. If > command substitution is the problem, a better approach would have been to > inhibit command substitution instead of every word expansion. That's just > not easy to do at the point where locale transformation gets done -- it > requires processing the translated string to insert some kind of quoting.
I'm skeptical about any substitutions being performed in a translated string. While I don't have real-life experience writing localized shell scripts, I would *think* the correct way to put variables in a translated string is: printf $"Hello, %s. Welcome to %s." "$LOGNAME" "$HOSTNAME" As the script writer, I would want some guarantee that the translated string won't undergo any substitutions at all (especially not command substitutions, but even something like $1 in the translation, expanded to whatever garbage is in the positional parameters, would make the output appear wrong). But then I suppose I would also want some guarantee that the translated string won't contain any extra % or \ characters for printf to trip over. That may be outside of bash's scope. It's a messy problem.