curl_easy_reset: release mime-related data.

Move curl_mime_initpart() and curl_mime_cleanpart() calls to lower-level
functions dealing with UserDefined structure contents.
This avoids memory leakages on curl-generated part mime headers.
New test 2073 checks this using the cli tool --next option: it
triggers a valgrind error if bug is present.

Bug: https://curl.haxx.se/mail/lib-2017-12/0060.html
Reported-by: Martin Galvan
This commit is contained in:
Patrick Monnerat 2017-12-20 19:33:50 +01:00
parent 4acc9d3d1a
commit f009bbe1f6
5 changed files with 78 additions and 9 deletions

View file

@ -189,4 +189,4 @@ test2048 test2049 test2050 test2051 test2052 test2053 test2054 test2055 \
test2056 test2057 test2058 test2059 test2060 test2061 test2062 test2063 \
test2064 test2065 test2066 test2067 test2068 test2069 \
\
test2070 test2071 test2072
test2070 test2071 test2072 test2073

68
tests/data/test2073 Normal file
View file

@ -0,0 +1,68 @@
<testcase>
<info>
<keywords>
HTTP
HTTP FORMPOST
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 10
contents1
</data>
<data1>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 10
contents2
</data1>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP form posts with handle reset
</name>
<command>
http://%HOSTIP:%HTTPPORT/2073 -F 'name=a;filename=a.pdf' --next http://%HOSTIP:%HTTPPORT/2073 -F 'name=b;filename=b.jpg'
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^(User-Agent:|Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /2073 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 189
Content-Disposition: form-data; name="name"; filename="a.pdf"
Content-Type: application/pdf
a
POST /2073 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 184
Content-Disposition: form-data; name="name"; filename="b.jpg"
Content-Type: image/jpeg
b
</protocol>
</verify>
</testcase>