mirror of
https://github.com/nextcloud/server.git
synced 2026-06-09 08:44:07 -04:00
Merge pull request #55283 from nextcloud/jtr/fix/issue-55276
fix(workflowenigne): stricter length header handling
This commit is contained in:
commit
762d969741
1 changed files with 17 additions and 4 deletions
|
|
@ -57,23 +57,36 @@ class FileSize implements ICheck {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the file size from HTTP headers.
|
||||
*
|
||||
* Checks 'OC-Total-Length' first; if unavailable and the method is POST or PUT,
|
||||
* checks 'Content-Length'. Returns the size as int, float, or false if not found or invalid.
|
||||
*
|
||||
* @return int|float|false File size in bytes, or false if unavailable.
|
||||
*/
|
||||
protected function getFileSizeFromHeader(): int|float|false {
|
||||
// Already have it cached?
|
||||
if ($this->size !== null) {
|
||||
return $this->size;
|
||||
}
|
||||
|
||||
$size = $this->request->getHeader('OC-Total-Length');
|
||||
if ($size === '') {
|
||||
if (in_array($this->request->getMethod(), ['POST', 'PUT'])) {
|
||||
// Try fallback for upload methods
|
||||
$method = $this->request->getMethod();
|
||||
if (in_array($method, ['POST', 'PUT'], true)) {
|
||||
$size = $this->request->getHeader('Content-Length');
|
||||
}
|
||||
}
|
||||
|
||||
if ($size === '' || !is_numeric($size)) {
|
||||
$size = false;
|
||||
if ($size !== '' && is_numeric($size)) {
|
||||
$this->size = Util::numericToNumber($size);
|
||||
} else {
|
||||
// No valid size header found
|
||||
$this->size = false;
|
||||
}
|
||||
|
||||
$this->size = Util::numericToNumber($size);
|
||||
return $this->size;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue