Skip to content

Commit 0369f0a

Browse files
committed
refactor
1 parent 74b0803 commit 0369f0a

File tree

3 files changed

+10
-13
lines changed

3 files changed

+10
-13
lines changed

Diff for: lib/checkbufferoverrun.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1030,11 +1030,11 @@ bool CheckBufferOverrun::analyseWholeProgram1(const std::map<std::string, std::l
10301030

10311031
if (type == 1) {
10321032
errorId = "ctuArrayIndex";
1033-
if (unsafeUsage.value.value > 0)
1034-
errmsg = "Array index out of bounds; '" + unsafeUsage.myArgumentName + "' buffer size is " + MathLib::toString(functionCall->callArgValue.value) + " and it is accessed at offset " + MathLib::toString(unsafeUsage.value.value) + ".";
1033+
if (unsafeUsage.value > 0)
1034+
errmsg = "Array index out of bounds; '" + unsafeUsage.myArgumentName + "' buffer size is " + MathLib::toString(functionCall->callArgValue.value) + " and it is accessed at offset " + MathLib::toString(unsafeUsage.value) + ".";
10351035
else
1036-
errmsg = "Array index out of bounds; buffer '" + unsafeUsage.myArgumentName + "' is accessed at offset " + MathLib::toString(unsafeUsage.value.value) + ".";
1037-
cwe = (unsafeUsage.value.value > 0) ? CWE_BUFFER_OVERRUN : CWE_BUFFER_UNDERRUN;
1036+
errmsg = "Array index out of bounds; buffer '" + unsafeUsage.myArgumentName + "' is accessed at offset " + MathLib::toString(unsafeUsage.value) + ".";
1037+
cwe = (unsafeUsage.value > 0) ? CWE_BUFFER_OVERRUN : CWE_BUFFER_UNDERRUN;
10381038
} else {
10391039
errorId = "ctuPointerArith";
10401040
errmsg = "Pointer arithmetic overflow; '" + unsafeUsage.myArgumentName + "' buffer size is " + MathLib::toString(functionCall->callArgValue.value);

Diff for: lib/ctu.cpp

+4-7
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ static constexpr char ATTR_MY_ID[] = "my-id";
5555
static constexpr char ATTR_MY_ARGNR[] = "my-argnr";
5656
static constexpr char ATTR_MY_ARGNAME[] = "my-argname";
5757
static constexpr char ATTR_VALUE[] = "value";
58-
static constexpr char ATTR_UNKNOWN_FUNCTION_RETURN[] = "ufr";
5958

6059
std::string CTU::getFunctionId(const Tokenizer &tokenizer, const Function *function)
6160
{
@@ -144,8 +143,7 @@ std::string CTU::FileInfo::UnsafeUsage::toString() const
144143
<< " " << ATTR_LOC_FILENAME << "=\"" << ErrorLogger::toxml(location.fileName) << '\"'
145144
<< " " << ATTR_LOC_LINENR << "=\"" << location.lineNumber << '\"'
146145
<< " " << ATTR_LOC_COLUMN << "=\"" << location.column << '\"'
147-
<< " " << ATTR_VALUE << "=\"" << value.value << "\""
148-
<< " " << ATTR_UNKNOWN_FUNCTION_RETURN << "=\"" << (int)value.unknownFunctionReturn << "\""
146+
<< " " << ATTR_VALUE << "=\"" << value << "\""
149147
<< "/>\n";
150148
return out.str();
151149
}
@@ -272,8 +270,7 @@ std::list<CTU::FileInfo::UnsafeUsage> CTU::loadUnsafeUsageListFromXml(const tiny
272270
unsafeUsage.location.fileName = readAttrString(e, ATTR_LOC_FILENAME, &error);
273271
unsafeUsage.location.lineNumber = readAttrInt(e, ATTR_LOC_LINENR, &error);
274272
unsafeUsage.location.column = readAttrInt(e, ATTR_LOC_COLUMN, &error);
275-
unsafeUsage.value.value = readAttrInt(e, ATTR_VALUE, &error);
276-
unsafeUsage.value.unknownFunctionReturn = readAttrInt(e, ATTR_UNKNOWN_FUNCTION_RETURN, &error);
273+
unsafeUsage.value = readAttrInt(e, ATTR_VALUE, &error);
277274

278275
if (!error)
279276
ret.push_back(std::move(unsafeUsage));
@@ -491,7 +488,7 @@ std::list<CTU::FileInfo::UnsafeUsage> CTU::getUnsafeUsage(const Tokenizer &token
491488
for (int argnr = 0; argnr < function->argCount(); ++argnr) {
492489
for (const std::pair<const Token *, CTU::FileInfo::Value> &v : getUnsafeFunction(settings, &scope, argnr, isUnsafeUsage)) {
493490
const Token *tok = v.first;
494-
const CTU::FileInfo::Value val = v.second;
491+
const MathLib::bigint val = v.second.value;
495492
unsafeUsage.emplace_back(CTU::getFunctionId(tokenizer, function), argnr+1, tok->str(), CTU::FileInfo::Location(tokenizer,tok), val);
496493
}
497494
}
@@ -569,7 +566,7 @@ std::list<ErrorMessage::FileLocation> CTU::FileInfo::getErrorPath(InvalidValueTy
569566
{
570567
const CTU::FileInfo::CallBase *path[10] = {nullptr};
571568

572-
if (!findPath(unsafeUsage.myId, unsafeUsage.myArgNr, unsafeUsage.value.value, invalidValue, callsMap, path, 0, warning, maxCtuDepth))
569+
if (!findPath(unsafeUsage.myId, unsafeUsage.myArgNr, unsafeUsage.value, invalidValue, callsMap, path, 0, warning, maxCtuDepth))
573570
return {};
574571

575572
if (unknownFunctionReturn && path[0] && dynamic_cast<const CTU::FileInfo::FunctionCall *>(path[0])) {

Diff for: lib/ctu.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ namespace CTU {
7777

7878
struct UnsafeUsage {
7979
UnsafeUsage() = default;
80-
UnsafeUsage(std::string myId, nonneg int myArgNr, std::string myArgumentName, Location location, Value value)
80+
UnsafeUsage(std::string myId, nonneg int myArgNr, std::string myArgumentName, Location location, MathLib::bigint value)
8181
: myId(std::move(myId))
8282
, myArgNr(myArgNr)
8383
, myArgumentName(std::move(myArgumentName))
@@ -87,7 +87,7 @@ namespace CTU {
8787
nonneg int myArgNr{};
8888
std::string myArgumentName;
8989
Location location;
90-
Value value;
90+
MathLib::bigint value;
9191
std::string toString() const;
9292
};
9393

0 commit comments

Comments
 (0)