detect: Use Option where appropriate

This commit uses Option instead of Result.

Issue: 6873
pull/11447/head
Jeff Lucovsky 2 years ago committed by Victor Julien
parent 70bdc37f96
commit 99f9451be3

@ -160,11 +160,10 @@ fn parse_byteextract(input: &str) -> IResult<&str, SCDetectByteExtractData, Rule
if 0 != (byte_extract.flags & DETECT_BYTE_EXTRACT_FLAG_ENDIAN) {
return Err(make_error("endianess already set".to_string()));
}
byte_extract.endian = match get_endian_value(name) {
Ok(val) => val,
Err(_) => {
return Err(make_error(format!("invalid endian value: {}", val)));
}
if let Some(endian) = get_endian_value(name) {
byte_extract.endian = endian;
} else {
return Err(make_error(format!("invalid endian value: {}", val)));
};
byte_extract.flags |= DETECT_BYTE_EXTRACT_FLAG_ENDIAN;
}
@ -186,11 +185,10 @@ fn parse_byteextract(input: &str) -> IResult<&str, SCDetectByteExtractData, Rule
if 0 != (byte_extract.flags & DETECT_BYTE_EXTRACT_FLAG_BASE) {
return Err(make_error("base already set".to_string()));
}
byte_extract.base = match get_string_value(name) {
Ok(val) => val,
Err(_) => {
return Err(make_error(format!("invalid string value: {}", val)));
}
if let Some(base) = get_string_value(name) {
byte_extract.base = base;
} else {
return Err(make_error(format!("invalid string value: {}", val)));
};
byte_extract.flags |= DETECT_BYTE_EXTRACT_FLAG_BASE;
}

@ -242,11 +242,10 @@ fn parse_bytemath(input: &str) -> IResult<&str, DetectByteMathData, RuleParseErr
if 0 != (byte_math.flags & DETECT_BYTEMATH_FLAG_ENDIAN) {
return Err(make_error("endianess already set".to_string()));
}
byte_math.endian = match get_endian_value(val) {
Ok(val) => val,
Err(_) => {
return Err(make_error(format!("invalid endian value: {}", val)));
}
if let Some(endian) = get_endian_value(val) {
byte_math.endian = endian;
} else {
return Err(make_error(format!("invalid endian value: {}", val)));
};
byte_math.flags |= DETECT_BYTEMATH_FLAG_ENDIAN;
}
@ -261,11 +260,10 @@ fn parse_bytemath(input: &str) -> IResult<&str, DetectByteMathData, RuleParseErr
if 0 != (byte_math.flags & DETECT_BYTEMATH_FLAG_STRING) {
return Err(make_error("string already set".to_string()));
}
byte_math.base = match get_string_value(val) {
Ok(val) => val,
Err(_) => {
return Err(make_error(format!("invalid string value: {}", val)));
}
if let Some(base) = get_string_value(val) {
byte_math.base = base;
} else {
return Err(make_error(format!("invalid string value: {}", val)));
};
byte_math.flags |= DETECT_BYTEMATH_FLAG_STRING;
}

@ -122,26 +122,26 @@ pub enum ByteBase {
BaseHex = 16,
}
fn get_string_value(value: &str) -> Result<ByteBase, ()> {
fn get_string_value(value: &str) -> Option<ByteBase> {
let res = match value {
"hex" => ByteBase::BaseHex,
"oct" => ByteBase::BaseOct,
"dec" => ByteBase::BaseDec,
_ => return Err(()),
"hex" => Some(ByteBase::BaseHex),
"oct" => Some(ByteBase::BaseOct),
"dec" => Some(ByteBase::BaseDec),
_ => None,
};
Ok(res)
res
}
fn get_endian_value(value: &str) -> Result<ByteEndian, ()> {
fn get_endian_value(value: &str) -> Option<ByteEndian> {
let res = match value {
"big" => ByteEndian::BigEndian,
"little" => ByteEndian::LittleEndian,
"dce" => ByteEndian::EndianDCE,
_ => return Err(()),
"big" => Some(ByteEndian::BigEndian),
"little" => Some(ByteEndian::LittleEndian),
"dce" => Some(ByteEndian::EndianDCE),
_ => None,
};
Ok(res)
res
}
#[cfg(test)]

Loading…
Cancel
Save