[PATCH] D11832: [Patch] [Analyzer] false positive: Potential leak connected with memcpy (PR 22954)
pierre gousseau via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 7 07:09:04 PDT 2015
pgousseau created this revision.
pgousseau added reviewers: cfe-commits, ayartsev, xazax.hun.
Dear All,
I would like to propose a patch to avoid the false positive memory leak warning kindly reported by krzysztof in https://llvm.org/bugs/show_bug.cgi?id=22954
The issue seems originates from the CString checker's handling of 'memcpy' (and string copy functions in general).
Given the below code snippet:
----------------------
struct aa { char *s; char data[32];};
...
a.s = malloc(nbytes);
memcpy(a.data, source, len);
...
----------------------
As the CString checker handles the memcpy call, it requests the invalidation of the 'a.data' region. But the invalidation worker marks the whole memory region of 'a' as to be invalidated. The Malloc checker is not made aware of this causing the false positive.
Following advices from Anton Yartsev and Gabor Horvath on cfe-dev (http://lists.cs.uiuc.edu/pipermail/cfe-dev/2015-July/043786.html), this patch introduces a new trait 'TK_DoNotInvalidateSuperRegion', for the invalidation worker to take into account, when invalidating a destination buffer of type 'FieldRegion'.
Please let me know if this is an acceptable change and if yes eventually commit it for me (as I do not have svn access) ?
Regards,
Pierre Gousseau
SN Systems - Sony Computer Entertainment
http://reviews.llvm.org/D11832
Files:
include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
lib/StaticAnalyzer/Checkers/CStringChecker.cpp
lib/StaticAnalyzer/Core/RegionStore.cpp
test/Analysis/pr22954.c
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D11832.31510.patch
Type: text/x-patch
Size: 17206 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150807/22160793/attachment-0001.bin>
More information about the cfe-commits
mailing list