MantisBT - TestLink
View Issue Details
0008551TestLinkAPI - XMLRPCpublic2019-01-29 16:592019-11-07 12:21
Mat83 
 
normalminoralways
newopen 
VMCent OS
1.9.17 (2018 Q1) 
 
mariaDB
0008551: Can't upload an execution attachment bigger than 400Ko
Similar to bug id 0005055

When uploading a large file (>400Ko) with a test case result using XML-RPC, an exception occurs :

br.eti.kinoshita.testlinkjavaapi.util.TestLinkAPIException: Error uploading attachment for execution: parse error. not well formed
Upload a 4Mo file via XML-RPC
I've patch it in class-IXR.php, same problem as report in bug id 0005055.
Not sure it's the best (not even a good) way to correct it.


function parse() {
        
        // Goal of this is to avoid too long lines for first line
        $this->message = str_replace("><",">\n<",$this->message);
        
        // first remove the XML declaration
        file_put_contents("/tmp/res.txt",$this->message);
        $this->message = preg_replace('/<\?xml(.*)?\?'.'>/', '', $this->message,1);

        if (trim($this->message) == '') {
            return false;
        }
No tags attached.
Issue History
2019-01-29 16:59Mat83New Issue
2019-01-29 17:01Mat83Note Added: 0028476
2019-01-30 09:37fmanNote Added: 0028480
2019-01-30 13:55Mat83Note Added: 0028485
2019-01-31 09:03fmanNote Added: 0028487
2019-02-01 11:00Mat83Note Added: 0028491
2019-10-01 12:50jburgersNote Added: 0029232

Notes
(0028476)
Mat83   
2019-01-29 17:01   
file_put_contents("/tmp/res.txt",$this->message);

was only for debug :)
(0028480)
fman   
2019-01-30 09:37   
In addition to the code, some comment explaining how this has been fixed is a must.
(0028485)
Mat83   
2019-01-30 13:55   
Hello,
searching on the net I found the bug id 0005055 with same error,
then I checked that the error occurs at same place, when trying to remove the XML declaration. So I dump the message with :
file_put_contents("/tmp/res.txt",$this->message);
The message is only on 1 ligne, and seems to be well formed.
I conclude the preg_replace can't manage a so long line, even with the bug id 5055 correction.
So I try to change the xml message with some \n between xml tag,
and no more error occurs.

hoping this answers the request, first time I post a bug on mantis ...
(0028487)
fman   
2019-01-31 09:03   
First or not first one reporting has no difference.
Please follow defacto standards for issue reporting
(0028491)
Mat83   
2019-02-01 11:00   
Some more information :
testlink installation is from bitnami docker 1.9.17 (PHP 7.1.23),
xml is generated from testlink-plugin (3.14) for jenkins (2.138.2)
(0029232)
jburgers   
2019-10-01 12:50   
Changing this line

$this->message = preg_replace('/<\?xml(.*)?\?'.'>/', '', $this->message,1);

for these two ones

$header = preg_replace('/<\?xml(.*)?\?'.'>/', '', substr($this->message, 0, 100),1);
$this->message = substr_replace($this->message, $header, 0, 100);

worked for me. I have tested with a 5MB attachment.

I have never worked before with PHP, so don't know if it is ok doing that.

(I took these guys work as reference: https://core.trac.wordpress.org/browser/trunk/src/wp-includes/class-IXR.php?rev=25001&order=name [^])