From 214c06b771551d16a3e3bfa0336e646aa9e0be15 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 4 Jun 2021 09:49:33 +0200 Subject: [PATCH 1/7] clang-tidy: fixed clang-analyzer-optin.cplusplus.UninitializedObject --- src/ArduinoJson/Json/Utf16.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ArduinoJson/Json/Utf16.hpp b/src/ArduinoJson/Json/Utf16.hpp index 4e2750f3..00397caf 100644 --- a/src/ArduinoJson/Json/Utf16.hpp +++ b/src/ArduinoJson/Json/Utf16.hpp @@ -31,7 +31,7 @@ inline bool isLowSurrogate(uint16_t codeunit) { class Codepoint { public: - Codepoint() : _highSurrogate(0) {} + Codepoint() : _highSurrogate(0), _codepoint(0) {} bool append(uint16_t codeunit) { if (isHighSurrogate(codeunit)) { From 6b5239b9d51c0c45c727c1d4fa03cdf636606480 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 4 Jun 2021 09:51:40 +0200 Subject: [PATCH 2/7] clang-tidy: removed unused field --- src/ArduinoJson/Json/TextFormatter.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ArduinoJson/Json/TextFormatter.hpp b/src/ArduinoJson/Json/TextFormatter.hpp index 18694f14..7795671f 100644 --- a/src/ArduinoJson/Json/TextFormatter.hpp +++ b/src/ArduinoJson/Json/TextFormatter.hpp @@ -155,7 +155,6 @@ class TextFormatter { protected: CountingDecorator _writer; - size_t _length; private: TextFormatter &operator=(const TextFormatter &); // cannot be assigned From 6b8e93e05e44875348a44c7ff2f8c9e73bf13a81 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 4 Jun 2021 09:56:32 +0200 Subject: [PATCH 3/7] clang-tidy: fixed "uninitialized field" in VariantData --- src/ArduinoJson/Document/JsonDocument.hpp | 8 ++++---- src/ArduinoJson/Variant/VariantData.hpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ArduinoJson/Document/JsonDocument.hpp b/src/ArduinoJson/Document/JsonDocument.hpp index d67d9349..64c76b8f 100644 --- a/src/ArduinoJson/Document/JsonDocument.hpp +++ b/src/ArduinoJson/Document/JsonDocument.hpp @@ -32,7 +32,7 @@ class JsonDocument : public Visitable { void clear() { _pool.clear(); - _data.setNull(); + _data.init(); } template @@ -304,15 +304,15 @@ class JsonDocument : public Visitable { protected: JsonDocument() : _pool(0, 0) { - _data.setNull(); + _data.init(); } JsonDocument(MemoryPool pool) : _pool(pool) { - _data.setNull(); + _data.init(); } JsonDocument(char* buf, size_t capa) : _pool(buf, capa) { - _data.setNull(); + _data.init(); } ~JsonDocument() {} diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index 82ae745d..5631147f 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -33,7 +33,7 @@ class VariantData { // - no virtual // - no inheritance void init() { - _flags = 0; + _flags = VALUE_IS_NULL; } template From 9dbf44388d01a4df3152cb692273de90dd694ea5 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 4 Jun 2021 10:48:41 +0200 Subject: [PATCH 4/7] clang-tidy: muted "call to function is insecure" in tests --- extras/tests/.clang-tidy | 1 + 1 file changed, 1 insertion(+) create mode 100644 extras/tests/.clang-tidy diff --git a/extras/tests/.clang-tidy b/extras/tests/.clang-tidy new file mode 100644 index 00000000..579ae587 --- /dev/null +++ b/extras/tests/.clang-tidy @@ -0,0 +1 @@ +Checks: '-clang-analyzer-security.insecureAPI.*' From a24edac5a952333aa34d7e057325798ea1571ca3 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 4 Jun 2021 11:00:09 +0200 Subject: [PATCH 5/7] clang-tidy: muted "use of memory after it is freed" in MemoryPool --- src/ArduinoJson/Memory/MemoryPool.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ArduinoJson/Memory/MemoryPool.hpp b/src/ArduinoJson/Memory/MemoryPool.hpp index 49debf85..c8262186 100644 --- a/src/ArduinoJson/Memory/MemoryPool.hpp +++ b/src/ArduinoJson/Memory/MemoryPool.hpp @@ -37,7 +37,8 @@ class MemoryPool { } void* buffer() { - return _begin; + return _begin; // NOLINT(clang-analyzer-unix.Malloc) + // movePointers() alters this pointer } // Gets the capacity of the memoryPool in bytes From c4a4ed52729b732b40526a14bc4e2fcfbf674fb3 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 4 Jun 2021 11:22:00 +0200 Subject: [PATCH 6/7] clang-tidy: muted "uninitialized field" in Latch --- src/ArduinoJson/Json/Latch.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ArduinoJson/Json/Latch.hpp b/src/ArduinoJson/Json/Latch.hpp index aef1fe36..70866d6b 100644 --- a/src/ArduinoJson/Json/Latch.hpp +++ b/src/ArduinoJson/Json/Latch.hpp @@ -45,7 +45,8 @@ class Latch { } TReader _reader; - char _current; + char _current; // NOLINT(clang-analyzer-optin.cplusplus.UninitializedObject) + // Not initialized in constructor (+10 bytes on AVR) bool _loaded; #if ARDUINOJSON_DEBUG bool _ended; From de11b36a98f9056af60d22f45c4bef984a99ea15 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 4 Jun 2021 11:32:36 +0200 Subject: [PATCH 7/7] clang-tidy: muted "uninitialized pointer/field" in StringCopier --- src/ArduinoJson/StringStorage/StringCopier.hpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ArduinoJson/StringStorage/StringCopier.hpp b/src/ArduinoJson/StringStorage/StringCopier.hpp index 8b1104b4..80670aad 100644 --- a/src/ArduinoJson/StringStorage/StringCopier.hpp +++ b/src/ArduinoJson/StringStorage/StringCopier.hpp @@ -55,8 +55,12 @@ class StringCopier { private: MemoryPool* _pool; + + // These fields aren't initialized by the constructor but startString() + // + // NOLINTNEXTLINE(clang-analyzer-optin.cplusplus.UninitializedObject) char* _ptr; - size_t _size; - size_t _capacity; + // NOLINTNEXTLINE(clang-analyzer-optin.cplusplus.UninitializedObject) + size_t _size, _capacity; }; } // namespace ARDUINOJSON_NAMESPACE