Skip to content

Commit 8b2c75b

Browse files
freeinternet865freeinternet865
andauthored
domain_fronter: reject invalid relay body base64 (#24)
Treat malformed base64 in Apps Script relay responses as a bad upstream response instead of silently turning it into an empty body. Add a focused regression test for invalid response body encoding. Co-authored-by: freeinternet865 <free@internet865.com>
1 parent 2044fed commit 8b2c75b

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

src/domain_fronter.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1127,7 +1127,9 @@ fn parse_relay_json(body: &[u8]) -> Result<Vec<u8>, FronterError> {
11271127
let status = data.s.unwrap_or(200);
11281128
let status_text = status_text(status);
11291129
let resp_body = match data.b {
1130-
Some(b) => B64.decode(b).unwrap_or_default(),
1130+
Some(b) => B64
1131+
.decode(b)
1132+
.map_err(|e| FronterError::BadResponse(format!("bad relay body base64: {}", e)))?,
11311133
None => Vec::new(),
11321134
};
11331135

@@ -1474,6 +1476,13 @@ mod tests {
14741476
assert!(matches!(err, FronterError::Relay(_)));
14751477
}
14761478

1479+
#[test]
1480+
fn parse_relay_rejects_invalid_body_base64() {
1481+
let body = r#"{"s":200,"b":"***not-base64***"}"#;
1482+
let err = parse_relay_json(body.as_bytes()).unwrap_err();
1483+
assert!(matches!(err, FronterError::BadResponse(_)));
1484+
}
1485+
14771486
#[test]
14781487
fn blacklist_heuristics() {
14791488
assert!(should_blacklist(429, ""));

0 commit comments

Comments
 (0)