The following issues were found
buildscripts/linter/filediff.py
3 issues
Line: 7
Column: 1
from typing import Tuple, List, Dict, Callable
from git import Repo
import structlog
# Get relative imports to work when the package is not installed on the PYTHONPATH.
if __name__ == "__main__" and __package__ is None:
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(os.path.realpath(__file__)))))
Reported by Pylint.
Line: 14
Column: 1
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(os.path.realpath(__file__)))))
# pylint: disable=wrong-import-position
from buildscripts.linter import git
from buildscripts.patch_builds.change_data import generate_revision_map, \
RevisionMap, find_changed_files_in_repos
# pylint: enable=wrong-import-position
Reported by Pylint.
Line: 15
Column: 1
# pylint: disable=wrong-import-position
from buildscripts.linter import git
from buildscripts.patch_builds.change_data import generate_revision_map, \
RevisionMap, find_changed_files_in_repos
# pylint: enable=wrong-import-position
LOGGER = structlog.get_logger(__name__)
Reported by Pylint.
src/third_party/mozjs-60/extract/js/src/util/Text.cpp
3 issues
Line: 39
template const char16_t*
js_strchr_limit(const char16_t* s, char16_t c, const char16_t* limit);
JS_PUBLIC_API(char*)
js_strdup(const char* s)
{
return DuplicateString(s).release();
}
Reported by Cppcheck.
Line: 59
Column: 16
CWE codes:
126
UniqueChars
js::DuplicateString(JSContext* cx, const char* s)
{
size_t n = strlen(s) + 1;
auto ret = cx->make_pod_array<char>(n);
if (!ret)
return ret;
PodCopy(ret.get(), s, n);
return ret;
Reported by FlawFinder.
Line: 81
Column: 16
CWE codes:
126
UniqueChars
js::DuplicateString(const char* s)
{
size_t n = strlen(s) + 1;
UniqueChars ret(js_pod_malloc<char>(n));
if (!ret)
return ret;
PodCopy(ret.get(), s, n);
return ret;
Reported by FlawFinder.
src/third_party/mozjs-60/extract/js/src/vm/GeckoProfiler.cpp
3 issues
Line: 423
entry.setKind(ProfileEntry::Kind::JS_NORMAL);
}
JS_PUBLIC_API(JSScript*)
ProfileEntry::script() const
{
MOZ_ASSERT(isJs());
auto script = reinterpret_cast<JSScript*>(spOrScript.operator void*());
if (!script)
Reported by Cppcheck.
Line: 322
Column: 15
CWE codes:
134
Suggestion:
Use a constant for the format specification
ret = snprintf(cstr.get(), len + 1, "%s (%s:%" PRIu64 ")", atomStr.get(), filename, lineno);
} else {
ret = snprintf(cstr.get(), len + 1, "%s:%" PRIu64, filename, lineno);
}
MOZ_ASSERT(ret == len, "Computed length should match actual length!");
return cstr;
Reported by FlawFinder.
Line: 295
Column: 26
CWE codes:
126
const char* filename = script->filename();
if (filename == nullptr)
filename = "<unknown>";
size_t lenFilename = strlen(filename);
// Get the line number and its length as a string.
uint64_t lineno = script->lineno();
size_t lenLineno = 1;
for (uint64_t i = lineno; i /= 10; lenLineno++);
Reported by FlawFinder.
src/third_party/mozjs-60/extract/js/src/perf/pm_linux.cpp
3 issues
Line: 201
Column: 14
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
{
// This scratch buffer is to ensure that we have read all the
// available data, even if that's more than we expect.
unsigned char buf[1024];
if (!running || group_leader == -1)
return;
ioctl(group_leader, PERF_EVENT_IOC_DISABLE, 0);
Reported by FlawFinder.
Line: 217
Column: 13
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
if (read(fd, buf, sizeof(buf)) == sizeof(uint64_t)) {
uint64_t cur;
memcpy(&cur, buf, sizeof(uint64_t));
counters->*(slot.counter) += cur;
}
// Reset the counter regardless of whether the read did what
// we expected.
Reported by FlawFinder.
Line: 215
Column: 13
CWE codes:
120
20
if (fd == -1)
continue;
if (read(fd, buf, sizeof(buf)) == sizeof(uint64_t)) {
uint64_t cur;
memcpy(&cur, buf, sizeof(uint64_t));
counters->*(slot.counter) += cur;
}
Reported by FlawFinder.
src/third_party/mozjs-60/extract/js/src/jit/x64/Lowering-x64.cpp
3 issues
Line: 220
Column: 18
CWE codes:
362/367!
Suggestion:
Set up the correct permissions (e.g., using setuid()) and try to open the file directly
MDefinition* value = ins->value();
LAllocation valueAlloc;
switch (ins->access().type()) {
case Scalar::Int8:
case Scalar::Uint8:
case Scalar::Int16:
case Scalar::Uint16:
case Scalar::Int32:
Reported by FlawFinder.
Line: 270
Column: 18
CWE codes:
362/367!
Suggestion:
Set up the correct permissions (e.g., using setuid()) and try to open the file directly
MOZ_ASSERT(base->type() == MIRType::Int32);
LAsmJSStoreHeap* lir = nullptr; // initialize to silence GCC warning
switch (ins->access().type()) {
case Scalar::Int8:
case Scalar::Uint8:
case Scalar::Int16:
case Scalar::Uint16:
case Scalar::Int32:
Reported by FlawFinder.
Line: 342
Column: 33
CWE codes:
362/367!
Suggestion:
Set up the correct permissions (e.g., using setuid()) and try to open the file directly
// No support for 64-bit operations with constants at the masm level.
bool canTakeConstant = ins->access().type() != Scalar::Int64;
// Case 1: the result of the operation is not used.
//
// We'll emit a single instruction: LOCK ADD, LOCK SUB, LOCK AND,
// LOCK OR, or LOCK XOR.
Reported by FlawFinder.
src/third_party/mozjs-60/extract/js/src/jit/shared/CodeGenerator-shared.cpp
3 issues
Line: 1835
CWE codes:
758
// We now compute the least p >= 32 with the property above...
int32_t p = 32;
while ((uint64_t(1) << (p-maxLog)) + (UINT64_MAX >> (64-p)) % d + 1 < d)
p++;
// ...and the corresponding M. For either the signed (L=31) or the
// unsigned (L=32) case, this value can be too large (cf. item a).
// Codegen can still multiply by M by multiplying by (M - 2^L) and
Reported by Cppcheck.
Line: 770
Column: 5
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
return false;
}
memcpy(data, writer.buffer(), writer.length());
nativeToBytecodeMap_ = data;
nativeToBytecodeMapSize_ = writer.length();
nativeToBytecodeTableOffset_ = tableOffset;
nativeToBytecodeNumRegions_ = numRegions;
Reported by FlawFinder.
Line: 924
Column: 5
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
if (!data)
return false;
memcpy(data, writer.buffer(), writer.length());
trackedOptimizationsMap_ = data;
trackedOptimizationsMapSize_ = writer.length();
trackedOptimizationsRegionTableOffset_ = regionTableOffset;
trackedOptimizationsTypesTableOffset_ = typesTableOffset;
trackedOptimizationsAttemptsTableOffset_ = attemptsTableOffset;
Reported by FlawFinder.
src/mongo/util/processinfo_openbsd.cpp
3 issues
Line: 89
Column: 5
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
const int idLen,
const std::string& defaultValue,
string* result) {
char value[256] = {0};
size_t len = sizeof(value);
if (sysctl(sysctlID, idLen, &value, &len, NULL, 0) == -1) {
*result = defaultValue;
return errno;
}
Reported by FlawFinder.
Line: 106
Column: 5
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
int ProcessInfo::getVirtualMemorySize() {
kvm_t* kd = NULL;
int cnt = 0;
char err[_POSIX2_LINE_MAX] = {0};
if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, err)) == NULL) {
LOGV2(23343, "Unable to get virt mem size: {err}", "err"_attr = err);
return -1;
}
Reported by FlawFinder.
Line: 122
Column: 5
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
int ProcessInfo::getResidentSize() {
kvm_t* kd = NULL;
int cnt = 0;
char err[_POSIX2_LINE_MAX] = {0};
if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, err)) == NULL) {
LOGV2(23344, "Unable to get res mem size: {err}", "err"_attr = err);
return -1;
}
kinfo_proc* task = kvm_getprocs(kd, KERN_PROC_PID, _pid.toNative(), sizeof(kinfo_proc), &cnt);
Reported by FlawFinder.
src/mongo/util/processinfo_freebsd.cpp
3 issues
Line: 85
Column: 5
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
int getSysctlByNameWithDefault<std::string>(const char* sysctlName,
const std::string& defaultValue,
std::string* result) {
char value[256] = {0};
size_t len = sizeof(value);
if (sysctlbyname(sysctlName, &value, &len, NULL, 0) == -1) {
*result = defaultValue;
return errno;
}
Reported by FlawFinder.
Line: 102
Column: 5
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
int ProcessInfo::getVirtualMemorySize() {
kvm_t* kd = NULL;
int cnt = 0;
char err[_POSIX2_LINE_MAX] = {0};
if ((kd = kvm_open(NULL, "/dev/null", "/dev/null", O_RDONLY, err)) == NULL)
return -1;
kinfo_proc* task = kvm_getprocs(kd, KERN_PROC_PID, _pid.toNative(), &cnt);
int vss = task->ki_size / 1024 / 1024; // convert from bytes to MB
kvm_close(kd);
Reported by FlawFinder.
Line: 114
Column: 5
CWE codes:
119
120
Suggestion:
Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length
int ProcessInfo::getResidentSize() {
kvm_t* kd = NULL;
int cnt = 0;
char err[_POSIX2_LINE_MAX] = {0};
if ((kd = kvm_open(NULL, "/dev/null", "/dev/null", O_RDONLY, err)) == NULL)
return -1;
kinfo_proc* task = kvm_getprocs(kd, KERN_PROC_PID, _pid.toNative(), &cnt);
int rss = task->ki_rssize * sysconf(_SC_PAGESIZE) / 1024 / 1024; // convert from pages to MB
kvm_close(kd);
Reported by FlawFinder.
src/mongo/util/perfctr_collect.cpp
3 issues
Line: 178
Column: 21
CWE codes:
362
PerfCounterCollection builder) {
auto pcc = std::unique_ptr<PerfCounterCollector>(new PerfCounterCollector());
Status s = pcc->open();
if (!s.isOK()) {
return s;
}
for (const auto& kvp : builder._counters) {
Reported by FlawFinder.
Line: 216
Column: 30
CWE codes:
362
/*ignore*/ PdhCloseQuery(_query);
}
Status PerfCounterCollector::open() {
PDH_STATUS status = PdhOpenQueryW(nullptr, NULL, &_query);
if (status != ERROR_SUCCESS) {
return {ErrorCodes::WindowsPdhError, formatFunctionCallError("PdhOpenQueryW", status)};
}
Reported by FlawFinder.
Line: 346
Column: 16
CWE codes:
126
const wchar_t* ptr = buf.get();
while (ptr && *ptr) {
counterNames.emplace_back(toUtf8String(ptr));
ptr += wcslen(ptr) + 1;
}
// Sort to ensure we have a predictable ordering in the final BSON
std::sort(counterNames.begin(), counterNames.end());
Reported by FlawFinder.
src/third_party/mozjs-60/extract/js/src/jit/arm64/vixl/MozSimulator-vixl.cpp
3 issues
Line: 173
Column: 7
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
// FIXME: We should free it at some point.
// FIXME: Note that it can't be stored in the SimulatorRuntime due to lifetime conflicts.
Simulator *sim;
if (getenv("USE_DEBUGGER") != nullptr)
sim = js_new<Debugger>(cx, decoder, stdout);
else
sim = js_new<Simulator>(cx, decoder, stdout);
// Check if Simulator:init ran out of memory.
Reported by FlawFinder.
Line: 376
Column: 7
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
VIXL_ASSERT(entryStack == exitStack);
int64_t result = xreg(0);
if (getenv("USE_DEBUGGER"))
printf("LEAVE\n");
return result;
}
Reported by FlawFinder.
Line: 819
Column: 7
CWE codes:
807
20
Suggestion:
Check environment variables carefully before using them
// Simulate a return.
set_lr(savedLR);
set_pc((Instruction*)savedLR);
if (getenv("USE_DEBUGGER"))
printf("SVCRET\n");
}
} // namespace vixl
Reported by FlawFinder.