[PATCH] D45050: [clang-tidy] New checker for not null-terminated result caused by strlen or wcslen
Csaba Dabis via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 24 02:50:31 PDT 2018
Charusso marked an inline comment as done.
Charusso added inline comments.
================
Comment at: clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp:226
+ DiagnosticBuilder &Diag) {
+ if (getLangOpts().CPlusPlus11) {
+ StringRef NewFuncName = (Name[0] != 'w') ? "strncpy_s" : "wcsncpy_s";
----------------
aaron.ballman wrote:
> Charusso wrote:
> > aaron.ballman wrote:
> > > What about C?
> > The `else` part would fire.
> I think this comment got moved to an unrelated area. I was talking about `NotNullTerminatedResultCheck::memmoveFix()`, where there is no `else` clause. However, I'm also not entirely certain why you are assuming the _s versions of those functions are available in C++ (they're in Annex K for C, which is an optional annex).
The `else` clause is missing, according to the documentation:
> - ``memmove``, ``wmemmove``:
> - C11: New function is ``memmove_s``/``wmemmove_s``, it has four arguments,
> - the new second argument is the first argument's length, and
> - the third argument will be moved as the fourth, where ``+ 1`` needed.
>
> - Before C11: The third argument gets a ``+ 1`` operation.
So the third argument as a token remains third if I add an extra second argument as a string, that's why it's work well on both options.
https://reviews.llvm.org/D45050
More information about the cfe-commits
mailing list