Github user hanm commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/179#discussion_r102273810
  
    --- Diff: src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java ---
    @@ -267,10 +267,17 @@ private boolean checkFourLetterWord(final Channel 
channel,
         {
             // We take advantage of the limited size of the length to look
             // for cmds. They are all 4-bytes which fits inside of an int
    -        String cmd = FourLetterCommands.getCmdMapView().get(len);
    -        if (cmd == null) {
    +        if (!FourLetterCommands.isKnown(len)) {
                 return false;
             }
    +
    +        // ZOOKEEPER-2693: don't execute 4lw if it's not enabled.
    +        String cmd = FourLetterCommands.getCommandString(len);
    +        if (!FourLetterCommands.isEnabled(cmd)) {
    +            LOG.debug("Command {} is not executed because it is not white 
listed.", cmd);
    +            return true;
    --- End diff --
    
    Thanks @arshadmohammad for your suggestion, I like this approach from a 
user experience point of view as it provides nice error message on client side.
    
    I am a little bit concerned that instead of doing a (nearly) NOP on server 
side to block a command the way the patch is doing now (which just cost a look 
up), any command including garbage now costs some string printing plus has to 
go through network stack to send the bytes back. This may lead potential 
vulnerable point, though it might also be OK as one could argue if we are in 
such case (ZK server is wide open, every bets is off.). I tend to lean towards 
the safer side though so I'll wait for a while for other comments regarding 
this issue.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to