JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.

If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.

If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.

CodeSonar® 9.2p0 CONFIDENTIAL CodeSecure Inc
C#


CSHARP.STRUCT.BW.AND : Bitwise AND on Boolean (C#)

Summary

There is a suspicious use of & instead of &&.

C# has a bitwise and a logical-AND operation on Booleans, that is, & and &&. Similarly, C# has a bitwise and a logical-OR operation | and ||. The difference is that the logical operations have a short circuit semantics, that is, if the evaluation of the left-hand side is enough to determine the outcome of the operation, then the right-hand side is not evaluated; the bitwise operations, instead, evaluate both sides, always, which might be incorrect is most cases, or at least inefficient.

Properties

Class Name Bitwise AND on Boolean (C#)
Significance reliability
Mnemonic CSHARP.STRUCT.BW.AND
Categories
CWE CWE:768 Incorrect Short Circuit Evaluation
Availability Available for C# only.
Enabling Checks for this warning class are enabled by default. To disable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += discard class="Bitwise AND on Boolean (C#)"

Resolution

Use the logical (short-circuit) version of the operators on Booleans.

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.

 

To report problems with this documentation, please visit https://support.codesecure.com/.