File tree Expand file tree Collapse file tree 2 files changed +22
-4
lines changed Expand file tree Collapse file tree 2 files changed +22
-4
lines changed Original file line number Diff line number Diff line change @@ -805,10 +805,12 @@ void NotNullTerminatedResultCheck::check(
805805 // PP->getMacroInfo() returns nullptr if macro has no definition.
806806 if (MI) {
807807 const auto &T = MI->tokens ().back ();
808- StringRef ValueStr = StringRef (T.getLiteralData (), T.getLength ());
809- llvm::APInt IntValue;
810- ValueStr.getAsInteger (10 , IntValue);
811- AreSafeFunctionsWanted = IntValue.getZExtValue ();
808+ if (T.isLiteral () && T.getLiteralData ()) {
809+ StringRef ValueStr = StringRef (T.getLiteralData (), T.getLength ());
810+ llvm::APInt IntValue;
811+ ValueStr.getAsInteger (10 , IntValue);
812+ AreSafeFunctionsWanted = IntValue.getZExtValue ();
813+ }
812814 }
813815 }
814816
Original file line number Diff line number Diff line change 1+ // RUN: %check_clang_tidy %s bugprone-not-null-terminated-result %t -- \
2+ // RUN: -- -std=c11 -I %S/Inputs/bugprone-not-null-terminated-result
3+
4+ #include "not-null-terminated-result-c.h"
5+
6+ #define __STDC_LIB_EXT1__ 1
7+ #define __STDC_WANT_LIB_EXT1__ ((unsigned)1)
8+
9+ void f (const char * src ) {
10+ char dest [13 ];
11+ memcpy_s (dest , 13 , src , strlen (src ) - 1 );
12+ // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the result from calling 'memcpy_s' is not null-terminated [bugprone-not-null-terminated-result]
13+ // CHECK-FIXES: char dest[14];
14+ // CHECK-FIXES-NEXT: strncpy_s(dest, 14, src, strlen(src) - 1);
15+ }
16+
You can’t perform that action at this time.
0 commit comments