When doing HTTP(S) transfers, libcurl might erroneously use the read callback
(CURLOPT_READFUNCTION
) to ask for data to send, even when the
CURLOPT_POSTFIELDS
option has been set, if the same handle previously was
used to issue a PUT
request which used that callback.
This flaw may surprise the application and cause it to misbehave and either
send off the wrong data or use memory after free or similar in the subsequent
POST
request.
The problem exists in the logic for a reused handle when it is changed from a PUT to a POST.