Weaknesses of type CWE-768

1 result

Avaliação de curto-circuito incorreta em condições lógicas

Ocorre quando a lógica de uma expressão condicional não usa corretamente os operadores de curto-circuito (como && e ||), fazendo com que código que deveria ser pulado seja executado, ou vice-versa. Isso pode levar a comportamentos inesperados: desde lógica de negócio quebrada até bypasses de validação e segurança.

Example

Um desenvolvedor escreve `if (user.isAdmin || checkPermission(user))` esperando que a função checkPermission() não seja chamada se o usuário já é admin. Mas se usar | (OR bit a bit) em vez de || (OR lógico), a função sempre executará, podendo causar efeitos colaterais indesejados ou contornar controles de acesso.

How to mitigate

Use explicitamente os operadores de curto-circuito corretos (&& para AND, || para OR) em condições. Revise lógica condicional em testes e code review, especialmente em validações de segurança, e evite misturar operadores bit a bit com lógica booleana.