addressing issues with failed attachement uploads due to webserver configuration, resolves #15
This commit is contained in:
parent
9e7266d561
commit
9a9362789b
2 changed files with 34 additions and 0 deletions
|
@ -237,6 +237,12 @@ class privatebin
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Ensure attachment did not get lost due to webserver limits or Suhosin
|
||||||
|
if (strlen($attachmentname) > 0 && strlen($attachment) == 0)
|
||||||
|
{
|
||||||
|
return $this->_return_message(1, 'Attachment missing in data received by server. Please check your webserver or suhosin configuration for maximum POST parameter limitations.');
|
||||||
|
}
|
||||||
|
|
||||||
// The user posts a comment.
|
// The user posts a comment.
|
||||||
$pasteid = $this->_request->getParam('pasteid');
|
$pasteid = $this->_request->getParam('pasteid');
|
||||||
$parentid = $this->_request->getParam('parentid');
|
$parentid = $this->_request->getParam('parentid');
|
||||||
|
|
|
@ -455,6 +455,34 @@ class privatebinTest extends PHPUnit_Framework_TestCase
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In some webserver setups (found with Suhosin) overly long POST params are
|
||||||
|
* silently removed, check that this case is handled
|
||||||
|
*
|
||||||
|
* @runInSeparateProcess
|
||||||
|
*/
|
||||||
|
public function testCreateBrokenAttachmentUpload()
|
||||||
|
{
|
||||||
|
$this->reset();
|
||||||
|
$options = parse_ini_file(CONF, true);
|
||||||
|
$options['traffic']['limit'] = 0;
|
||||||
|
$options['main']['fileupload'] = true;
|
||||||
|
helper::confBackup();
|
||||||
|
helper::createIniFile(CONF, $options);
|
||||||
|
$_POST = helper::getPasteWithAttachment();
|
||||||
|
unset($_POST['attachment']);
|
||||||
|
$_SERVER['HTTP_X_REQUESTED_WITH'] = 'JSONHttpRequest';
|
||||||
|
$_SERVER['REQUEST_METHOD'] = 'POST';
|
||||||
|
$_SERVER['REMOTE_ADDR'] = '::1';
|
||||||
|
$this->assertFalse($this->_model->exists(helper::getPasteId()), 'paste does not exists before posting data');
|
||||||
|
ob_start();
|
||||||
|
new privatebin;
|
||||||
|
$content = ob_get_contents();
|
||||||
|
$response = json_decode($content, true);
|
||||||
|
$this->assertEquals(1, $response['status'], 'outputs error status');
|
||||||
|
$this->assertFalse($this->_model->exists(helper::getPasteId()), 'paste exists after posting data');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @runInSeparateProcess
|
* @runInSeparateProcess
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue