Viktor Dukhovni:
> On 16 Feb 2022, at 8:16 am, Wietse Venema <wie...@porcupine.org> wrote:
> 
> > postqueue -j | jq -r '
> >     # See JSON OBJECT FORMAT section in the postqueue(1) manpage
> >     select(.queue_name == "deferred")
> >     | .queue_id
> >  ' | postsuper -h -
> 
> While we're on the topic of JSON output, FWIW, I am not convinced that
> the recent change to protect downstream consumers of JSON from
> non-printable content in "postqueue -j" output (which is robustly
> escaped in its JSON representation) was the right choice.
> 
>   20211027
> 
>        Safety: the postqueue command now sanitizes strings before they
>        are formatted as json output or legacy output. These outputs are
>        piped into other programs that are run by administrative
>        users. This closes a hypothetical opportunity for privilege
>        escalation. Files: util/attr.h, util/attr_scan*.c,
>        postqueue/showq_json.c, postqueue/showq_compat.c.
> 
> IMHO any responsibility to handle unexpected string payloads falls
> squarely on the JSON consumer, not showq(8) or postqueue(1).  Sure, use
> of "jq -r" exposes unescaped output and the user should be warned to
> expect the unexpected.
> 
> Alternatively, perhaps there should be an option to turn off the safety
> net.  Something like the '-J' option below (with appropriate
> documentation and warnings).

And what about non-json output?

        Wietse

Reply via email to