diff --git a/js/src/ctypes/libffi/src/prep_cif.c b/js/src/ctypes/libffi/src/prep_cif.c --- a/js/src/ctypes/libffi/src/prep_cif.c +++ b/js/src/ctypes/libffi/src/prep_cif.c @@ -83,11 +83,11 @@ arg->alignment = FFI_AGGREGATE_ALIGNMENT; #endif if (arg->size == 0) return FFI_BAD_TYPEDEF; - else + else // readability-else-after-return return FFI_OK; } #ifndef __CRIS__ /* The CRIS ABI specifies structure elements to have byte diff --git a/js/src/jsalloc.cpp b/js/src/jsalloc.cpp --- a/js/src/jsalloc.cpp +++ b/js/src/jsalloc.cpp @@ -2,22 +2,50 @@ * vim: set ts=8 sts=4 et sw=4 tw=99: * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include +#include + #include "jsalloc.h" #include "jscntxt.h" using namespace js; +const char* Test[] = { + "line 1", + "line 2" // misc-suspicious-missing-comma + "line 3", + "line 4", + "line 5" +}; + void* TempAllocPolicy::onOutOfMemory(AllocFunction allocFunc, size_t nbytes, void* reallocPtr) { + for (float x = 0.1f; x <= 1.0f; x += 0.1f) {} // clang-analyzer-security.FloatLoopCounter + + setuid(1); // clang-analyzer-security.insecureAPI.UncheckedReturn + + char buff[1024]; + gets(buff); // security.insecureAPI.gets + + int x = 0; + int y = 0; + if (x < y); // misc-suspicious-semicolon + { + x++; + } + return cx_->onOutOfMemory(allocFunc, nbytes, reallocPtr); } void -TempAllocPolicy::reportAllocOverflow() const +TempAllocPolicy::reportAllocOverflow(void) const // modernize-redundant-void-arg { + int x; + x = 1; // clang-analyzer-deadcode.DeadStores + ReportAllocationOverflow(cx_); } diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -6,10 +6,12 @@ /* * JavaScript API. */ +#include + #include "jsapi.h" #include "mozilla/FloatingPoint.h" #include "mozilla/Maybe.h" #include "mozilla/PodOperations.h" @@ -119,10 +121,15 @@ #define JS_ADDRESSOF_VA_LIST(ap) ((va_list*)(ap)) #else #define JS_ADDRESSOF_VA_LIST(ap) (&(ap)) #endif +class AnnotateConflict { + MOZ_NO_DANGLING_ON_TEMPORARIES int *get() && { return nullptr; } // mozilla-dangling-on-temporary + MOZ_NO_DANGLING_ON_TEMPORARIES int test() { return 0; } // mozilla-dangling-on-temporary +}; + JS_PUBLIC_API(bool) JS::CallArgs::requireAtLeast(JSContext* cx, const char* fnname, unsigned required) const { if (length() < required) { char numArgsStr[40]; @@ -166,12 +173,11 @@ unsigned flags = strict ? JSREPORT_ERROR : (JSREPORT_WARNING | JSREPORT_STRICT); if (code_ == JSMSG_OBJECT_NOT_EXTENSIBLE || code_ == JSMSG_SET_NON_OBJECT_RECEIVER) { RootedValue val(cx, ObjectValue(*obj)); return ReportValueErrorFlags(cx, flags, code_, JSDVG_IGNORE_STACK, val, nullptr, nullptr, nullptr); - } - if (ErrorTakesArguments(code_)) { + } else if (ErrorTakesArguments(code_)) { // readability-misleading-indentation or readability-else-after-return RootedValue idv(cx, IdToValue(id)); RootedString str(cx, ValueToSource(cx, idv)); if (!str) return false; @@ -299,16 +305,22 @@ } JS_PUBLIC_API(Value) JS_GetEmptyStringValue(JSContext* cx) { + std::string str; + str.find("A"); // performance-faster-string-find + return StringValue(cx->runtime()->emptyString); } JS_PUBLIC_API(JSString*) JS_GetEmptyString(JSContext* cx) { + std::map> my_map; + for (const std::pair>& p : my_map) {} // performance-implicit-conversion-in-loop + MOZ_ASSERT(cx->emptyString()); return cx->emptyString(); } namespace js {