Skip to content

Commit 78dba58

Browse files
mikemiles-devMichael Mileusnich
and
Michael Mileusnich
authored
issues 25, 26, 27 (#31)
Co-authored-by: Michael Mileusnich <[email protected]>
1 parent cb46bd6 commit 78dba58

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

RELEASES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# 0.2.0
22
* Clippy updates for 1.76
3+
* Removed dbg! macros for now for performance reason until we have a better solution.
4+
* Fixed issue where bad IPFIX options template causes panic.
35

46
# 0.1.9
57
* Fixed bug with flow counts in V9.

src/lib.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,15 @@ mod tests {
370370
assert_yaml_snapshot!(NetflowParser::default().parse_bytes(&packet));
371371
}
372372

373+
#[test]
374+
fn it_doesnt_panic_with_invalid_options_ipfix_template() {
375+
let packet = [
376+
0, 10, 0, 44, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 3, 0, 28, 1, 4, 0, 13, 0, 1,
377+
128, 123, 0, 4, 0, 0, 0, 2, 0, 41, 0, 2, 0, 42, 0, 2, 0, 0,
378+
];
379+
NetflowParser::default().parse_bytes(&packet);
380+
}
381+
373382
#[test]
374383
fn it_parses_ipfix_data_cached_template() {
375384
let packet = [

src/variable_versions/ipfix.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ pub struct TemplateField {
172172
/// Parses options template
173173
fn parse_options_template(i: &[u8], length: u16) -> IResult<&[u8], OptionsTemplate> {
174174
let (remaining, taken) = take(length.checked_sub(4).unwrap_or(length))(i)?;
175-
let (_, option_template) = OptionsTemplate::parse(taken).unwrap();
175+
let (_, option_template) = OptionsTemplate::parse(taken)?;
176176
Ok((remaining, option_template))
177177
}
178178

@@ -216,7 +216,7 @@ fn parse_fields<T: CommonTemplateFields>(
216216
let template = match template {
217217
Some(t) => t,
218218
None => {
219-
dbg!("Could not fetch any v10 templates!");
219+
// dbg!("Could not fetch any v10 templates!");
220220
return Err(NomErr::Error(NomError::new(i, ErrorKind::Fail)));
221221
}
222222
};
@@ -333,12 +333,12 @@ impl NetflowByteParserVariable for IPFixParser {
333333

334334
let mut total_left = v10_header.length as usize;
335335

336-
dbg!("remaining: {}", remaining);
336+
// dbg!("remaining: {}", remaining);
337337

338338
while total_left != 0 {
339339
let (left_remaining, v10_set) = Set::parse(remaining, self)
340340
.map_err(|e| format!("Could not parse v10_set: {e}"))?;
341-
dbg!("left remaining: {}", left_remaining);
341+
// dbg!("left remaining: {}", left_remaining);
342342
remaining = left_remaining;
343343
let parsed = total_left
344344
.checked_sub(remaining.len())

src/variable_versions/v9.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ fn parse_fields(
348348
let template = match template {
349349
Some(t) => t,
350350
None => {
351-
dbg!("Could not fetch any v10 templates!");
351+
// dbg!("Could not fetch any v9 templates!");
352352
return Err(NomErr::Error(NomError::new(i, ErrorKind::Fail)));
353353
}
354354
};
@@ -446,7 +446,7 @@ fn parse_options_data_fields(
446446
templates: HashMap<u16, OptionsTemplate>,
447447
) -> IResult<&[u8], Vec<OptionDataField>> {
448448
let template = templates.get(&flow_set_id).ok_or_else(|| {
449-
dbg!("Could not fetch any v9 options templates!");
449+
// dbg!("Could not fetch any v9 options templates!");
450450
NomErr::Error(NomError::new(i, ErrorKind::Fail))
451451
})?;
452452
let mut fields = vec![];
@@ -465,7 +465,7 @@ fn parse_scope_data_fields(
465465
templates: HashMap<u16, OptionsTemplate>,
466466
) -> IResult<&[u8], Vec<ScopeDataField>> {
467467
let template = templates.get(&flow_set_id).ok_or_else(|| {
468-
dbg!("Could not fetch any v9 options templates!");
468+
// dbg!("Could not fetch any v9 options templates!");
469469
NomErr::Error(NomError::new(i, ErrorKind::Fail))
470470
})?;
471471
let mut fields = vec![];

0 commit comments

Comments
 (0)