The following issues were found
src/third_party/wiredtiger/test/suite/test_lsm01.py
11 issues
Line: 29
Column: 1
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
import wiredtiger, wtscenario, wttest
from wtdataset import SimpleDataSet
# test_lsm01.py
# Test LSM tree configuration options.
class test_lsm01(wttest.WiredTigerTestCase):
Reported by Pylint.
Line: 29
Column: 1
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
import wiredtiger, wtscenario, wttest
from wtdataset import SimpleDataSet
# test_lsm01.py
# Test LSM tree configuration options.
class test_lsm01(wttest.WiredTigerTestCase):
Reported by Pylint.
Line: 82
Column: 3
'Test LSM with config: ' + args + ' count: ' + str(self.nrecs))
SimpleDataSet(self, self.uri, self.nrecs, config=args).populate()
# TODO: Adding an explicit drop here can cause deadlocks, if a merge
# is still happening. See issue #349.
# self.session.drop(self.uri)
if __name__ == '__main__':
wttest.run()
Reported by Pylint.
Line: 1
Column: 1
#!/usr/bin/env python
#
# Public Domain 2014-present MongoDB, Inc.
# Public Domain 2008-2014 WiredTiger, Inc.
#
# This is free and unencumbered software released into the public domain.
#
# Anyone is free to copy, modify, publish, use, compile, sell, or
# distribute this software, either in source code form or as a compiled
Reported by Pylint.
Line: 29
Column: 1
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
import wiredtiger, wtscenario, wttest
from wtdataset import SimpleDataSet
# test_lsm01.py
# Test LSM tree configuration options.
class test_lsm01(wttest.WiredTigerTestCase):
Reported by Pylint.
Line: 34
Column: 1
# test_lsm01.py
# Test LSM tree configuration options.
class test_lsm01(wttest.WiredTigerTestCase):
K = 1024
M = 1024 * K
G = 1024 * M
uri = "lsm:test_lsm01"
Reported by Pylint.
Line: 34
Column: 1
# test_lsm01.py
# Test LSM tree configuration options.
class test_lsm01(wttest.WiredTigerTestCase):
K = 1024
M = 1024 * K
G = 1024 * M
uri = "lsm:test_lsm01"
Reported by Pylint.
Line: 63
Column: 5
prune=100, prunelong=500)
# Test drop of an object.
def test_lsm(self):
args = 'key_format=S'
args += ',lsm=(' # Start the LSM configuration options.
# add names to args, e.g. args += ',session_max=30'
for var in self.config_vars:
value = getattr(self, 's_' + var)
Reported by Pylint.
Line: 69
Column: 16
# add names to args, e.g. args += ',session_max=30'
for var in self.config_vars:
value = getattr(self, 's_' + var)
if value != None:
if var == 'verbose':
value = '[' + str(value) + ']'
if value == True:
value = 'true'
if value == False:
Reported by Pylint.
Line: 72
Column: 20
if value != None:
if var == 'verbose':
value = '[' + str(value) + ']'
if value == True:
value = 'true'
if value == False:
value = 'false'
args += ',' + var + '=' + str(value)
args += ')' # Close the LSM configuration option group
Reported by Pylint.
src/third_party/boost/boost/interprocess/detail/char_wchar_holder.hpp
11 issues
Line: 44
Column: 12
CWE codes:
120
Suggestion:
Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused)
: m_str(), m_is_wide()
{
m_str.n = new char [std::strlen(nstr)+1];
std::strcpy(m_str.n, nstr);
}
char_wchar_holder(const wchar_t *wstr)
: m_str(), m_is_wide(true)
{
Reported by FlawFinder.
Line: 51
Column: 12
CWE codes:
120
Suggestion:
Consider using a function version that stops copying at the end of the buffer
: m_str(), m_is_wide(true)
{
m_str.w = new wchar_t [std::wcslen(wstr)+1];
std::wcscpy(m_str.w, wstr);
}
char_wchar_holder& operator=(const char *nstr)
{
char *tmp = new char [std::strlen(nstr)+1];
Reported by FlawFinder.
Line: 59
Column: 12
CWE codes:
120
Suggestion:
Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused)
char *tmp = new char [std::strlen(nstr)+1];
this->delete_mem();
m_str.n = tmp;
std::strcpy(m_str.n, nstr);
return *this;
}
char_wchar_holder& operator=(const wchar_t *wstr)
{
Reported by FlawFinder.
Line: 68
Column: 12
CWE codes:
120
Suggestion:
Consider using a function version that stops copying at the end of the buffer
wchar_t *tmp = new wchar_t [std::wcslen(wstr)+1];
this->delete_mem();
m_str.w = tmp;
std::wcscpy(m_str.w, wstr);
return *this;
}
char_wchar_holder& operator=(const char_wchar_holder &other)
{
Reported by FlawFinder.
Line: 95
Column: 12
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
void swap(char_wchar_holder& other)
{
char_wchar tmp;
std::memcpy(&tmp, &m_str, sizeof(char_wchar));
std::memcpy(&m_str, &other.m_str, sizeof(char_wchar));
std::memcpy(&other.m_str, &tmp, sizeof(char_wchar));
//
bool b_tmp(m_is_wide);
m_is_wide = other.m_is_wide;
Reported by FlawFinder.
Line: 96
Column: 12
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
{
char_wchar tmp;
std::memcpy(&tmp, &m_str, sizeof(char_wchar));
std::memcpy(&m_str, &other.m_str, sizeof(char_wchar));
std::memcpy(&other.m_str, &tmp, sizeof(char_wchar));
//
bool b_tmp(m_is_wide);
m_is_wide = other.m_is_wide;
other.m_is_wide = b_tmp;
Reported by FlawFinder.
Line: 97
Column: 12
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
char_wchar tmp;
std::memcpy(&tmp, &m_str, sizeof(char_wchar));
std::memcpy(&m_str, &other.m_str, sizeof(char_wchar));
std::memcpy(&other.m_str, &tmp, sizeof(char_wchar));
//
bool b_tmp(m_is_wide);
m_is_wide = other.m_is_wide;
other.m_is_wide = b_tmp;
}
Reported by FlawFinder.
Line: 43
Column: 32
CWE codes:
126
char_wchar_holder(const char *nstr)
: m_str(), m_is_wide()
{
m_str.n = new char [std::strlen(nstr)+1];
std::strcpy(m_str.n, nstr);
}
char_wchar_holder(const wchar_t *wstr)
: m_str(), m_is_wide(true)
Reported by FlawFinder.
Line: 50
Column: 35
CWE codes:
126
char_wchar_holder(const wchar_t *wstr)
: m_str(), m_is_wide(true)
{
m_str.w = new wchar_t [std::wcslen(wstr)+1];
std::wcscpy(m_str.w, wstr);
}
char_wchar_holder& operator=(const char *nstr)
{
Reported by FlawFinder.
Line: 56
Column: 34
CWE codes:
126
char_wchar_holder& operator=(const char *nstr)
{
char *tmp = new char [std::strlen(nstr)+1];
this->delete_mem();
m_str.n = tmp;
std::strcpy(m_str.n, nstr);
return *this;
}
Reported by FlawFinder.
src/third_party/boost/libs/container/src/dlmalloc_2_8_6.c
11 issues
Line: 4795
CWE codes:
628
(req / n_elements != elem_size))
req = MAX_SIZE_T; /* force downstream failure on overflow */
}
mem = dlmalloc(req);
if (mem != 0 && calloc_must_clear(mem2chunk(mem)))
memset(mem, 0, req);
return mem;
}
Reported by Cppcheck.
Line: 4906
CWE codes:
401
if (mem != 0) {
mchunkptr p = mem2chunk(mem);
if (PREACTION(m))
return 0;
if ((((size_t)(mem)) & (alignment - 1)) != 0) { /* misaligned */
/*
Find an aligned spot inside chunk. Since we need to give
back leading space in a chunk of at least MIN_CHUNK_SIZE, if
the first calculation places us at a spot with less than
Reported by Cppcheck.
Line: 5027
CWE codes:
401
if (mem == 0)
return 0;
if (PREACTION(m)) return 0;
p = mem2chunk(mem);
remainder_size = chunksize(p);
assert(!is_mmapped(p));
Reported by Cppcheck.
Line: 1992
Column: 7
CWE codes:
Suggestion:
Use InitializeCriticalSectionAndSpinCount instead
/* transition to < 0 while initializing, then to > 0) */
if (stat == 0 &&
interlockedcompareexchange(&malloc_global_mutex_status, (LONG)-1, (LONG)0) == 0) {
InitializeCriticalSection(&malloc_global_mutex);
interlockedexchange(&malloc_global_mutex_status, (LONG)1);
return;
}
SleepEx(0, FALSE);
}
Reported by FlawFinder.
Line: 1655
Column: 27
CWE codes:
362
#define MMAP_FLAGS (MAP_PRIVATE)
static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */
#define MMAP_DEFAULT(s) ((dev_zero_fd < 0) ? \
(dev_zero_fd = open("/dev/zero", O_RDWR), \
mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \
mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0))
#endif /* MAP_ANONYMOUS */
#define DIRECT_MMAP_DEFAULT(s) MMAP_DEFAULT(s)
Reported by FlawFinder.
Line: 3159
Column: 16
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
{
#if USE_DEV_RANDOM
int fd;
unsigned char buf[sizeof(size_t)];
/* Try to use /dev/urandom, else fall back on using time */
if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 &&
read(fd, buf, sizeof(buf)) == sizeof(buf)) {
magic = *((size_t *) buf);
close(fd);
Reported by FlawFinder.
Line: 3161
Column: 17
CWE codes:
362
int fd;
unsigned char buf[sizeof(size_t)];
/* Try to use /dev/urandom, else fall back on using time */
if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 &&
read(fd, buf, sizeof(buf)) == sizeof(buf)) {
magic = *((size_t *) buf);
close(fd);
}
else
Reported by FlawFinder.
Line: 5216
Column: 11
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
mem = internal_malloc(m, bytes);
if (mem != 0) {
size_t oc = chunksize(oldp) - overhead_for(oldp);
memcpy(mem, oldmem, (oc < bytes)? oc : bytes);
internal_free(m, oldmem);
}
}
}
}
Reported by FlawFinder.
Line: 5766
Column: 11
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
mem = mspace_malloc(m, bytes);
if (mem != 0) {
size_t oc = chunksize(oldp) - overhead_for(oldp);
memcpy(mem, oldmem, (oc < bytes)? oc : bytes);
mspace_free(m, oldmem);
}
}
}
}
Reported by FlawFinder.
Line: 819
Column: 32
CWE codes:
676
Suggestion:
Use posix_memalign instead (defined in POSIX's 1003.1d). Don't switch to valloc(); it is marked as obsolete in BSD 4.3, as legacy in SUSv2, and is no longer defined in SUSv3. In some cases, malloc()'s alignment may be sufficient
#define dlcalloc calloc
#define dlfree free
#define dlmalloc malloc
#define dlmemalign memalign
#define dlposix_memalign posix_memalign
#define dlrealloc realloc
#define dlrealloc_in_place realloc_in_place
#define dlvalloc valloc
#define dlpvalloc pvalloc
Reported by FlawFinder.
src/third_party/wiredtiger/test/suite/test_bug013.py
11 issues
Line: 29
Column: 1
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
import wiredtiger, wttest
# test_bug013.py
# Test data consistency in LSM with updates. Ensure that overwrite
# cursors see all entries in the tree (i.e: they open cursors on all
# chunks in the LSM tree).
Reported by Pylint.
Line: 46
Column: 25
# Test by iterating.
cursor = self.session.open_cursor(self.uri, None, None)
i = 0
for i1, i2, i3, v1 in cursor:
self.assertEqual( keys[i], [i1, i2, i3])
i += 1
cursor.close()
self.assertEqual(i, len(keys))
Reported by Pylint.
Line: 1
Column: 1
#!/usr/bin/env python
#
# Public Domain 2014-present MongoDB, Inc.
# Public Domain 2008-2014 WiredTiger, Inc.
#
# This is free and unencumbered software released into the public domain.
#
# Anyone is free to copy, modify, publish, use, compile, sell, or
# distribute this software, either in source code form or as a compiled
Reported by Pylint.
Line: 29
Column: 1
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
import wiredtiger, wttest
# test_bug013.py
# Test data consistency in LSM with updates. Ensure that overwrite
# cursors see all entries in the tree (i.e: they open cursors on all
# chunks in the LSM tree).
Reported by Pylint.
Line: 36
Column: 1
# cursors see all entries in the tree (i.e: they open cursors on all
# chunks in the LSM tree).
# See JIRA BF-829
class test_bug013(wttest.WiredTigerTestCase):
"""
Test LSM data consistency.
"""
uri = 'table:test_bug013'
Reported by Pylint.
Line: 42
Column: 5
"""
uri = 'table:test_bug013'
def check_entries(self, keys):
# Test by iterating.
cursor = self.session.open_cursor(self.uri, None, None)
i = 0
for i1, i2, i3, v1 in cursor:
self.assertEqual( keys[i], [i1, i2, i3])
Reported by Pylint.
Line: 46
Column: 17
# Test by iterating.
cursor = self.session.open_cursor(self.uri, None, None)
i = 0
for i1, i2, i3, v1 in cursor:
self.assertEqual( keys[i], [i1, i2, i3])
i += 1
cursor.close()
self.assertEqual(i, len(keys))
Reported by Pylint.
Line: 46
Column: 21
# Test by iterating.
cursor = self.session.open_cursor(self.uri, None, None)
i = 0
for i1, i2, i3, v1 in cursor:
self.assertEqual( keys[i], [i1, i2, i3])
i += 1
cursor.close()
self.assertEqual(i, len(keys))
Reported by Pylint.
Line: 46
Column: 25
# Test by iterating.
cursor = self.session.open_cursor(self.uri, None, None)
i = 0
for i1, i2, i3, v1 in cursor:
self.assertEqual( keys[i], [i1, i2, i3])
i += 1
cursor.close()
self.assertEqual(i, len(keys))
Reported by Pylint.
Line: 46
Column: 13
# Test by iterating.
cursor = self.session.open_cursor(self.uri, None, None)
i = 0
for i1, i2, i3, v1 in cursor:
self.assertEqual( keys[i], [i1, i2, i3])
i += 1
cursor.close()
self.assertEqual(i, len(keys))
Reported by Pylint.
src/third_party/boost/boost/container/detail/iterators.hpp
11 issues
Line: 700
Column: 17
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
template<class T>
struct has_iterator_category
{
struct two { char _[2]; };
template <typename X>
static char test(int, typename X::iterator_category*);
template <typename X>
Reported by FlawFinder.
Line: 80
Column: 15
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
}
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const constant_iterator& i, const constant_iterator& i2)
{ return i.equal(i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const constant_iterator& i, const constant_iterator& i2)
{ return !(i == i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const constant_iterator& i, const constant_iterator& i2)
Reported by FlawFinder.
Line: 139
Column: 37
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
BOOST_CONTAINER_FORCEINLINE void decrement()
{ ++m_num; }
BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const
{ return m_num == other.m_num; }
BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const
{ return other.m_num < m_num; }
Reported by FlawFinder.
Line: 191
Column: 15
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
}
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
{ return i.equal(i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
{ return !(i == i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
Reported by FlawFinder.
Line: 247
Column: 37
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
BOOST_CONTAINER_FORCEINLINE void decrement()
{ ++m_num; }
BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const
{ return m_num == other.m_num; }
BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const
{ return other.m_num < m_num; }
Reported by FlawFinder.
Line: 302
Column: 15
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
}
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
{ return i.equal(i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
{ return !(i == i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
Reported by FlawFinder.
Line: 358
Column: 37
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
BOOST_CONTAINER_FORCEINLINE void decrement()
{ ++m_num; }
BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const
{ return m_num == other.m_num; }
BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const
{ return other.m_num < m_num; }
Reported by FlawFinder.
Line: 413
Column: 15
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
}
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const this_type& i, const this_type& i2)
{ return i.equal(i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const this_type& i, const this_type& i2)
{ return !(i == i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const this_type& i, const this_type& i2)
Reported by FlawFinder.
Line: 472
Column: 37
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
BOOST_CONTAINER_FORCEINLINE void decrement()
{ ++m_num; }
BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const
{ return m_num == other.m_num; }
BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const
{ return other.m_num < m_num; }
Reported by FlawFinder.
Line: 524
Column: 15
CWE codes:
126
Suggestion:
This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it
}
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const this_type& i, const this_type& i2)
{ return i.equal(i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const this_type& i, const this_type& i2)
{ return !(i == i2); }
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const this_type& i, const this_type& i2)
Reported by FlawFinder.
src/mongo/bson/bson_validate.cpp
11 issues
Line: 102
Column: 43
CWE codes:
120
20
// Read the length as signed integer, to ensure we limit it to < 2GB.
// All other lengths are read as unsigned, which makes for easier bounds checking.
Cursor cursor = {_data, _data + _maxLength};
int32_t len = cursor.template read<int32_t>();
uassert(InvalidBSON, "BSON data has to be at least 5 bytes", len >= 5);
uassert(InvalidBSON, "Incorrect BSON length", static_cast<size_t>(len) <= _maxLength);
const char* end = _currFrame->end = _data + len;
uassert(InvalidBSON, "BSON object not terminated with EOO", end[-1] == 0);
_validateIterative(Cursor{cursor.ptr, end});
Reported by FlawFinder.
Line: 140
Column: 39
CWE codes:
120
20
const T read() {
auto val = ptr;
skip(sizeof(T));
return ConstDataView(val).read<LittleEndian<T>>();
}
void skipString() {
auto len = read<uint32_t>();
skip(len);
Reported by FlawFinder.
Line: 144
Column: 24
CWE codes:
120
20
}
void skipString() {
auto len = read<uint32_t>();
skip(len);
uassert(InvalidBSON, "Not null terminated string", !ptr[-1] && len > 0);
}
size_t strlen() const {
Reported by FlawFinder.
Line: 149
Column: 16
CWE codes:
126
uassert(InvalidBSON, "Not null terminated string", !ptr[-1] && len > 0);
}
size_t strlen() const {
// This is actually by far the hottest code in all of BSON validation.
dassert(ptr < end);
size_t len = 0;
while (ptr[len])
++len;
Reported by FlawFinder.
Line: 168
Column: 36
CWE codes:
120
20
++_currFrame != _frames.end());
auto obj = cursor.ptr;
auto len = cursor.template read<int32_t>();
uassert(ErrorCodes::InvalidBSON, "Nested BSON object has to be at least 5 bytes", len >= 5);
_currFrame->end = obj + len;
if constexpr (precise) {
auto nameLen = obj - _currElem;
Reported by FlawFinder.
Line: 190
Column: 45
CWE codes:
120
20
static const char* _validateSpecial(Cursor cursor, uint8_t type) {
switch (type) {
case BSONType::BinData:
cursor.skip(cursor.template read<uint32_t>()); // Like String, but...
cursor.skip(1); // ...add extra skip for the subtype byte to avoid overflow.
break;
case BSONType::Bool:
if (auto value = cursor.template read<uint8_t>()) // If not 0, must be 1.
uassert(InvalidBSON, "BSON bool is neither false nor true", value == 1);
Reported by FlawFinder.
Line: 194
Column: 50
CWE codes:
120
20
cursor.skip(1); // ...add extra skip for the subtype byte to avoid overflow.
break;
case BSONType::Bool:
if (auto value = cursor.template read<uint8_t>()) // If not 0, must be 1.
uassert(InvalidBSON, "BSON bool is neither false nor true", value == 1);
break;
case BSONType::RegEx:
cursor.skip(0); // Force validation of the ptr after skipping past the field name.
cursor.skip(cursor.strlen() + 1); // Skip regular expression cstring.
Reported by FlawFinder.
Line: 199
Column: 36
CWE codes:
126
break;
case BSONType::RegEx:
cursor.skip(0); // Force validation of the ptr after skipping past the field name.
cursor.skip(cursor.strlen() + 1); // Skip regular expression cstring.
cursor.skip(cursor.strlen() + 1); // Skip options cstring.
break;
case BSONType::DBRef:
cursor.skipString(); // Like String, but...
cursor.skip(12); // ...also skip the 12-byte ObjectId.
Reported by FlawFinder.
Line: 200
Column: 36
CWE codes:
126
case BSONType::RegEx:
cursor.skip(0); // Force validation of the ptr after skipping past the field name.
cursor.skip(cursor.strlen() + 1); // Skip regular expression cstring.
cursor.skip(cursor.strlen() + 1); // Skip options cstring.
break;
case BSONType::DBRef:
cursor.skipString(); // Like String, but...
cursor.skip(12); // ...also skip the 12-byte ObjectId.
break;
Reported by FlawFinder.
src/third_party/wiredtiger/test/3rdparty/testtools-0.9.34/testtools/matchers/_exception.py
11 issues
Line: 17
Column: 1
isbaseexception,
istext,
)
from ._basic import MatchesRegex
from ._higherorder import AfterPreproccessing
from ._impl import (
Matcher,
Mismatch,
)
Reported by Pylint.
Line: 18
Column: 1
istext,
)
from ._basic import MatchesRegex
from ._higherorder import AfterPreproccessing
from ._impl import (
Matcher,
Mismatch,
)
Reported by Pylint.
Line: 19
Column: 1
)
from ._basic import MatchesRegex
from ._higherorder import AfterPreproccessing
from ._impl import (
Matcher,
Mismatch,
)
Reported by Pylint.
Line: 96
Column: 9
return Mismatch('%r returned %r' % (matchee, result))
# Catch all exceptions: Raises() should be able to match a
# KeyboardInterrupt or SystemExit.
except:
exc_info = sys.exc_info()
if self.exception_matcher:
mismatch = self.exception_matcher.match(exc_info)
if not mismatch:
del exc_info
Reported by Pylint.
Line: 1
Column: 1
# Copyright (c) 2009-2012 testtools developers. See LICENSE for details.
__all__ = [
'MatchesException',
'Raises',
'raises',
]
import sys
Reported by Pylint.
Line: 48
Column: 74
value_re = AfterPreproccessing(str, MatchesRegex(value_re), False)
self.value_re = value_re
expected_type = type(self.expected)
self._is_instance = not any(issubclass(expected_type, class_type)
for class_type in classtypes() + (tuple,))
def match(self, other):
if type(other) != tuple:
return Mismatch('%r is not an exc_info tuple' % other)
Reported by Pylint.
Line: 51
Column: 5
self._is_instance = not any(issubclass(expected_type, class_type)
for class_type in classtypes() + (tuple,))
def match(self, other):
if type(other) != tuple:
return Mismatch('%r is not an exc_info tuple' % other)
expected_class = self.expected
if self._is_instance:
expected_class = expected_class.__class__
Reported by Pylint.
Line: 51
Column: 5
self._is_instance = not any(issubclass(expected_type, class_type)
for class_type in classtypes() + (tuple,))
def match(self, other):
if type(other) != tuple:
return Mismatch('%r is not an exc_info tuple' % other)
expected_class = self.expected
if self._is_instance:
expected_class = expected_class.__class__
Reported by Pylint.
Line: 52
Column: 12
for class_type in classtypes() + (tuple,))
def match(self, other):
if type(other) != tuple:
return Mismatch('%r is not an exc_info tuple' % other)
expected_class = self.expected
if self._is_instance:
expected_class = expected_class.__class__
if not issubclass(other[0], expected_class):
Reported by Pylint.
Line: 90
Column: 5
"""
self.exception_matcher = exception_matcher
def match(self, matchee):
try:
result = matchee()
return Mismatch('%r returned %r' % (matchee, result))
# Catch all exceptions: Raises() should be able to match a
# KeyboardInterrupt or SystemExit.
Reported by Pylint.
src/third_party/boost/boost/asio/basic_socket.hpp
11 issues
Line: 151
Column: 25
CWE codes:
362
: impl_(0, ex)
{
boost::system::error_code ec;
impl_.get_service().open(impl_.get_implementation(), protocol, ec);
boost::asio::detail::throw_error(ec, "open");
}
/// Construct and open a basic_socket.
/**
Reported by FlawFinder.
Line: 176
Column: 25
CWE codes:
362
: impl_(0, 0, context)
{
boost::system::error_code ec;
impl_.get_service().open(impl_.get_implementation(), protocol, ec);
boost::asio::detail::throw_error(ec, "open");
}
/// Construct a basic_socket, opening it and binding it to the given local
/// endpoint.
Reported by FlawFinder.
Line: 200
Column: 25
CWE codes:
362
{
boost::system::error_code ec;
const protocol_type protocol = endpoint.protocol();
impl_.get_service().open(impl_.get_implementation(), protocol, ec);
boost::asio::detail::throw_error(ec, "open");
impl_.get_service().bind(impl_.get_implementation(), endpoint, ec);
boost::asio::detail::throw_error(ec, "bind");
}
Reported by FlawFinder.
Line: 231
Column: 25
CWE codes:
362
{
boost::system::error_code ec;
const protocol_type protocol = endpoint.protocol();
impl_.get_service().open(impl_.get_implementation(), protocol, ec);
boost::asio::detail::throw_error(ec, "open");
impl_.get_service().bind(impl_.get_implementation(), endpoint, ec);
boost::asio::detail::throw_error(ec, "bind");
}
Reported by FlawFinder.
Line: 417
Column: 8
CWE codes:
362
* socket.open(boost::asio::ip::tcp::v4());
* @endcode
*/
void open(const protocol_type& protocol = protocol_type())
{
boost::system::error_code ec;
impl_.get_service().open(impl_.get_implementation(), protocol, ec);
boost::asio::detail::throw_error(ec, "open");
}
Reported by FlawFinder.
Line: 420
Column: 25
CWE codes:
362
void open(const protocol_type& protocol = protocol_type())
{
boost::system::error_code ec;
impl_.get_service().open(impl_.get_implementation(), protocol, ec);
boost::asio::detail::throw_error(ec, "open");
}
/// Open the socket using the specified protocol.
/**
Reported by FlawFinder.
Line: 443
Column: 27
CWE codes:
362
* }
* @endcode
*/
BOOST_ASIO_SYNC_OP_VOID open(const protocol_type& protocol,
boost::system::error_code& ec)
{
impl_.get_service().open(impl_.get_implementation(), protocol, ec);
BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
Reported by FlawFinder.
Line: 446
Column: 25
CWE codes:
362
BOOST_ASIO_SYNC_OP_VOID open(const protocol_type& protocol,
boost::system::error_code& ec)
{
impl_.get_service().open(impl_.get_implementation(), protocol, ec);
BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
/// Assign an existing native socket to the socket.
/*
Reported by FlawFinder.
Line: 850
Column: 27
CWE codes:
362
boost::system::error_code ec;
if (!is_open())
{
impl_.get_service().open(impl_.get_implementation(),
peer_endpoint.protocol(), ec);
boost::asio::detail::throw_error(ec, "connect");
}
impl_.get_service().connect(impl_.get_implementation(), peer_endpoint, ec);
boost::asio::detail::throw_error(ec, "connect");
Reported by FlawFinder.
Line: 891
Column: 27
CWE codes:
362
{
if (!is_open())
{
impl_.get_service().open(impl_.get_implementation(),
peer_endpoint.protocol(), ec);
if (ec)
{
BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
Reported by FlawFinder.
src/third_party/mozjs-60/extract/js/src/builtin/DataViewObject.cpp
11 issues
Line: 982
setPrivate(newData);
}
JS_FRIEND_API(bool)
JS_IsDataViewObject(JSObject* obj)
{
obj = CheckedUnwrap(obj);
return obj ? obj->is<DataViewObject>() : false;
}
Reported by Cppcheck.
Line: 343
Column: 5
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
static inline void
Memcpy(uint8_t* dest, uint8_t* src, size_t nbytes)
{
memcpy(dest, src, nbytes);
}
static inline void
Memcpy(uint8_t* dest, SharedMem<uint8_t*> src, size_t nbytes)
{
Reported by FlawFinder.
Line: 385
Column: 17
CWE codes:
120
20
template<typename NativeType>
/* static */ bool
DataViewObject::read(JSContext* cx, Handle<DataViewObject*> obj, const CallArgs& args,
NativeType* val)
{
// Steps 1-2. done by the caller
// Step 3. unnecessary assert
Reported by FlawFinder.
Line: 513
Column: 10
CWE codes:
120
20
Rooted<DataViewObject*> thisView(cx, &args.thisv().toObject().as<DataViewObject>());
int8_t val;
if (!read(cx, thisView, args, &val))
return false;
args.rval().setInt32(val);
return true;
}
Reported by FlawFinder.
Line: 534
Column: 10
CWE codes:
120
20
Rooted<DataViewObject*> thisView(cx, &args.thisv().toObject().as<DataViewObject>());
uint8_t val;
if (!read(cx, thisView, args, &val))
return false;
args.rval().setInt32(val);
return true;
}
Reported by FlawFinder.
Line: 555
Column: 10
CWE codes:
120
20
Rooted<DataViewObject*> thisView(cx, &args.thisv().toObject().as<DataViewObject>());
int16_t val;
if (!read(cx, thisView, args, &val))
return false;
args.rval().setInt32(val);
return true;
}
Reported by FlawFinder.
Line: 576
Column: 10
CWE codes:
120
20
Rooted<DataViewObject*> thisView(cx, &args.thisv().toObject().as<DataViewObject>());
uint16_t val;
if (!read(cx, thisView, args, &val))
return false;
args.rval().setInt32(val);
return true;
}
Reported by FlawFinder.
Line: 597
Column: 10
CWE codes:
120
20
Rooted<DataViewObject*> thisView(cx, &args.thisv().toObject().as<DataViewObject>());
int32_t val;
if (!read(cx, thisView, args, &val))
return false;
args.rval().setInt32(val);
return true;
}
Reported by FlawFinder.
Line: 618
Column: 10
CWE codes:
120
20
Rooted<DataViewObject*> thisView(cx, &args.thisv().toObject().as<DataViewObject>());
uint32_t val;
if (!read(cx, thisView, args, &val))
return false;
args.rval().setNumber(val);
return true;
}
Reported by FlawFinder.
Line: 639
Column: 10
CWE codes:
120
20
Rooted<DataViewObject*> thisView(cx, &args.thisv().toObject().as<DataViewObject>());
float val;
if (!read(cx, thisView, args, &val))
return false;
args.rval().setDouble(CanonicalizeNaN(val));
return true;
}
Reported by FlawFinder.
src/third_party/benchmark/dist/src/sysinfo.cc
11 issues
Line: 19
Column: 8
CWE codes:
120
#ifdef BENCHMARK_OS_WINDOWS
#include <shlwapi.h>
#undef StrCat // Don't let StrCat in string_util.h be renamed to lstrcatA
#include <versionhelpers.h>
#include <windows.h>
#include <codecvt>
#else
#include <fcntl.h>
Reported by FlawFinder.
Line: 226
Column: 9
CWE codes:
120
std::string res;
for (int cpu = 0; cpu < num_cpus; ++cpu) {
std::string governor_file =
StrCat("/sys/devices/system/cpu/cpu", cpu, "/cpufreq/scaling_governor");
if (ReadFromFile(governor_file, &res) && res != "performance") return CPUInfo::Scaling::ENABLED;
}
return CPUInfo::Scaling::DISABLED;
#endif
return CPUInfo::Scaling::UNKNOWN;
Reported by FlawFinder.
Line: 260
Column: 25
CWE codes:
120
int Idx = 0;
while (true) {
CPUInfo::CacheInfo info;
std::string FPath = StrCat(dir, "index", Idx++, "/");
std::ifstream f(StrCat(FPath, "size").c_str());
if (!f.is_open()) break;
std::string suffix;
f >> info.size;
if (f.fail())
Reported by FlawFinder.
Line: 261
Column: 21
CWE codes:
120
while (true) {
CPUInfo::CacheInfo info;
std::string FPath = StrCat(dir, "index", Idx++, "/");
std::ifstream f(StrCat(FPath, "size").c_str());
if (!f.is_open()) break;
std::string suffix;
f >> info.size;
if (f.fail())
PrintErrorAndDie("Failed while reading file '", FPath, "size'");
Reported by FlawFinder.
Line: 277
Column: 23
CWE codes:
120
else if (suffix == "K")
info.size *= 1024;
}
if (!ReadFromFile(StrCat(FPath, "type"), &info.type))
PrintErrorAndDie("Failed to read from file ", FPath, "type");
if (!ReadFromFile(StrCat(FPath, "level"), &info.level))
PrintErrorAndDie("Failed to read from file ", FPath, "level");
std::string map_str;
if (!ReadFromFile(StrCat(FPath, "shared_cpu_map"), &map_str))
Reported by FlawFinder.
Line: 279
Column: 23
CWE codes:
120
}
if (!ReadFromFile(StrCat(FPath, "type"), &info.type))
PrintErrorAndDie("Failed to read from file ", FPath, "type");
if (!ReadFromFile(StrCat(FPath, "level"), &info.level))
PrintErrorAndDie("Failed to read from file ", FPath, "level");
std::string map_str;
if (!ReadFromFile(StrCat(FPath, "shared_cpu_map"), &map_str))
PrintErrorAndDie("Failed to read from file ", FPath, "shared_cpu_map");
info.num_sharing = CountSetBitsInCPUMap(map_str);
Reported by FlawFinder.
Line: 282
Column: 23
CWE codes:
120
if (!ReadFromFile(StrCat(FPath, "level"), &info.level))
PrintErrorAndDie("Failed to read from file ", FPath, "level");
std::string map_str;
if (!ReadFromFile(StrCat(FPath, "shared_cpu_map"), &map_str))
PrintErrorAndDie("Failed to read from file ", FPath, "shared_cpu_map");
info.num_sharing = CountSetBitsInCPUMap(map_str);
res.push_back(info);
}
Reported by FlawFinder.
Line: 95
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
uint32_t uint32_value;
uint64_t uint64_value;
// For correct aliasing of union members from bytes.
char bytes[8];
};
using DataPtr = std::unique_ptr<DataT, decltype(&std::free)>;
// The size of the data union member + its trailing array size.
size_t Size;
Reported by FlawFinder.
Line: 139
Column: 10
CWE codes:
120
Suggestion:
Make sure destination can always hold the source data
const int ArrSize = sizeof(T) * N;
CHECK_LE(ArrSize, Size);
std::array<T, N> Arr;
std::memcpy(Arr.data(), data(), ArrSize);
return Arr;
}
};
ValueUnion GetSysctlImp(std::string const& Name) {
Reported by FlawFinder.
Line: 421
Column: 3
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
#if defined(BENCHMARK_OS_WINDOWS)
std::string str;
const unsigned COUNT = MAX_COMPUTERNAME_LENGTH+1;
TCHAR hostname[COUNT] = {'\0'};
DWORD DWCOUNT = COUNT;
if (!GetComputerName(hostname, &DWCOUNT))
return std::string("");
#ifndef UNICODE
str = std::string(hostname, DWCOUNT);
Reported by FlawFinder.