From fe8ba51209959c6ff200b4f7c847c7a3fc53ecfa Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 10 Mar 2020 17:47:44 +0100 Subject: server/getpart: make the "XML-parser" stricter When extracting a
and there's no before
, this now outputs an error and returns a wrong string to make users spot the mistake. Ref: #5070 Closes #5071 --- tests/getpart.pm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'tests/getpart.pm') diff --git a/tests/getpart.pm b/tests/getpart.pm index 7080bf4b7..cd3b9e556 100644 --- a/tests/getpart.pm +++ b/tests/getpart.pm @@ -5,7 +5,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2019, Daniel Stenberg, , et al. +# Copyright (C) 1998 - 2020, Daniel Stenberg, , et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -23,6 +23,7 @@ #use strict; my @xml; +my $xmlfile; my $warning=0; my $trace=0; @@ -80,11 +81,10 @@ sub getpart { my @this; my $inside=0; my $base64=0; - - # print "Section: $section, part: $part\n"; + my $line; for(@xml) { - # print "$inside: $_"; + $line++; if(!$inside && ($_ =~ /^ *\<$section/)) { $inside++; } @@ -105,6 +105,10 @@ sub getpart { $inside--; } elsif(($inside >= 1) && ($_ =~ /^ *\<\/$section/)) { + if($inside > 1) { + print STDERR "$xmlfile:$line:1: error: missing tag before \n"; + @this = ("format error in $xmlfile"); + } if($trace && @this) { print STDERR "*** getpart.pm: $section/$part returned data!\n"; } @@ -165,6 +169,7 @@ sub loadtest { my ($file)=@_; undef @xml; + $xmlfile = $file; if(open(XML, "<$file")) { binmode XML; # for crapage systems, use binary -- cgit v1.2.3