forked from OSchip/llvm-project
[Sema] Add more strict check for sizeof diagnostics for bzero
Follow-up from r278264 after Joerg's feedback. Since bzero is not standard, be more strict: also check if the first argument is a pointer, which harden the check for when it does not come originally from a builtin. llvm-svn: 278379
This commit is contained in:
parent
7cdf01ef58
commit
c73e4c3f89
|
@ -6199,6 +6199,13 @@ void Sema::CheckMemaccessArguments(const CallExpr *Call,
|
|||
const Expr *SizeOfArg = getSizeOfExprArg(LenExpr);
|
||||
llvm::FoldingSetNodeID SizeOfArgID;
|
||||
|
||||
// Although widely used, 'bzero' is not a standard function. Be more strict
|
||||
// with the argument types before allowing diagnostics and only allow the
|
||||
// form bzero(ptr, sizeof(...)).
|
||||
QualType FirstArgTy = Call->getArg(0)->IgnoreParenImpCasts()->getType();
|
||||
if (BId == Builtin::BIbzero && !FirstArgTy->getAs<PointerType>())
|
||||
return;
|
||||
|
||||
for (unsigned ArgIdx = 0; ArgIdx != LastArg; ++ArgIdx) {
|
||||
const Expr *Dest = Call->getArg(ArgIdx)->IgnoreParenImpCasts();
|
||||
SourceRange ArgRange = Call->getArg(ArgIdx)->getSourceRange();
|
||||
|
|
Loading…
Reference in New Issue