CURLOPT_FILE behaves unexpectedly with invalid file handle
| Bug #48207 | CURLOPT_FILE behaves unexpectedly with invalid file handle | ||||
|---|---|---|---|---|---|
| Submitted: | 2009-05-09 14:01 UTC | Modified: | 2009-05-21 12:53 UTC | ||
| From: | mark at dynom dot nl | Assigned: | |||
| Status: | Closed | Package: | cURL related | ||
| PHP Version: | 5.*, 6CVS (2009-05-09) | OS: | * | ||
| Private report: | No | CVE-ID: | None | ||
[2009-05-09 14:01 UTC] mark at dynom dot nl
Description:
------------
The option 'CURLOPT_FILE' takes a file handle as argument, however when you open the file read-only. cURL *silently* fails and downloads only 1 successful iteration of data.
This *only* happens when CURLOPT_RETURNTRANSFER is not defined, since that disables the 'CURLOPT_FILE' feature.
It's expected that some sort of warning/error is raised, just like when a write flag is set when the file is not writable. When the latter happens, cURL falls back on CURLOPT_RETURNTRANSFER = false.
Reproduce code:
---------------
<?php
error_reporting( E_ALL );
$ch = curl_init('http://kernel.org/pub/linux/kernel/v1.0/linux-1.0.tar.bz2');
$fp = fopen("/tmp/fubar", "r"); // Opening 'fubar' with the incorrect readonly flag
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
// Debug
$info = curl_getinfo($ch);
if ($info['size_download'] !== $info["download_content_length"]) {
echo 'fail';
} else {
echo 'works';
}
curl_close($ch);
Expected result:
----------------
works
Actual result:
--------------
fail
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2009-05-09 14:03 UTC] mark at dynom dot nl
[2009-05-10 08:17 UTC] mark at dynom dot nl
[2009-05-10 17:04 UTC] jani@php.net
[2009-05-21 12:53 UTC] iliaa@php.net