This commit uses Option instead of Result.
Issue: 6873
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;
}
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;
}
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;
}
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;
}
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)]