Skip to content

Commit b98aa45

Browse files
refactor(psl): add BadHeader variant for non-magic header errors
1 parent 1a2bbd1 commit b98aa45

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

  • libwebauthn/src/ops/webauthn/psl

libwebauthn/src/ops/webauthn/psl/dafsa.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ pub enum DafsaFileLoadError {
3434
Truncated,
3535
#[error("not a libpsl DAFSA file (missing or malformed magic)")]
3636
BadMagic,
37+
#[error("malformed DAFSA header (magic present but header is otherwise invalid)")]
38+
BadHeader,
3739
#[error("unsupported DAFSA version: {0}")]
3840
UnsupportedVersion(u32),
3941
}
@@ -111,23 +113,23 @@ fn parse_header(bytes: &[u8]) -> Result<Vec<u8>, DafsaFileLoadError> {
111113
return Err(DafsaFileLoadError::BadMagic);
112114
}
113115
if header.last() != Some(&b'\n') {
114-
return Err(DafsaFileLoadError::BadMagic);
116+
return Err(DafsaFileLoadError::BadHeader);
115117
}
116118
let version_field = header
117119
.get(MAGIC.len()..HEADER_LEN - 1)
118-
.ok_or(DafsaFileLoadError::BadMagic)?;
120+
.ok_or(DafsaFileLoadError::BadHeader)?;
119121
let digit_count = version_field
120122
.iter()
121123
.take_while(|b| b.is_ascii_digit())
122124
.count();
123125
let version_digits = version_field
124126
.get(..digit_count)
125127
.filter(|digits| !digits.is_empty())
126-
.ok_or(DafsaFileLoadError::BadMagic)?;
128+
.ok_or(DafsaFileLoadError::BadHeader)?;
127129
let version: u32 = std::str::from_utf8(version_digits)
128-
.map_err(|_| DafsaFileLoadError::BadMagic)?
130+
.map_err(|_| DafsaFileLoadError::BadHeader)?
129131
.parse()
130-
.map_err(|_| DafsaFileLoadError::BadMagic)?;
132+
.map_err(|_| DafsaFileLoadError::BadHeader)?;
131133
if version != 0 {
132134
return Err(DafsaFileLoadError::UnsupportedVersion(version));
133135
}
@@ -407,7 +409,7 @@ mod tests {
407409
bad[HEADER_LEN - 1] = b' ';
408410
assert!(matches!(
409411
parse_header(&bad),
410-
Err(DafsaFileLoadError::BadMagic)
412+
Err(DafsaFileLoadError::BadHeader)
411413
));
412414
}
413415
}

0 commit comments

Comments
 (0)