Skip to content

Commit 0129adf

Browse files
authored
Merge pull request #664 from strophy/update-nix
Update nix and fix armv7/armhf test errors
2 parents 49c8baf + 5e34f5b commit 0129adf

File tree

4 files changed

+33
-18
lines changed

4 files changed

+33
-18
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
88

99
### Fix
1010

11+
- update nix and related deps to fix s390x build
12+
- armv7/armhf test error `The payload should be rejected due to large size`
13+
1114
## \[4.0.3\] - 2026-03-01
1215

1316
### Fix

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pueue_lib/src/network/protocol.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,21 +109,27 @@ pub async fn receive_bytes_with_max_size(
109109
.await
110110
.map_err(|err| Error::IoError("reading request size header".to_string(), err))?;
111111
let mut header = Cursor::new(header);
112-
let message_size = ReadBytesExt::read_u64::<BigEndian>(&mut header)? as usize;
112+
let message_size_u64 = ReadBytesExt::read_u64::<BigEndian>(&mut header)?;
113113

114114
if let Some(max_size) = max_size
115-
&& message_size > max_size
115+
&& message_size_u64 > max_size as u64
116116
{
117-
error!("Client requested message size of {message_size}, but only {max_size} is allowed.");
118-
return Err(Error::MessageTooBig(message_size, max_size));
117+
error!(
118+
"Client requested message size of {message_size_u64}, but only {max_size} is allowed."
119+
);
120+
return Err(Error::MessageTooBig(message_size_u64 as usize, max_size));
119121
}
120122

121123
// Show a warning if we see unusually large payloads. In this case payloads that're bigger than
122124
// 20MB, which is pretty large considering pueue is usually only sending a bit of text.
123-
if message_size > (20 * (2usize.pow(20))) {
124-
warn!("Client is sending a large payload: {message_size} bytes.");
125+
if message_size_u64 > (20 * (2u64.pow(20))) {
126+
warn!("Client is sending a large payload: {message_size_u64} bytes.");
125127
}
126128

129+
// On 32-bit platforms usize is narrower than u64; reject sizes that don't fit.
130+
let message_size = usize::try_from(message_size_u64)
131+
.map_err(|_| Error::MessageTooBig(usize::MAX, usize::MAX))?;
132+
127133
// Buffer for the whole payload
128134
let mut payload_bytes = Vec::with_capacity(message_size);
129135

pueue_lib/src/network_blocking/protocol.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,27 @@ pub fn receive_bytes_with_max_size(
106106
.read_exact(&mut header)
107107
.map_err(|err| Error::IoError("reading request size header".to_string(), err))?;
108108
let mut header = Cursor::new(header);
109-
let message_size = ReadBytesExt::read_u64::<BigEndian>(&mut header)? as usize;
109+
let message_size_u64 = ReadBytesExt::read_u64::<BigEndian>(&mut header)?;
110110

111111
if let Some(max_size) = max_size
112-
&& message_size > max_size
112+
&& message_size_u64 > max_size as u64
113113
{
114-
error!("Client requested message size of {message_size}, but only {max_size} is allowed.");
115-
return Err(Error::MessageTooBig(message_size, max_size));
114+
error!(
115+
"Client requested message size of {message_size_u64}, but only {max_size} is allowed."
116+
);
117+
return Err(Error::MessageTooBig(message_size_u64 as usize, max_size));
116118
}
117119

118120
// Show a warning if we see unusually large payloads. In this case payloads that're bigger than
119121
// 20MB, which is pretty large considering pueue is usually only sending a bit of text.
120-
if message_size > (20 * (2usize.pow(20))) {
121-
warn!("Client is sending a large payload: {message_size} bytes.");
122+
if message_size_u64 > (20 * (2u64.pow(20))) {
123+
warn!("Client is sending a large payload: {message_size_u64} bytes.");
122124
}
123125

126+
// On 32-bit platforms usize is narrower than u64; reject sizes that don't fit.
127+
let message_size = usize::try_from(message_size_u64)
128+
.map_err(|_| Error::MessageTooBig(usize::MAX, usize::MAX))?;
129+
124130
// Buffer for the whole payload
125131
let mut payload_bytes = Vec::with_capacity(message_size);
126132

0 commit comments

Comments
 (0)