wazuh / wazuh-api

Wazuh - RESTful API
https://wazuh.com
GNU General Public License v2.0
69 stars 57 forks source link

Explicitly specify 2 separate cases that fall through #372

Closed mgmacias95 closed 5 years ago

mgmacias95 commented 5 years ago

The comma operator (,) evaluates its operands, from left to right, and returns the second one. That's useful in some situations, but just wrong in a switch case. You may think you're compactly handling multiple values in the case, but only the last one in the comma-list will ever be handled. The rest will fall through to the default.

Similarly, the logical OR operator (||) will not work in a switch case, only the first argument will be considered at execution time.

Noncompliant Code Example

switch a {
  case 1,2:  // Noncompliant; only 2 is ever handled by this case
    doTheThing(a);
  case 3 || 4: // Noncompliant; only '3' is handled
    doThatThing(a);
  case 5:
    doTheOtherThing(a);
  default:
    console.log("Neener, neener!");  // this happens when a==1 or a == 4
}

Compliant Solution

switch a {
  case 1:
  case 2:
    doTheThing(a);
  case 3:
  case 4:
    doThatThing(a);
  case 5:
    doTheOtherThing(a);
  default:
    console.log("Neener, neener!");
}

https://github.com/wazuh/wazuh-api/blob/7cd5ef15f668f52324c7f8ebf8677fb1e1106aaf/helpers/logger.js#L41-L59