Description of problem: thin_rmap returns 0 when using invalid range. It should return 1 and an error message. Version-Release number of selected component (if applicable): device-mapper-persistent-data-1.0.4-1.el9 How reproducible: always Steps to Reproduce: 1. thin_rmap /dev/mapper/vgtest-swapvol --region 10..0 Actual results: thin_rmap returns 0 and no output Expected results: Should return 1 for using invalid range and print error message similar to one in 0.9.0 version Additional info: In 0.9.0 thin_rmap returns following error message for invalid regions: # thin_rmap /dev/mapper/vgtest-swapvol --region 0..0 badly formed region (end <= begin) # thin_rmap /dev/mapper/vgtest-swapvol --region 10..0 badly formed region (end <= begin)
Send a patch upstream: https://github.com/jthornber/thin-provisioning-tools/commit/aa5a10af Now the Rust version validates the range size (i.e., end > begin or not), and prohibits negative numbers (in contrast, the v0.9.0 allows negative numbers by type casting). Here are some negative test cases: thin_rmap --region 0..0 // end <= begin thin_rmap --region 10..0 // end <= begin thin_rmap --region -1..0 // negative begin thin_rmap --region 0..-1 // negative end Does that match our conclusions before?
Yes, it matches what we've concluded.
Update: correct the commit id https://github.com/jthornber/thin-provisioning-tools/commit/185cf53c15 and there are unit tests (via cargo test [--release] --test lib) ``` test commands::utils::range_parsing_tests::test_invalid_end ... ok test commands::utils::range_parsing_tests::test_dots_only ... ok test commands::utils::range_parsing_tests::test_invalid_begin ... ok test commands::utils::range_parsing_tests::test_end_not_greater_than_begin ... ok test commands::utils::range_parsing_tests::test_negative_begin ... ok test commands::utils::range_parsing_tests::test_extra_characters ... ok test commands::utils::range_parsing_tests::test_negative_end ... ok test commands::utils::range_parsing_tests::test_normal ... ok test commands::utils::range_parsing_tests::test_no_dots ... ok ```