Merge pull request #25955 from Kumataro:fix25946

core: FileStorage: detect invalid attribute value
This commit is contained in:
Alexander Smorkalov 2024-07-26 11:59:01 +03:00 committed by GitHub
commit 65853aa783
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 0 deletions

View File

@ -737,6 +737,8 @@ public:
if( c != '\"' && c != '\'' )
{
ptr = skipSpaces( ptr, CV_XML_INSIDE_TAG );
if(!ptr)
CV_PARSE_ERROR_CPP("Invalid attribute value");
if( *ptr != '\"' && *ptr != '\'' )
CV_PARSE_ERROR_CPP( "Attribute value should be put into single or double quotes" );
}

View File

@ -1985,4 +1985,22 @@ INSTANTIATE_TEST_CASE_P( /*nothing*/,
Core_InputOutput_regression_25073,
Values("test.json", "test.xml", "test.yml") );
// see https://github.com/opencv/opencv/issues/25946
TEST(Core_InputOutput, FileStorage_invalid_attribute_value_regression_25946)
{
const std::string fileName = cv::tempfile("FileStorage_invalid_attribute_value_exception_test.xml");
const std::string content = "<?xml \n_=";
std::fstream testFile;
testFile.open(fileName.c_str(), std::fstream::out);
if(!testFile.is_open()) FAIL();
testFile << content;
testFile.close();
FileStorage fs;
EXPECT_ANY_THROW( fs.open(fileName, FileStorage::READ + FileStorage::FORMAT_XML) );
ASSERT_EQ(0, std::remove(fileName.c_str()));
}
}} // namespace