From: Jeff King Date: Sat, 12 Jul 2014 04:46:46 GMT Subject: Re: [PATCH] http-push.c: make CURLOPT_IOCTLDATA a usable pointer Message-ID: <20140712044646.GA20675@sigill.intra.peff.net> In-Reply-To: <53b89d7a.030d320a.0760.206f@mx.google.com> On Sat, Jul 05, 2014 at 08:43:48PM -0400, Abbaad Haider wrote: > Fixes a small bug affecting push to remotes which use some sort of > multi-pass authentication. In particular the bug affected SabreDAV as > configured by Box.com [1]. Thanks. This looks like it was caused by the refactor in ebaaf31 (http-push: refactor curl_easy_setup madness, 2011-05-03), which moved the curl_easy call into a sub-function which took the buffer as a pointer, rather than accessing it as a local variable. > It must be a weird server configuration for the bug to have survived > this long. Someone should write a test for it. I think both dumb-http push-over-DAV and multi-pass authentication are rare, so finding a combination of the two took a while. I do not know enough about the server setup to know whether we could replicate this in our test apache setup (and nor do I particularly want to spend a lot of time figuring it out for the sake of testing push-over-DAV). > diff --git a/http-push.c b/http-push.c > index f2c56c8..bd42895 100644 > --- a/http-push.c > +++ b/http-push.c > @@ -199,7 +199,7 @@ static void curl_setup_http(CURL *curl, const char *url, > curl_easy_setopt(curl, CURLOPT_READFUNCTION, fread_buffer); > #ifndef NO_CURL_IOCTL > curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, ioctl_buffer); > - curl_easy_setopt(curl, CURLOPT_IOCTLDATA, &buffer); > + curl_easy_setopt(curl, CURLOPT_IOCTLDATA, buffer); Patch looks obviously correct.