Skip to content

Commit 5869f6d

Browse files
committed
Fix FN for std::intmax_t passed as %ld, %lld into scanf
1 parent 7cf21f3 commit 5869f6d

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

lib/checkio.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -827,12 +827,12 @@ void CheckIO::checkFormatString(const Token * const tok,
827827
if (argInfo.typeToken->str() != "long" || !argInfo.typeToken->isLong())
828828
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, false);
829829
else if (typesMatch(argInfo.typeToken->originalName(), "ptrdiff_t") ||
830-
argInfo.typeToken->originalName() == "intmax_t")
830+
typesMatch(argInfo.typeToken->originalName(), "intmax_t"))
831831
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, false);
832832
} else if (argInfo.typeToken->str() != "long" || argInfo.typeToken->isLong())
833833
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, false);
834834
else if (typesMatch(argInfo.typeToken->originalName(), "ptrdiff_t") ||
835-
argInfo.typeToken->originalName() == "intmax_t")
835+
typesMatch(argInfo.typeToken->originalName(), "intmax_t"))
836836
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, false);
837837
break;
838838
case 'I':

test/testio.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,6 +1076,7 @@ class TestIO : public TestFixture {
10761076
TEST_SCANF_WARN_AKA("%ld","long","size_t","unsigned long","unsigned long long");
10771077
TEST_SCANF_WARN_AKA("%ld","long","intmax_t", "signed long", "signed long long");
10781078
TEST_SCANF_WARN_AKA("%ld","long","std::ptrdiff_t", "signed long", "signed long long");
1079+
TEST_SCANF_WARN_AKA("%ld","long","std::intmax_t", "signed long", "signed long long");
10791080
TEST_SCANF_WARN_AKA_WIN64("%ld","long","std::intptr_t", "signed long long");
10801081
TEST_SCANF_WARN_AKA("%ld","long","std::uintptr_t", "unsigned long", "unsigned long long");
10811082

@@ -1151,6 +1152,7 @@ class TestIO : public TestFixture {
11511152
TEST_SCANF_WARN_AKA("%lld","long long","size_t", "unsigned long", "unsigned long long");
11521153
TEST_SCANF_WARN_AKA("%lld","long long","intmax_t", "signed long", "signed long long");
11531154
TEST_SCANF_WARN_AKA("%lld","long long","std::ptrdiff_t", "signed long", "signed long long");
1155+
TEST_SCANF_WARN_AKA("%lld","long long","std::intmax_t", "signed long", "signed long long");
11541156
TEST_SCANF_WARN_AKA_WIN32("%lld","long long","std::intptr_t", "signed long");
11551157

11561158
TEST_SCANF_WARN("%hu", "unsigned short", "bool");

0 commit comments

Comments
 (0)