feat(labrinth): allow protected resource and data packs to pass validation (#3792)

* fix(labrinth): return version artifact size exceeded error eagerly

Now we don't wait until the result memory buffer has grown to a size
greater than the maximum allowed, and instead we return such an error
before the buffer is grown with the current chunk, which should reduce
memory usage.

* fix(labrinth): proper supported game versions range for datapacks

* feat(labrinth): allow protected resource and data packs to pass validation
This commit is contained in:
Alejandro González
2025-06-16 18:30:01 +02:00
committed by GitHub
parent 97e4d8e132
commit fb30c0ba2b
5 changed files with 147 additions and 48 deletions

View File

@@ -32,11 +32,13 @@ pub async fn read_from_field(
) -> Result<BytesMut, CreateError> {
let mut bytes = BytesMut::new();
while let Some(chunk) = field.next().await {
if bytes.len() >= cap {
let chunk = chunk?;
if bytes.len().saturating_add(chunk.len()) > cap {
return Err(CreateError::InvalidInput(String::from(err_msg)));
} else {
bytes.extend_from_slice(&chunk?);
}
bytes.extend_from_slice(&chunk);
}
Ok(bytes)
}