Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15429471
D14977.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
D14977.id.diff
View Options
diff --git a/src/applications/differential/conduit/DifferentialCreateRawDiffConduitAPIMethod.php b/src/applications/differential/conduit/DifferentialCreateRawDiffConduitAPIMethod.php
--- a/src/applications/differential/conduit/DifferentialCreateRawDiffConduitAPIMethod.php
+++ b/src/applications/differential/conduit/DifferentialCreateRawDiffConduitAPIMethod.php
@@ -43,6 +43,26 @@
$changes = $parser->parseDiff($raw_diff);
$diff = DifferentialDiff::newFromRawChanges($viewer, $changes);
+ // We're bounded by doing INSERTs for all the hunks and changesets, so
+ // estimate the number of inserts we'll require.
+ $size = 0;
+ foreach ($diff->getChangesets() as $changeset) {
+ $hunks = $changeset->getHunks();
+ $size += 1 + count($hunks);
+ }
+
+ $raw_limit = 10000;
+ if ($size > $raw_limit) {
+ throw new Exception(
+ pht(
+ 'The raw diff you have submitted is too large to parse (it affects '.
+ 'more than %s paths and hunks). Differential should only be used '.
+ 'for changes which are small enough to receive detailed human '.
+ 'review. See "Differential User Guide: Large Changes" in the '.
+ 'documentation for more information.',
+ new PhutilNumber($raw_limit)));
+ }
+
$diff_data_dict = array(
'creationMethod' => 'web',
'authorPHID' => $viewer->getPHID(),
diff --git a/src/applications/files/exception/PhabricatorFileUploadException.php b/src/applications/files/exception/PhabricatorFileUploadException.php
--- a/src/applications/files/exception/PhabricatorFileUploadException.php
+++ b/src/applications/files/exception/PhabricatorFileUploadException.php
@@ -4,26 +4,29 @@
public function __construct($code) {
$map = array(
- 'UPLOAD_ERR_INI_SIZE' => pht(
+ UPLOAD_ERR_INI_SIZE => pht(
"Uploaded file is too large: current limit is %s. To adjust ".
"this limit change '%s' in php.ini.",
ini_get('upload_max_filesize'),
'upload_max_filesize'),
- 'UPLOAD_ERR_FORM_SIZE' => pht(
+ UPLOAD_ERR_FORM_SIZE => pht(
'File is too large.'),
- 'UPLOAD_ERR_PARTIAL' => pht(
+ UPLOAD_ERR_PARTIAL => pht(
'File was only partially transferred, upload did not complete.'),
- 'UPLOAD_ERR_NO_FILE' => pht(
+ UPLOAD_ERR_NO_FILE => pht(
'No file was uploaded.'),
- 'UPLOAD_ERR_NO_TMP_DIR' => pht(
+ UPLOAD_ERR_NO_TMP_DIR => pht(
'Unable to write file: temporary directory does not exist.'),
- 'UPLOAD_ERR_CANT_WRITE' => pht(
+ UPLOAD_ERR_CANT_WRITE => pht(
'Unable to write file: failed to write to temporary directory.'),
- 'UPLOAD_ERR_EXTENSION' => pht(
+ UPLOAD_ERR_EXTENSION => pht(
'Unable to upload: a PHP extension stopped the upload.'),
);
- $message = idx($map, $code, pht('Upload failed: unknown error.'));
+ $message = idx(
+ $map,
+ $code,
+ pht('Upload failed: unknown error (%s).', $code));
parent::__construct($message, $code);
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Mar 25, 2:34 AM (1 w, 8 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7687974
Default Alt Text
D14977.id.diff (3 KB)
Attached To
Mode
D14977: Give users an explicit error if they try to upload a too-large diff to Differential
Attached
Detach File
Event Timeline
Log In to Comment