[PATCH] D28348: [analyzer] Taught the analyzer about Glib API to check Memory-leak
Leslie Zhai via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Feb 19 19:14:55 PST 2017
xiangzhai marked 3 inline comments as done.
xiangzhai added a comment.
Hi Anna,
Thank you so much for the review!
I will try to implement extend MallocMemAux and ReallocMem in the follow up patch.
Regards,
Leslie Zhai
================
Comment at: lib/StaticAnalyzer/Checkers/MallocChecker.cpp:885
+ return;
+ State = MallocMemAux(C, CE, CE->getArg(0), UndefinedVal(), State);
+ State = ProcessZeroAllocation(C, CE, 0, State);
----------------
zaks.anna wrote:
> I am not sure this is correct as the third argument is "size of allocation", which in this case would be the value of CE->getArg(0) times the value of CE->getArg(2).
>
> The current implementation of MallocMemAux would need to be extended to incorporate this:
> ` // Set the region's extent equal to the Size parameter.
> const SymbolicRegion *R =
> dyn_cast_or_null<SymbolicRegion>(RetVal.getAsRegion());
> if (!R)
> return nullptr;
> if (Optional<DefinedOrUnknownSVal> DefinedSize =
> Size.getAs<DefinedOrUnknownSVal>()) {
> SValBuilder &svalBuilder = C.getSValBuilder();
> DefinedOrUnknownSVal Extent = R->getExtent(svalBuilder);
> DefinedOrUnknownSVal extentMatchesSize =
> svalBuilder.evalEQ(State, Extent, *DefinedSize);
>
> State = State->assume(extentMatchesSize, true);
> assert(State);
> }`
>
> My suggestion is to submit the patch without the 'n' variants and extend MallocMemAux to deal with them as a follow up patch.
Hi Anna,
Thanks for your review!
> I am not sure this is correct as the third argument is "size of allocation", which in this case would be the value of CE->getArg(0) times the value of CE->getArg(2).
```g_malloc_n``` just use two arguments https://developer.gnome.org/glib/stable/glib-Memory-Allocation.html#g-malloc-n
so in this case would be the value of CE->getArg(0) x CE->getArg(1)?
> My suggestion is to submit the patch without the 'n' variants and extend MallocMemAux to deal with them as a follow up patch.
I will drop XXX_n from this patch, then implement them until extend MallocMemAux and ReallocMem implemented in the follow up patch.
Regards,
Leslie Zhai
Repository:
rL LLVM
https://reviews.llvm.org/D28348
More information about the cfe-commits
mailing list