github / codeql-coding-standards

This repository contains CodeQL queries and libraries which support various Coding Standards.
MIT License
129 stars 60 forks source link

`RULE-11-9`: Consider more types of assignment #671

Open lcartey opened 2 months ago

lcartey commented 2 months ago

Affected rules

Description

Rule 11.9 prohibits the use of 0 as a null pointer constant when assigning to a pointer. However, we do not capture all the types of assignments. The Glossary (Appendix J) states:

Assigned

An expression is assigned if it is the subject of an assignment.

Assignment

It is sometimes convenient to use the term assignment to denote any operation which takes place as if it were by assignment. The operations covered by this term are: • Assignment by means of one of the assignment operators; • Passing an argument to a function, in which case the argument is copied as if by assignment to the corresponding parameter; • Returning an expression from a function, in which case the result is copied as if by assignment to an object with the function’s return type; • Using an expression to initialize all or part of an object, including a compound literal in C99, in which case the expression is copied as if by assignment to the destination.

This may also impact other MISRA rules that refer to the term assignment or assigned.

Example

void* myfunc() {
  return 0; // NON_COMPLIANT
}