fix(validation): allow image height up to spec maximum of 400

Image height was validated against 0..=144, the same bound as width, but the
RSS 2.0 specification allows heights up to 400 (width max is 144). Spec-valid
images with a height between 145 and 400 were wrongly reported as invalid.
Validate height against 0..=400 and fix the error message.
This commit is contained in:
dualfroz committed 2026-09-04 22:00:22 +02:00
1 parent 3e9f6d1c09
commit 40aa38a6ac
2 files changed
+44 -2

No files matched your search

+2 -2
View File
@@ -222,8 +222,8 @@ impl Validate for Image {
if let Some(height) = self.height() {
let height = height.parse::<i64>()?;
validate!(
(0..=144).contains(&height),
"Image height is not between 0 and 144"
(0..=400).contains(&height),
"Image height is not between 0 and 400"
);
}
+42
View File
@@ -0,0 +1,42 @@
#![cfg(feature = "validation")]
use rss::validation::Validate;
use rss::ImageBuilder;
fn image_with_height(height: &str) -> rss::Image {
ImageBuilder::default()
.url("https://example.com/image.png".to_string())
.link("https://example.com/".to_string())
.title("title".to_string())
.height(height.to_string())
.build()
}
fn image_with_width(width: &str) -> rss::Image {
ImageBuilder::default()
.url("https://example.com/image.png".to_string())
.link("https://example.com/".to_string())
.title("title".to_string())
.width(width.to_string())
.build()
}
#[test]
fn image_height_allows_up_to_400() {
// The RSS 2.0 specification sets the maximum image height to 400.
assert!(image_with_height("31").validate().is_ok());
assert!(image_with_height("200").validate().is_ok());
assert!(image_with_height("400").validate().is_ok());
}
#[test]
fn image_height_above_400_is_invalid() {
assert!(image_with_height("401").validate().is_err());
}
#[test]
fn image_width_max_is_still_144() {
// Width keeps its specification maximum of 144.
assert!(image_with_width("144").validate().is_ok());
assert!(image_with_width("145").validate().is_err());
}