eiri commented on a change in pull request #1770: Fix couchdb 1384 function
clause error
URL: https://github.com/apache/couchdb/pull/1770#discussion_r237146904
##########
File path: src/couch/src/couch_db.erl
##########
@@ -730,12 +730,22 @@ validate_security_object(SecProps) ->
% we fallback to readers here for backwards compatibility
Members = couch_util:get_value(<<"members">>, SecProps,
couch_util:get_value(<<"readers">>, SecProps, {[]})),
- ok = validate_names_and_roles(Admins),
- ok = validate_names_and_roles(Members),
+ case Admins of
Review comment:
This is inefficient way to go about this, you are essentially splitting
validation logic in two places instead of fixing it in the dedicated validator.
Better (and shorter) approach would be to add a "catch all" validator
function to raise errors, like this:
```diff
@@ -759,6 +749,8 @@ validate_names_and_roles(Props) when is_list(Props) ->
_ -> throw("roles must be a JSON list of strings")
end,
ok.
+validate_names_and_roles(_) ->
+ throw("members must be a JSON list of strings").
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services