diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2010-09-30 11:21:59 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2010-09-30 11:21:59 +0000 |
commit | 5d66e5feb84d3ba92a0bcfdf8176c5eb868e1325 (patch) | |
tree | 67d40b7141e125fbabe368a6e7b3717c2c8e7d77 /llvm/lib/Transforms | |
parent | f44d35061472ae7c7648dc9a3107ef137574d22a (diff) | |
download | bcm5719-llvm-5d66e5feb84d3ba92a0bcfdf8176c5eb868e1325.tar.gz bcm5719-llvm-5d66e5feb84d3ba92a0bcfdf8176c5eb868e1325.zip |
Tighten up prototype verification of strchr and strrchr to avoid a crash in the very unlikely case that someone passes an integer > i64 to strchr.
llvm-svn: 115144
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp b/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp index 81460bcf4de..28aa9e87cd5 100644 --- a/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp +++ b/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp @@ -223,7 +223,8 @@ struct StrChrOpt : public LibCallOptimization { const FunctionType *FT = Callee->getFunctionType(); if (FT->getNumParams() != 2 || FT->getReturnType() != Type::getInt8PtrTy(*Context) || - FT->getParamType(0) != FT->getReturnType()) + FT->getParamType(0) != FT->getReturnType() || + !FT->getParamType(1)->isIntegerTy(32)) return 0; Value *SrcStr = CI->getArgOperand(0); @@ -273,7 +274,8 @@ struct StrRChrOpt : public LibCallOptimization { const FunctionType *FT = Callee->getFunctionType(); if (FT->getNumParams() != 2 || FT->getReturnType() != Type::getInt8PtrTy(*Context) || - FT->getParamType(0) != FT->getReturnType()) + FT->getParamType(0) != FT->getReturnType() || + !FT->getParamType(1)->isIntegerTy(32)) return 0; Value *SrcStr = CI->getArgOperand(0); |