Skip to content

Commit 7d81a76

Browse files
committed
fix tree-parse issue found by fuzzer (#1185)
1 parent de400fd commit 7d81a76

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

gix-object/src/tree/ref_iter.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ fn mode_from_decimal(i: &[u8]) -> Option<(u32, &[u8])> {
104104
mode = (mode << 3) + (b - b'0') as u32;
105105
spacer_pos += 1;
106106
}
107+
if i.len() < spacer_pos {
108+
return None;
109+
}
107110
let (_, i) = i.split_at(spacer_pos);
108111
Some((mode, i))
109112
}

gix-object/tests/tree/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ mod from_bytes {
124124
);
125125
}
126126

127+
#[test]
128+
fn fuzzed() {
129+
assert!(gix_object::TreeRef::from_bytes(b"2").is_err(), "fail, but don't crash");
130+
}
131+
127132
#[test]
128133
fn special_trees() -> crate::Result {
129134
for (name, expected_entry_count) in [

0 commit comments

Comments
 (0)