mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 06:36:07 +00:00
[analyzer][docs] Document alpha.security.cert.pos.34c limitations
Reviewed By: martong Differential Revision: https://reviews.llvm.org/D124659
This commit is contained in:
parent
5a2e595eb8
commit
464c9833df
@ -2268,6 +2268,25 @@ Finds calls to the ``putenv`` function which pass a pointer to an automatic vari
|
||||
return putenv(env); // putenv function should not be called with auto variables
|
||||
}
|
||||
|
||||
Limitations:
|
||||
|
||||
- Technically, one can pass automatic variables to ``putenv``,
|
||||
but one needs to ensure that the given environment key stays
|
||||
alive until it's removed or overwritten.
|
||||
Since the analyzer cannot keep track of which envvars get overwritten
|
||||
and when, it needs to be slightly more aggressive and warn for such
|
||||
cases too, leading in some cases to false-positive reports like this:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
void baz() {
|
||||
char env[] = "NAME=value";
|
||||
putenv(env); // false-positive warning: putenv function should not be called...
|
||||
// More code...
|
||||
putenv((char *)"NAME=anothervalue");
|
||||
// This putenv call overwrites the previous entry, thus that can no longer dangle.
|
||||
} // 'env' array becomes dead only here.
|
||||
|
||||
alpha.security.cert.env
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user