mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-12 17:31:35 +00:00
address review: cap the opened handle's length before allocating
This commit is contained in:
1 parent
a2097213d8
commit
53f2df939f
1 file changed
+4
@@ -242,6 +242,10 @@ pub fn read_remote_document(path: &Path) -> Result<Vec<u8>, RemoteDocumentPathEr
|
||||
if !meta.is_file() {
|
||||
return Err(RemoteDocumentPathError::NotAFile);
|
||||
}
|
||||
// the opened handle's own length: a file replaced after the path check must not size the buffer
|
||||
if meta.len() > MAX_REMOTE_DOCUMENT_BYTES {
|
||||
return Err(RemoteDocumentPathError::TooLarge);
|
||||
}
|
||||
let mut bytes = Vec::with_capacity(usize::try_from(meta.len()).unwrap_or(0));
|
||||
file.take(MAX_REMOTE_DOCUMENT_BYTES.saturating_add(1)).read_to_end(&mut bytes).map_err(|e| RemoteDocumentPathError::Read(e.to_string()))?;
|
||||
if u64::try_from(bytes.len()).map_or(true, |n| n > MAX_REMOTE_DOCUMENT_BYTES) {
|
||||
|
||||
Reference in new issue
Block a user