#45220 [Csd]: curl_read callback returns -1 when needs to return size_t (unsigned)
| From: | brockn at gmail dot com | Date: | Wed, 13 Aug 2008 18:55:30 +0000 |
| Subject: | #45220 [Csd]: curl_read callback returns -1 when needs to return size_t (unsigned) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-128023@lists.php.net to get a copy of this message | ||
ID: 45220
User updated by: brockn at gmail dot com
Reported By: brockn at gmail dot com
Status: Closed
Bug Type: cURL related
Operating System: CentOS release 4.6 (Final)
PHP Version: 5.2.6
New Comment:
Looks like php 4.4.9 is still broken. I know its not supported anymore,
but people are going to be using it for quite some time so I'd think it
might be prudent to fix it....given that its so simple.
Previous Comments:
------------------------------------------------------------------------
[2008-07-12 21:20:53] felipe@php.net
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
------------------------------------------------------------------------
[2008-07-12 20:34:52] nicolas at brousse dot info
You can also simply "patch" php source by fixing line 789 in
ext/curl/interface.c :
# before
int length = -1;
# after
int length = 0;
------------------------------------------------------------------------
[2008-06-16 17:32:15] brockn at gmail dot com
Yes, if you set POSTFIELDS to "", then curl_read does not return -1.
The root of the problem is that the default return value is -1, when it
should be 0 as it returns a size_t which is an unsigned type.
A check was added in libcurl 7.18 where the value is cast to size_t and
compared. This is the ``effect'' of the problem, but the cause is that
the php supplied curl_read callback is returning -1.
------------------------------------------------------------------------
[2008-06-16 17:25:25] randearievilo at gmail dot com
I have a similar code using cURL that worked fine in two platforms, but
failed on other two.
Platforms working:
- Debian 4.0 / PHP 5.2.0 / Apache 2.2.8 / libcurl 7.15.5
- Windows XP / PHP 4.4.7 / Apache 1.3.39 / libcurl 7.16.0
Platforms not working:
- Linux / PHP 4.4.7 / Apache 1.3.41 / libcurl 7.18.1
- Linux / PHP 5.2.5 / Apache 1.3.41 / libcurl 7.18.1
As you can see, the libcurl 7.18.x may really have a
bug/error/problem.
I think there was a change in the option CURLOPT_POST. Now, to use this
option, it seems to be necessary to set the option CURLOPT_POSTFIELDS
(curl_setopt($ch, CURLOPT_POSTFIELDS, "");).
------------------------------------------------------------------------
[2008-06-09 19:07:32] brockn at gmail dot com
Here are the details of the problem which occurs inside libcurl:
http://curl.haxx.se/mail/lib-2008-06/0109.html
http://curl.haxx.se/mail/lib-2008-06/0111.html
http://curl.haxx.se/mail/lib-2008-06/0123.html
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/45220
--
Edit this bug report at http://bugs.php.net/?id=45220&edit=1