Skip to content

Commit f55f67e

Browse files
committed
config/server: Change max_upload_size to u32
A higher value isn't possible anyway due to the way the publish endpoint was designed...
1 parent ec9c06e commit f55f67e

File tree

4 files changed

+9
-8
lines changed

4 files changed

+9
-8
lines changed

src/config/server.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ pub struct Server {
4141
pub session_key: cookie::Key,
4242
pub gh_client_id: ClientId,
4343
pub gh_client_secret: ClientSecret,
44-
pub max_upload_size: u64,
44+
pub max_upload_size: u32,
4545
pub max_unpack_size: u64,
4646
pub max_dependencies: usize,
4747
pub max_features: usize,

src/controllers/krate/publish.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ pub async fn publish(app: AppState, req: Parts, body: Body) -> AppResult<Json<Go
152152
app.config.max_unpack_size,
153153
);
154154

155-
let tarball_bytes = read_tarball_bytes(&mut reader, maximums.max_upload_size as u32).await?;
155+
let tarball_bytes = read_tarball_bytes(&mut reader, maximums.max_upload_size).await?;
156156
let content_length = tarball_bytes.len() as u64;
157157

158158
let pkg_name = format!("{}-{}", &*metadata.name, &version_string);

src/tests/krate/publish/max_size.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ async fn tarball_between_default_axum_limit_and_max_upload_size() {
1212
let (app, _, _, token) = TestApp::full()
1313
.with_config(|config| {
1414
config.max_upload_size = max_upload_size;
15-
config.max_unpack_size = max_upload_size;
15+
config.max_unpack_size = max_upload_size as u64;
1616
})
1717
.with_token()
1818
.await;
@@ -65,7 +65,7 @@ async fn tarball_bigger_than_max_upload_size() {
6565
let (app, _, _, token) = TestApp::full()
6666
.with_config(|config| {
6767
config.max_upload_size = max_upload_size;
68-
config.max_unpack_size = max_upload_size;
68+
config.max_unpack_size = max_upload_size as u64;
6969
})
7070
.with_token()
7171
.await;

src/util.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,19 @@ pub mod tracing;
1515

1616
#[derive(Debug, Copy, Clone)]
1717
pub struct Maximums {
18-
pub max_upload_size: u64,
18+
pub max_upload_size: u32,
1919
pub max_unpack_size: u64,
2020
}
2121

2222
impl Maximums {
2323
pub fn new(
2424
krate_max_upload: Option<i32>,
25-
app_max_upload: u64,
25+
app_max_upload: u32,
2626
app_max_unpack: u64,
2727
) -> Maximums {
28-
let max_upload_size = krate_max_upload.map(|m| m as u64).unwrap_or(app_max_upload);
29-
let max_unpack_size = cmp::max(app_max_unpack, max_upload_size);
28+
let krate_max_upload = krate_max_upload.and_then(|m| u32::try_from(m).ok());
29+
let max_upload_size = krate_max_upload.unwrap_or(app_max_upload);
30+
let max_unpack_size = cmp::max(app_max_unpack, max_upload_size as u64);
3031
Maximums {
3132
max_upload_size,
3233
max_unpack_size,

0 commit comments

Comments
 (0)