Author: baloghadamsoftware Date: Thu Nov 23 04:26:28 2017 New Revision: 318906
URL: http://llvm.org/viewvc/llvm-project?rev=318906&view=rev Log: [clang-tidy] Misplaced Operator in Strlen in Alloc A possible error is to write `malloc(strlen(s+1))` instead of `malloc(strlen(s)+1)`. Unfortunately the former is also valid syntactically, but allocates less memory by two bytes (if s` is at least one character long, undefined behavior otherwise) which may result in overflow cases. This check detects such cases and also suggests the fix for them. Modified: clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt clang-tools-extra/trunk/docs/ReleaseNotes.rst clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Modified: clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp?rev=318906&r1=318905&r2=318906&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp Thu Nov 23 04:26:28 2017 @@ -12,6 +12,7 @@ #include "../ClangTidyModuleRegistry.h" #include "CopyConstructorInitCheck.h" #include "IntegerDivisionCheck.h" +#include "MisplacedOperatorInStrlenInAllocCheck.h" #include "SuspiciousMemsetUsageCheck.h" #include "UndefinedMemoryManipulationCheck.h" @@ -26,6 +27,8 @@ public: "bugprone-copy-constructor-init"); CheckFactories.registerCheck<IntegerDivisionCheck>( "bugprone-integer-division"); + CheckFactories.registerCheck<MisplacedOperatorInStrlenInAllocCheck>( + "bugprone-misplaced-operator-in-strlen-in-alloc"); CheckFactories.registerCheck<SuspiciousMemsetUsageCheck>( "bugprone-suspicious-memset-usage"); CheckFactories.registerCheck<UndefinedMemoryManipulationCheck>( Modified: clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt?rev=318906&r1=318905&r2=318906&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt Thu Nov 23 04:26:28 2017 @@ -4,6 +4,7 @@ add_clang_library(clangTidyBugproneModul BugproneTidyModule.cpp CopyConstructorInitCheck.cpp IntegerDivisionCheck.cpp + MisplacedOperatorInStrlenInAllocCheck.cpp SuspiciousMemsetUsageCheck.cpp UndefinedMemoryManipulationCheck.cpp Modified: clang-tools-extra/trunk/docs/ReleaseNotes.rst URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/ReleaseNotes.rst?rev=318906&r1=318905&r2=318906&view=diff ============================================================================== --- clang-tools-extra/trunk/docs/ReleaseNotes.rst (original) +++ clang-tools-extra/trunk/docs/ReleaseNotes.rst Thu Nov 23 04:26:28 2017 @@ -85,6 +85,15 @@ Improvements to clang-tidy not intended to be subclassed. Includes a list of classes from Foundation and UIKit which are documented as not supporting subclassing. +- New `bugprone-misplaced-operator-in-strlen-in-alloc + <http://clang.llvm.org/extra/clang-tidy/checks/bugprone-misplaced-operator-in-strlen-in-alloc.html>`_ check + + Finds cases where ``1`` is added to the string in the argument to + ``strlen()``, ``strnlen()``, ``strnlen_s()``, ``wcslen()``, ``wcsnlen()``, and + ``wcsnlen_s()`` instead of the result and the value is used as an argument to + a memory allocation function (``malloc()``, ``calloc()``, ``realloc()``, + ``alloca()``). + - Renamed checks to use correct term "implicit conversion" instead of "implicit cast" and modified messages and option names accordingly: Modified: clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=318906&r1=318905&r2=318906&view=diff ============================================================================== --- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (original) +++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Thu Nov 23 04:26:28 2017 @@ -19,6 +19,7 @@ Clang-Tidy Checks boost-use-to-string bugprone-copy-constructor-init bugprone-integer-division + bugprone-misplaced-operator-in-strlen-in-alloc bugprone-suspicious-memset-usage bugprone-undefined-memory-manipulation cert-dcl03-c (redirects to misc-static-assert) <cert-dcl03-c> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits