diff --git a/components/membership/membership-rest-impl/src/main/kotlin/net/corda/membership/impl/rest/v1/MGMRestResourceImpl.kt b/components/membership/membership-rest-impl/src/main/kotlin/net/corda/membership/impl/rest/v1/MGMRestResourceImpl.kt index 5715c762533..d089168176f 100644 --- a/components/membership/membership-rest-impl/src/main/kotlin/net/corda/membership/impl/rest/v1/MGMRestResourceImpl.kt +++ b/components/membership/membership-rest-impl/src/main/kotlin/net/corda/membership/impl/rest/v1/MGMRestResourceImpl.kt @@ -763,6 +763,10 @@ class MGMRestResourceImpl internal constructor( } private fun validateRegex(expression: String) { + if (expression.isBlank()) { + throw BadRequestException("The regular expression was a blank string.") + } + try { expression.toRegex() } catch (e: PatternSyntaxException) { diff --git a/components/membership/membership-rest-impl/src/test/kotlin/net/corda/membership/impl/rest/v1/MGMRestResourceTest.kt b/components/membership/membership-rest-impl/src/test/kotlin/net/corda/membership/impl/rest/v1/MGMRestResourceTest.kt index e5c58485b58..faa03d0cf8d 100644 --- a/components/membership/membership-rest-impl/src/test/kotlin/net/corda/membership/impl/rest/v1/MGMRestResourceTest.kt +++ b/components/membership/membership-rest-impl/src/test/kotlin/net/corda/membership/impl/rest/v1/MGMRestResourceTest.kt @@ -237,6 +237,15 @@ class MGMRestResourceTest { stopService() } + @Test + fun `addGroupApprovalRule throws invalid input for blank string regex`() { + startService() + + assertThrows { + mgmRestResource.addGroupApprovalRule(HOLDING_IDENTITY_ID, ApprovalRuleRequestParams(" ", RULE_LABEL)) + } + } + @Test fun `addGroupApprovalRule throws bad request if short hash is invalid`() { startService() @@ -862,6 +871,16 @@ class MGMRestResourceTest { ) } } + + @Test + fun `it throws bad request for blank string regex`() { + assertThrows { + callFunctionUnderTest( + HOLDING_IDENTITY_ID, + ApprovalRuleRequestParams(" ", RULE_LABEL) + ) + } + } } @Nested