tdf#92639: Slashes are allowed in set member names, of course
Change-Id: I30944fe9611e83566c891a7d1461ad02979daddd
This commit is contained in:
@@ -315,8 +315,9 @@ void Test::testInsertSetMember() {
|
|||||||
} catch (css::lang::IllegalArgumentException &) {}
|
} catch (css::lang::IllegalArgumentException &) {}
|
||||||
try {
|
try {
|
||||||
access->insertByName("a/b", css::uno::makeAny(member));
|
access->insertByName("a/b", css::uno::makeAny(member));
|
||||||
CPPUNIT_FAIL("expected IllegalArgumentException");
|
} catch (css::lang::IllegalArgumentException &) {
|
||||||
} catch (css::lang::IllegalArgumentException &) {}
|
CPPUNIT_FAIL("unexpected IllegalArgumentException");
|
||||||
|
}
|
||||||
css::uno::Reference<css::util::XChangesBatch>(
|
css::uno::Reference<css::util::XChangesBatch>(
|
||||||
access, css::uno::UNO_QUERY_THROW)->commitChanges();
|
access, css::uno::UNO_QUERY_THROW)->commitChanges();
|
||||||
css::uno::Reference<css::lang::XComponent>(
|
css::uno::Reference<css::lang::XComponent>(
|
||||||
|
@@ -109,12 +109,12 @@ namespace {
|
|||||||
// Conservatively forbid what is either not an XML Char (including lone
|
// Conservatively forbid what is either not an XML Char (including lone
|
||||||
// surrogates, even though they should not appear in well-formed UNO OUString
|
// surrogates, even though they should not appear in well-formed UNO OUString
|
||||||
// instances anyway), or is a slash (as it causes problems in path syntax):
|
// instances anyway), or is a slash (as it causes problems in path syntax):
|
||||||
bool isValidName(OUString const & name) {
|
bool isValidName(OUString const & name, bool setMember) {
|
||||||
for (sal_Int32 i = 0; i != name.getLength();) {
|
for (sal_Int32 i = 0; i != name.getLength();) {
|
||||||
sal_uInt32 c = name.iterateCodePoints(&i);
|
sal_uInt32 c = name.iterateCodePoints(&i);
|
||||||
if ((c < 0x20 && !(c == 0x09 || c == 0x0A || c == 0x0D))
|
if ((c < 0x20 && !(c == 0x09 || c == 0x0A || c == 0x0D))
|
||||||
|| rtl::isHighSurrogate(c) || rtl::isLowSurrogate(c) || c == 0xFFFE
|
|| rtl::isHighSurrogate(c) || rtl::isLowSurrogate(c) || c == 0xFFFE
|
||||||
|| c == 0xFFFF || c == '/')
|
|| c == 0xFFFF || (!setMember && c == '/'))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -669,7 +669,7 @@ void Access::setName(OUString const & aName)
|
|||||||
if (node->getMandatory() == Data::NO_LAYER &&
|
if (node->getMandatory() == Data::NO_LAYER &&
|
||||||
!(other.is() && other->isFinalized()))
|
!(other.is() && other->isFinalized()))
|
||||||
{
|
{
|
||||||
if (!isValidName(aName)) {
|
if (!isValidName(aName, true)) {
|
||||||
throw css::uno::RuntimeException(
|
throw css::uno::RuntimeException(
|
||||||
"invalid element name " + aName);
|
"invalid element name " + aName);
|
||||||
}
|
}
|
||||||
@@ -1188,7 +1188,7 @@ void Access::insertByName(
|
|||||||
Modifications localMods;
|
Modifications localMods;
|
||||||
switch (getNode()->kind()) {
|
switch (getNode()->kind()) {
|
||||||
case Node::KIND_LOCALIZED_PROPERTY:
|
case Node::KIND_LOCALIZED_PROPERTY:
|
||||||
if (!isValidName(aName)) {
|
if (!isValidName(aName, false)) {
|
||||||
throw css::lang::IllegalArgumentException(
|
throw css::lang::IllegalArgumentException(
|
||||||
aName, static_cast<cppu::OWeakObject *>(this), 0);
|
aName, static_cast<cppu::OWeakObject *>(this), 0);
|
||||||
}
|
}
|
||||||
@@ -1196,7 +1196,7 @@ void Access::insertByName(
|
|||||||
break;
|
break;
|
||||||
case Node::KIND_GROUP:
|
case Node::KIND_GROUP:
|
||||||
{
|
{
|
||||||
if (!isValidName(aName)) {
|
if (!isValidName(aName, false)) {
|
||||||
throw css::lang::IllegalArgumentException(
|
throw css::lang::IllegalArgumentException(
|
||||||
aName, static_cast<cppu::OWeakObject *>(this), 0);
|
aName, static_cast<cppu::OWeakObject *>(this), 0);
|
||||||
}
|
}
|
||||||
@@ -1212,7 +1212,7 @@ void Access::insertByName(
|
|||||||
break;
|
break;
|
||||||
case Node::KIND_SET:
|
case Node::KIND_SET:
|
||||||
{
|
{
|
||||||
if (!isValidName(aName)) {
|
if (!isValidName(aName, true)) {
|
||||||
throw css::lang::IllegalArgumentException(
|
throw css::lang::IllegalArgumentException(
|
||||||
aName, static_cast<cppu::OWeakObject *>(this), 0);
|
aName, static_cast<cppu::OWeakObject *>(this), 0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user