From e301ae8ebdd5d07360501b05aa1075242ceef5c5 Mon Sep 17 00:00:00 2001 From: Ben Elliston Date: Sat, 19 Aug 2017 13:12:47 +1000 Subject: Fix another bug reported by Andrey ``Bass'' Shcheglov. * lib/framework.exp (xml_tag): Escape all of the non-printable control characters (ASCII codes 1 to 31 inclusive). --- ChangeLog | 5 +++++ lib/framework.exp | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/ChangeLog b/ChangeLog index 1d939a9..2b9076f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-08-19 Ben Elliston + + * lib/framework.exp (xml_tag): Escape all of the non-printable + control characters (ASCII codes 1 to 31 inclusive). + 2017-08-18 Tom Tromey * runtest.exp: Fix --directory matching. diff --git a/lib/framework.exp b/lib/framework.exp index b189a08..20e254a 100644 --- a/lib/framework.exp +++ b/lib/framework.exp @@ -366,6 +366,12 @@ proc log_and_exit {} { # Emit an XML tag, but escape XML special characters in the body. proc xml_tag { tag body } { set escapes { < < > > & & \" " ' ' } + for {set i 1} {$i < 32} {incr i} { + # Append non-printable character + lappend escapes [format %c $i] + # .. and then the corresponding XML escape + lappend escapes &#[format %x $i]\; + } return <$tag>[string map $escapes $body] } -- cgit v1.2.3