Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
dynamo
Commits
64ae47fd
Unverified
Commit
64ae47fd
authored
Mar 06, 2026
by
Shounak Ray
Committed by
GitHub
Mar 06, 2026
Browse files
fix: use checked arithmetic in TwoPartCodec to prevent integer overflow (#6959)
Signed-off-by:
ShounakRay
<
shounak@stanford.edu
>
parent
987fdcb1
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
2 deletions
+14
-2
lib/runtime/src/pipeline/network/codec/two_part.rs
lib/runtime/src/pipeline/network/codec/two_part.rs
+14
-2
No files found.
lib/runtime/src/pipeline/network/codec/two_part.rs
View file @
64ae47fd
...
@@ -55,7 +55,13 @@ impl Decoder for TwoPartCodec {
...
@@ -55,7 +55,13 @@ impl Decoder for TwoPartCodec {
let
body_len
=
cursor
.get_u64
()
as
usize
;
let
body_len
=
cursor
.get_u64
()
as
usize
;
let
_
checksum
=
cursor
.get_u64
();
let
_
checksum
=
cursor
.get_u64
();
let
total_len
=
24
+
header_len
+
body_len
;
let
total_len
=
24u
size
.checked_add
(
header_len
)
.and_then
(|
n
|
n
.checked_add
(
body_len
))
.ok_or
(
TwoPartCodecError
::
MessageTooLarge
(
usize
::
MAX
,
self
.max_message_size
.unwrap_or
(
usize
::
MAX
),
))
?
;
// Check if total_len exceeds max_message_size
// Check if total_len exceeds max_message_size
if
let
Some
(
max_size
)
=
self
.max_message_size
if
let
Some
(
max_size
)
=
self
.max_message_size
...
@@ -109,7 +115,13 @@ impl Encoder<TwoPartMessage> for TwoPartCodec {
...
@@ -109,7 +115,13 @@ impl Encoder<TwoPartMessage> for TwoPartCodec {
let
header_len
=
item
.header
.len
();
let
header_len
=
item
.header
.len
();
let
body_len
=
item
.data
.len
();
let
body_len
=
item
.data
.len
();
let
total_len
=
24
+
header_len
+
body_len
;
// 24 bytes for lengths and checksum
let
total_len
=
24u
size
.checked_add
(
header_len
)
.and_then
(|
n
|
n
.checked_add
(
body_len
))
.ok_or
(
TwoPartCodecError
::
MessageTooLarge
(
usize
::
MAX
,
self
.max_message_size
.unwrap_or
(
usize
::
MAX
),
))
?
;
// Check if total_len exceeds max_message_size
// Check if total_len exceeds max_message_size
if
let
Some
(
max_size
)
=
self
.max_message_size
if
let
Some
(
max_size
)
=
self
.max_message_size
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment