V547. Expression is always true/false.
V547 Expression 'pBytes [ 0 ] == 0xEF' is always false. The value range of signed char type: [-128, 127]. Shareaza remote.cpp 350
void CRemote::Output(LPCTSTR pszName)
{
....
CHAR* pBytes = new CHAR[ nBytes ];
hFile.Read( pBytes, nBytes );
....
if ( nBytes > 3 &&
pBytes[0] == 0xEF &&
pBytes[1] == 0xBB &&
pBytes[2] == 0xBF )
{
pBytes += 3;
nBytes -= 3;
bBOM = true;
}
....
}
Similar errors can be found in some other places:
V547 Expression is always false. Unsigned type value is never < 0. BugTrap encoding.cpp 425
size_t UTF16BeDecodeChar(BYTE* pBytes, size_t nNumBytes,
TCHAR arrChar[2], size_t& nCharSize)
{
if (UTF16BeToLeChar(pBytes, nNumBytes) < 0)
{
nCharSize = MAXSIZE_T;
return 0;
}
return UTF16LeDecodeChar(pBytes, nNumBytes,
arrChar, nCharSize);
}
In case of an error, the UTF16BeToLeChar() function returns MAXSIZE_T. This case will be handled incorrectly.
V547 Expression 'nCharPos >= 0' is always true. Unsigned type value is always >= 0. BugTrap xmlreader.h 946
inline void CXmlReader::CXmlInputStream::UnsafePutCharsBack(
const TCHAR* pChars, size_t nNumChars)
{
if (nNumChars > 0)
{
for (size_t nCharPos = nNumChars - 1;
nCharPos >= 0;
--nCharPos)
UnsafePutCharBack(pChars[nCharPos]);
}
}
Infinite loop.
V547 Expression 'c < 0' is always false. Unsigned type value is never < 0. Ami lexer.cpp 225
typedef unsigned short wint_t;
void lexungetc(wint_t c) {
if (c < 0)
return;
g_backstack.push_back(c);
}
V547 Expression 'c < 0' is always false. Unsigned type value is never < 0. Ami lexer.cpp 279
typedef unsigned short wint_t;
wint_t lexgetescape() {
wint_t c = lexgetc();
if (c < 0)
fatal("Newline found in escape sequence");
....
}
V547 Expression '* s > 127' is always false. The value range of signed char type: [-128, 127]. Shp2Xml shp2xml.cpp 18
char *chkXml(char *buf) {
for (char *s = buf; *s; s++)
if (*s == '&') *s = '/';
....
else if (*s > 127) *s = '~';
return buf;
}
V547 Expression '( len - indx ) >= 0' is always true. Unsigned type value is always >= 0. UTDns utstrlst.cpp 58
void CUT_StrMethods::RemoveCRLF(LPSTR buf)
{
// v4.2 changed to size_t
size_t len, indx = 1;
if(buf != NULL){
len = strlen(buf);
while((len - indx) >= 0 && indx <= 2) {
if(buf[len - indx] == '\r' ||
buf[len - indx] == '\n')
buf[len - indx] = 0;
++indx;
}
}
}
This is an example of potential vulnerability. When processing an empty string, the (len - indx) expression will equal 0xFFFFFFFFu. The value 0xFFFFFFFFu is above 0. An array overrun will occur.
Similar errors can be found in some other places:
V547 Expression 'loop >= 0' is always true. Unsigned type value is always >= 0. UTDns utstrlst.cpp 430
void CUT_StrMethods::RemoveSpaces(LPSTR szString) {
....
size_t loop, len = strlen(szString);
// Remove the trailing spaces
for(loop = (len-1); loop >= 0; loop--) {
if(szString[loop] != ' ')
break;
}
....
}
An example of potential vulnerability. If a string contains only blanks, an array overrun will occur.
Similar errors can be found in some other places:
V547 Expression 'buf[t] > 127' is always false. The value range of signed char type: [-128, 127]. UTImap4 utmime.cpp 320
int CUT_MimeEncode::Encode7bit(....)
{
....
char buf[1000];
....
for ( t=0; t<bytesRead; t++ ) {
if (buf[t]==0 || buf[t]>127) {
retval = UTE_ENCODING_INVALID_CHAR;
break;
}
....
}
V547 Expression 'lpDrawItemStruct -> itemID >= 0' is always true. Unsigned type value is always >= 0. UT oxautolistbox.cpp 56
void COXAutoListBox::DrawItem(....)
{
....
if (lpDrawItemStruct->itemID>=0)
{
....
}
....
}
Most likely this is what should be written here: (lpDrawItemStruct->itemID != (UINT)(-1))
V547 Expression 'lpms -> itemID < 0' is always false. Unsigned type value is never < 0. UT oxcoolcombobox.cpp 476
void COXCoolComboBox::MeasureItem(....)
{
if(lpms->itemID<0)
lpms->itemHeight=m_nDefaultFontHeight+1;
else
lpms->itemHeight=
m_nDefaultFontHeightSansLeading+1;
}
V547 Expression 'chNewChar >= 128' is always false. The value range of signed char type: [-128, 127]. UT oxmaskededit.cpp 81
BOOL CMaskData::IsValidInput(TCHAR chNewChar)
{
....
if((chNewChar >= 128) && (chNewChar <= 255))
bIsValidInput=TRUE ;
....
}
Similar errors can be found in some other places:
V547 Expression 'm_nCurrentIndex - nOffset < 0' is always false. Unsigned type value is never < 0. UT oxprocess.cpp 594
int m_nCurrentIndex;
....
BOOL COXProcessIterator::Prev(UINT nOffset)
{
....
if(m_nCurrentIndex-nOffset<0)
return FALSE;
....
}
Since the "m_nCurrentIndex-nOffset" expression has the unsigned type, it can never be below 0.
V547 Expression 'c >= 0x80' is always false. The value range of signed char type: [-128, 127]. pathutils.cpp 559
CString CPathUtils::PathUnescape (const char* path)
{
// try quick path
size_t i = 0;
for (; char c = path[i]; ++i)
if ((c >= 0x80) || (c == '%'))
{
// quick path does not work for
// non-latin or escaped chars
std::string utf8Path (path);
CPathUtils::Unescape (&utf8Path[0]);
return CUnicodeUtils::UTF8ToUTF16 (utf8Path);
}
....
}
V547 Expression '* utf8CheckBuf == 0xC0' is always false. The value range of signed char type: [-128, 127]. tortoiseblame.cpp 310
BOOL TortoiseBlame::OpenFile(const TCHAR *fileName)
{
....
// check each line for illegal utf8 sequences.
// If one is found, we treat
// the file as ASCII, otherwise we assume
// an UTF8 file.
char * utf8CheckBuf = lineptr;
while ((bUTF8)&&(*utf8CheckBuf))
{
if ((*utf8CheckBuf == 0xC0)||
(*utf8CheckBuf == 0xC1)||
(*utf8CheckBuf >= 0xF5))
{
bUTF8 = false;
break;
}
....
}
....
}
Similar errors can be found in some other places:
V547 Expression 'endRevision < 0' is always false. Unsigned type value is never < 0. cachelogquery.cpp 999
typedef index_t revision_t;
....
void CCacheLogQuery::InternalLog (
revision_t startRevision
, revision_t endRevision
, const CDictionaryBasedTempPath& startPath
, int limit
, const CLogOptions& options)
{
....
// we cannot receive logs for rev < 0
if (endRevision < 0)
endRevision = 0;
....
}
Negative values simply cannot appear here. The endRevision variable has the unsigned type and, therefore, endRevision is always >=0. The potential danger is this: if a negative value was cast to the unsigned type somewhere before, we will be handling a very big number. And there's no check for that.
V547 Expression '(m_socketHandle = socket (2, 1, 0)) < 0' is always false. Unsigned type value is never < 0. Vs8_Win_Lib tracetool.cpp 871
static UINT_PTR m_socketHandle ;
void TTrace::LoopMessages(void)
{
....
// Socket creation
if ( (m_socketHandle = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
continue;
}
....
}
V547 Expression 'x < 0' is always false. Unsigned type value is never < 0. fceux gui.cpp 32
void CenterWindow(HWND hwndDlg)
{
....
unsigned x = ((rectP.right-rectP.left) - width) / 2 +
rectP.left;
unsigned y = ((rectP.bottom-rectP.top) - height) / 2 +
rectP.top;
....
// make sure that the dialog box never moves outside
// of the screen
if(x < 0) x = 0;
if(y < 0) y = 0;
if(x + width > screenwidth) x = screenwidth - width;
if(y + height > screenheight) y = screenheight - height;
....
}
Similar errors can be found in some other places:
V547 Expression '* pTrack >= 0' is always true. Unsigned type value is always >= 0. demuxer umc_stream_parser.cpp 179
typedef signed int Ipp32s;
typedef unsigned int Ipp32u;
Ipp32s StreamParser::GetTrackByPidOrCreateNew(Ipp32s iPid,
bool *pIsNew)
{
....
else if (!pIsNew || m_uiTracks >= MAX_TRACK)
return -1;
....
}
Status StreamParser::GetNextData(MediaData *pData,
Ipp32u *pTrack)
{
....
*pTrack = GetTrackByPidOrCreateNew(m_pPacket->iPid, NULL);
if (*pTrack >= 0 && TRACK_LPCM == m_pInfo[*pTrack]->m_Type)
ippsSwapBytes_16u_I((Ipp16u *)pData->GetDataPointer(),
m_pPacket->uiSize / 2);
....
}
V547 Expression 'memSize < 0' is always false. Unsigned type value is never < 0. vc1_enc umc_vc1_enc_planes.h 200
typedef unsigned int Ipp32u;
UMC::Status Init(..., Ipp32u memSize, ...)
{
....
memSize -= UMC::align_value<Ipp32u>(m_nFrames*sizeof(Frame));
if(memSize < 0)
return UMC::UMC_ERR_NOT_ENOUGH_BUFFER;
....
}
Similar errors can be found in some other places:
V547 Expression 'm_iCurrMBIndex - x < 0' is always false. Unsigned type value is never < 0. vc1_enc umc_vc1_enc_mb.cpp 188
Ipp32u m_iCurrMBIndex;
VC1EncoderMBInfo *
VC1EncoderMBs::GetPevMBInfo(Ipp32s x, Ipp32s y)
{
Ipp32s row = (y>0)? m_iPrevRowIndex:m_iCurrRowIndex;
return ((m_iCurrMBIndex - x <0 || row <0) ?
0 :
&m_MBInfo[row][m_iCurrMBIndex - x]);
}
Since the check doesn't work, we may easily get an array overrun.
V547 Expression is always true. Unsigned type value is always >= 0. dosbox libserial.cpp 155
void SERIAL_getErrorString(char* buffer, int length) {
....
if((length - sysmsg_offset -
strlen((const char*)sysmessagebuffer)) >= 0)
memcpy(buffer + sysmsg_offset, sysmessagebuffer,
strlen((const char*)sysmessagebuffer));
....
}
This is an example of unsafe code from the viewpoint of buffer overflows. The strlen() function returns size_t. It means that the check for buffer overflow doesn't work.
V547 Expression 'newItem >= 0' is always true. Unsigned type value is always >= 0. avs options.cpp 265
INT_PTR CALLBACK DlgProcOptionsProtos(....)
{
....
UINT64 newItem = 0;
....
newItem = ListView_InsertItem(hwndList, &item);
if(newItem >= 0)
ListView_SetCheckState(....);
....
}
V547 Expression 'nGroupsCount < 0' is always false. Unsigned type value is never < 0. import mirabilis.c 1416
extern DWORD nMessagesCount;
static void MirabilisImport(HWND hdlgProgressWnd)
{
....
nGroupsCount = ImportGroups();
if (nGroupsCount < 0) {
AddMessage( LPGEN("Group import was not completed."));
nGroupsCount = 0;
}
....
}
V547 Expression 'wParam >= 0' is always true. Unsigned type value is always >= 0. clist_mw cluiframes.c 3140
typedef UINT_PTR WPARAM;
static int id2pos(int id)
{
int i;
if (FramesSysNotStarted) return -1;
for (i=0;i<nFramescount;i++)
{
if (Frames[i].id==id) return(i);
}
return(-1);
}
INT_PTR CLUIFrameSetFloat(WPARAM wParam,LPARAM lParam)
{
....
wParam=id2pos(wParam);
if(wParam>=0&&(int)wParam<nFramescount)
if (Frames[wParam].floating)
....
}
V547 Expression is always true. Unsigned type value is always >= 0. scriver msgoptions.c 458
WINUSERAPI
UINT
WINAPI
GetDlgItemInt(
__in HWND hDlg,
__in int nIDDlgItem,
__out_opt BOOL *lpTranslated,
__in BOOL bSigned);
#define SRMSGSET_LIMITNAMESLEN_MIN 0
static INT_PTR CALLBACK DlgProcTabsOptions(....)
{
....
limitLength =
GetDlgItemInt(hwndDlg, IDC_LIMITNAMESLEN, NULL, TRUE) >=
SRMSGSET_LIMITNAMESLEN_MIN ?
GetDlgItemInt(hwndDlg, IDC_LIMITNAMESLEN, NULL, TRUE) :
SRMSGSET_LIMITNAMESLEN_MIN;
....
}
V547 Expression 'nOldLength < 0' is always false. Unsigned type value is never < 0. IRC mstring.h 229
void Append( PCXSTR pszSrc, int nLength )
{
....
UINT nOldLength = GetLength();
if (nOldLength < 0)
{
// protects from underflow
nOldLength = 0;
}
....
}
V547 Expression 'ft->std.currentFileSize < 0' is always false. Unsigned type value is never < 0. jabber jabber_file.cpp 92
typedef struct tagPROTOFILETRANSFERSTATUS
{
....
unsigned __int64 currentFileSize;
....
} PROTOFILETRANSFERSTATUS;
//There is this place in the program code:
ft->std.currentFileSize = -1;
void __cdecl CJabberProto::FileReceiveThread(filetransfer* ft)
{
....
if (ft->state==FT_DONE ||
( ft->state==FT_RECEIVING && ft->std.currentFileSize < 0 ))
....
}
Similar errors can be found in some other places:
V547 Expression 'totalsize < 0' is always false. Unsigned type value is never < 0. client queuemanager.cpp 2230
uint64_t QueueManager::FileQueue::getTotalQueueSize(){
uint64_t totalsize = 0;
....
if(totalsize < 0)
totalsize = 0;
....
}
V547 Expression 'current_idle_time < 0' is always false. Unsigned type value is never < 0. browser idle_win.cc 23
IdleState CalculateIdleState(unsigned int idle_threshold) {
....
DWORD current_idle_time = 0;
....
// Will go -ve if we have been idle for
// a long time (2gb seconds).
if (current_idle_time < 0)
current_idle_time = INT_MAX;
....
}
V547 Expression 'count < 0' is always false. Unsigned type value is never < 0. ncdecode_tablegen ncdecode_tablegen.c 197
static void CharAdvance(char** buffer,
size_t* buffer_size,
size_t count) {
if (count < 0) {
NaClFatal("Unable to advance buffer by count!");
} else {
....
}
V547 Expression '* string != 0 || * string != '_'' is always true. Probably the '&&' operator should be used here. icui18n ucol_sit.cpp 242
U_CDECL_BEGIN static const char* U_CALLCONV
_processVariableTop(....)
{
....
if(i == locElementCapacity &&
(*string != 0 || *string != '_')) {
*status = U_BUFFER_OVERFLOW_ERROR;
}
....
}
V547 Expression 'input.len < 0' is always false. Unsigned type value is never < 0. nss pk11merge.c 491
struct SECItemStr {
....
unsigned int len;
};
static SECStatus
pk11_mergeSecretKey(....)
{
....
if (input.len < 0) {
rv = SECFailure;
goto done;
}
....
}
V547 Expression '-- size >= 0' is always true. Unsigned type value is always >= 0. QtCLucene arrays.h 154
bool equals( class1* val1, class2* val2 ) const{
{
....
size_t size = val1->size();
....
while ( --size >= 0 ){
if ( !comp(*itr1,*itr2) )
return false;
itr1++;
itr2++;
}
....
}
An array overrun may surely occur.
V547 Expression 'q->getQueryName () != L"BooleanQuery"' is always true. To compare strings you should use wcscmp() function. QtCLucene multifieldqueryparser.cpp 44
const TCHAR* getQueryName() const;
Query* MultiFieldQueryParser::parse(....)
{
....
if (q && (q->getQueryName() != _T("BooleanQuery")
....
}
Similar errors can be found in some other places:
V547 Expression 'str [0] != 'a' || str [0] != 'A'' is always true. Probably the '&&' operator should be used here. clientlib my_time.c 340
enum enum_mysql_timestamp_type
str_to_datetime(....)
{
....
else if (str[0] != 'a' || str[0] != 'A')
continue; /* Not AM/PM */
....
}
V547 Expression 'len < 0' is always false. Unsigned type value is never < 0. aprutil apr_memcache.c 814
typedef size_t apr_size_t;
APU_DECLARE(apr_status_t) apr_memcache_getp(....)
{
....
apr_size_t len = 0;
....
len = atoi(length);
....
if (len < 0) {
*new_length = 0;
*baton = NULL;
}
else {
....
}
}
V547 Expression 'csd < 0' is always false. Unsigned type value is never < 0. libhttpd child.c 404
typedef UINT_PTR SOCKET;
static unsigned int __stdcall win9x_accept(void * dummy)
{
SOCKET csd;
....
do {
clen = sizeof(sa_client);
csd = accept(nsd, (struct sockaddr *) &sa_client, &clen);
} while (csd < 0 &&
APR_STATUS_IS_EINTR(apr_get_netos_error()));
....
}
V547 Expression '_username == ""' is always false. To compare strings you should use strcmp() function. Discovery discoverysample.cpp 184
static char* _username = "";
static char* _password = "";
static char* _host = "";
static char* _hostMask = "";
if (((_username == "") && (_password != "")) ||
((_username != "") && (_password == "")))
This code is dangerous and incorrect. But sometimes it will work - when the whole code is in one module (one *.obj). The compiler will create only one empty string in memory.
V547 Expression 'bytesRead < 0' is always false. Unsigned type value is never < 0. RemoteConsole remote.c 173
int ReadFileData(char* fileName, UINT8 data[], size_t size)
{
size_t fileSize , bytesRead;
....
bytesRead = read(fileno(fileHandle), data, (int) size);
if (bytesRead < 0)
{
printf("Error while Reading file %s : %s",
fileName, strerror(errno));
bytesRead = 0;
}
....
}
V547 Expression 'bytesRead < 0' is always false. Unsigned type value is never < 0. ZTCLocalAgent heciwin.cpp 357
int HECIWin::_doIoctl(....)
{
DWORD bytesRead = 0;
....
if (bytesRead < 0) {
Deinit();
}
....
}
V547 Expression 'fileDataEndPos < 0' is always false. Unsigned type value is never < 0. Setup selfextract.c 551
BOOL SelfExtractInMemory (char *path)
{
unsigned int fileDataEndPos = 0;
....
if (fileDataEndPos < 0)
{
Error ("CANNOT_READ_FROM_PACKAGE");
return FALSE;
}
....
}
Similar errors can be found in some other places:
V547 Expression is always false. Probably the '||' operator should be used here. ws2_32_new sockctrl.c 55
INT
WSAAPI
connect(IN SOCKET s,
IN CONST struct sockaddr *name,
IN INT namelen)
{
....
/* Check if error code was due to the host not being found */
if ((Status == SOCKET_ERROR) &&
(ErrorCode == WSAEHOSTUNREACH) &&
(ErrorCode == WSAENETUNREACH))
{
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. win32k arc.c 67
typedef enum _ARCTYPE
{
GdiTypeArc,
GdiTypeArcTo,
GdiTypeChord,
GdiTypePie,
} ARCTYPE, *PARCTYPE;
BOOL IntArc(....)
{
....
if ((Left == Right) ||
(Top == Bottom) ||
(((arctype != GdiTypeArc) ||
(arctype != GdiTypeArcTo)) &&
((Right - Left == 1) ||
(Bottom - Top == 1))
)
)
return TRUE;
....
}
Most likely this is what should be written here: (arctype != GdiTypeArc) && (arctype != GdiTypeArcTo)
V547 Expression 'LeftOfBuffer < 0' is always false. Unsigned type value is never < 0. svchost svchost.c 56
BOOL PrepareService(LPCTSTR ServiceName)
{
DWORD LeftOfBuffer = sizeof(ServiceKeyBuffer) /
sizeof(ServiceKeyBuffer[0]);
....
LeftOfBuffer -= _tcslen(SERVICE_KEY);
....
LeftOfBuffer -= _tcslen(ServiceName);
....
LeftOfBuffer -= _tcslen(PARAMETERS_KEY);
....
if (LeftOfBuffer < 0)
{
DPRINT1("Buffer overflow for service name: '%s'\n",
ServiceName);
return FALSE;
}
....
}
There are a lot of such fragments in ReactOS, but I cannot say for sure how critical they are.
V547 Expression '(Minor != 0x02) || (Minor != 0x13)' is always true. Probably the '&&' operator should be used here. ramdisk ramdisk.c 1955
#define IRP_MN_REMOVE_DEVICE 0x02
#define IRP_MN_QUERY_ID 0x13
NTSTATUS
RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
....
// Only remove-device and query-id are allowed
if ((Minor != IRP_MN_REMOVE_DEVICE) ||
(Minor != IRP_MN_QUERY_ID))
....
}
This is what should have been written here: ((Minor == IRP_MN_REMOVE_DEVICE) || (Minor == IRP_MN_QUERY_ID))
Similar errors can be found in some other places:
V547 Expression is always false. Unsigned type value is never < 0. opengl32 font.c 1099
BOOL APIENTRY IntUseFontOutlinesW(....)
{
....
if (GetGlyphOutline(hDC, glyphIndex, GGO_NATIVE,
&glyphMetrics, glyphBufSize, glyphBuf, &matrix) < 0)
{
HeapFree(GetProcessHeap(), 0, glyphBuf);
return FALSE; /*WGL_STATUS_FAILURE*/
}
....
}
Similar errors can be found in some other places:
V547 Expression 'IntEaLength >= 0' is always true. Unsigned type value is always >= 0. ntoskrnl util.c 220
NTSTATUS
IoCheckEaBufferValidity(....)
{
ULONG NextEaBufferOffset, IntEaLength;
....
if (IntEaLength >= 0)
{
EaBufferEnd = (PFILE_FULL_EA_INFORMATION)
((ULONG_PTR)EaBufferEnd +
EaBufferEnd->NextEntryOffset);
continue;
}
}
Similar errors can be found in some other places:
V547 Expression 'i < 512' is always true. The value range of unsigned char type: [0, 255]. freeldr_common xboxhw.c 344
static VOID
DetectBiosDisks(....)
{
UCHAR DiskCount, i;
....
for (i = 0; ! Changed && i < 512; i++)
{
Changed = ((PUCHAR)DISKREADBUFFER)[i] != 0xcd;
}
....
}
An infinite loop will occur here if the first 255 bytes contain value 0xcd.
Similar errors can be found in some other places:
V547 Expression 'ads->tcpsocket >= 0' is always true. Unsigned type value is always >= 0. adns setup.c 683
typedef UINT_PTR SOCKET;
#define ADNS_SOCKET SOCKET
struct adns__state {
....
ADNS_SOCKET udpsocket, tcpsocket;
....
};
void adns_finish(adns_state ads) {
....
if (ads->tcpsocket >= 0) adns_socket_close(ads->tcpsocket);
....
}
Similar errors can be found in some other places:
V547 Expression is always true. Probably the '&&' operator should be used here. webrtc_vplib interpolator.cc 119
WebRtc_Word32
interpolator::SupportedVideoType(VideoType srcVideoType,
VideoType dstVideoType)
{
....
if ((srcVideoType != kI420) ||
(srcVideoType != kIYUV) ||
(srcVideoType != kYV12))
{
return -1;
}
....
}
V547 Expression 'c < 0' is always false. Unsigned type value is never < 0. updater.cpp 1179
int
PatchFile::LoadSourceFile(FILE* ofile)
{
....
size_t c = fread(rb, 1, r, ofile);
if (c < 0) {
LOG(("LoadSourceFile: error reading destination file: "
LOG_S "\n", mFile));
return READ_ERROR;
}
....
}
Similar errors can be found in some other places:
V547 Expression is always true. Unsigned type value is always >= 0. exception_handler.cc 846
bool ExceptionHandler::WriteMinidumpForChild(....)
{
....
DWORD last_suspend_cnt = -1;
....
// this thread may have died already, so not opening
// the handle is a non-fatal error
if (NULL != child_thread_handle) {
if (0 <=
(last_suspend_cnt = SuspendThread(child_thread_handle)))
{
....
}
Most likely this is what should be written here: (((DWORD) -1) != (last_suspend_cnt = SuspendThread(child_thread_handle))).
Similar errors can be found in some other places:
V547 Expression 'index < 0' is always false. Unsigned type value is never < 0. nsieprofilemigrator.cpp 622
PRBool
nsIEProfileMigrator::TestForIE7()
{
....
PRUint32 index = ieVersion.FindChar('.', 0);
if (index < 0)
return PR_FALSE;
....
}
V547 Expression is always false. Probably the '||' operator should be used here. Notepad++ notepad_plus.cpp 4967
DWORD WINAPI Notepad_plus::threadTextPlayer(void *params)
{
....
const char *text2display = ...;
....
if (text2display[i] == ' ' && text2display[i] == '.')
....
}
Similar errors can be found in some other places:
V547 Expression 'ch != '_' || ch != ':'' is always true. Probably the '&&' operator should be used here. ACEXML_Parser parser.cpp 1905
ACEXML_Char*
ACEXML_Parser::parse_reference_name (void)
{
ACEXML_Char ch = this->get ();
if (!this->isLetter (ch) && (ch != '_' || ch != ':'))
return 0;
....
}
V547 Expression 'cchText < 0' is always false. Unsigned type value is never < 0. Merge ccrystaleditview.cpp 1135
BOOL CCrystalEditView::
DoDropText (COleDataObject * pDataObject,
const CPoint & ptClient)
{
....
UINT cbData = (UINT) ::GlobalSize (hData);
UINT cchText = cbData / sizeof(TCHAR) - 1;
if (cchText < 0)
return FALSE;
....
}
V547 Expression 'nLoc >= 0' is always true. Unsigned type value is always >= 0. Merge bcmenu.cpp 1232
BCMenu *BCMenu::FindMenuOption(int nId,UINT& nLoc)
{
....
nLoc = -1;
....
}
BOOL BCMenu::ModifyODMenuW(wchar_t *lpstrText,
UINT nID, int nIconNormal)
{
UINT nLoc;
....
BCMenu *psubmenu = FindMenuOption(nID,nLoc);
....
if(psubmenu && nLoc>=0) mdata = psubmenu->m_MenuList[nLoc];
....
}
Similar errors can be found in some other places:
V547 Expression 'text.length() >= 0' is always true. Unsigned type value is always >= 0. Merge splash.cpp 262
typedef String std::wstring;
void CSplashWnd::OnPaint()
{
....
String text = LoadResString(IDS_SPLASH_DEVELOPERS);
// avoid dereference of empty strings and
// the NULL termiated character
if (text.length() >= 0)
{
....
}
V547 Expression '* hDecoder < 0' is always false. Unsigned type value is never < 0. g726_decoder.c 11
int initialize_g726_decoder(unsigned long *hDecoder)
{
*hDecoder = EasyG726_init_decoder();
if(*hDecoder<0)
return -1;
return 0;
}
Similar errors can be found in some other places:
V547 Expression 'name[i] >= 0xF0' is always false. The value range of signed char type: [-128, 127]. DeSmuME_VS2005 directory.cpp 118
static int _FAT_directory_lfnLength (const char* name) {
....
for (i = 0; i < nameLength; i++) {
if (name[i] < 0x20 || name[i] >= ABOVE_UCS_RANGE) {
return -1;
}
}
....
}
This is what should have been written here: (unsigned char)(name[i]) >= ABOVE_UCS_RANGE
V547 Expression 'remain < 0' is always false. Unsigned type value is never < 0. DeSmuME_VS2005 fatfile.cpp 527
static bool _FAT_check_position_for_next_cluster(....,
size_t remain, ....)
{
....
if ((remain < 0) ||
(position->sector > partition->sectorsPerCluster)) {
// invalid arguments - internal error
r->_errno = EINVAL;
goto err;
}
....
}
V547 Expression '(str[0] != ' ') || (str[0] != '\t')' is always true. Probably the '&&' operator should be used here. DeSmuME_VS2005 xstring.cpp 93
int str_ltrim(char *str, int flags) {
....
while (str[0]) {
if ((str[0] != ' ') || (str[0] != '\t') ||
(str[0] != '\r') || (str[0] != '\n'))
break;
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. DeSmuME_VS2005 xstring.cpp 124
int str_rtrim(char *str, int flags) {
u32 i=0;
while (strlen(str)) {
if ((str[strlen(str)-1] != ' ') ||
(str[strlen(str)-1] != '\t') ||
(str[strlen(str)-1] != '\r') ||
(str[strlen(str)-1] != '\n')) break;
....
}
V547 Expression '(char *) cheatsExport->gametitle != ""' is always true. To compare strings you should use strcmp() function. DeSmuME_VS2005 cheatswin.cpp 1382
class CHEATSEXPORT
{
....
u8 *gametitle;
....
}
INT_PTR CALLBACK CheatsExportProc(HWND dialog, UINT msg,
WPARAM wparam, LPARAM lparam)
{
....
if ((char*)cheatsExport->gametitle != "")
....
}
Similar errors can be found in some other places:
V547 Expression 'appliedSize == 'b' && appliedSize == 's'' is always false. Probably the '||' operator should be used here. DeSmuME_VS2005 ram_search.cpp 817
bool Set_RS_Val()
{
....
if((appliedSize == 'b' && appliedSize == 's' &&
(rs_param < -128 || rs_param > 127)) ||
(appliedSize == 'b' && appliedSize != 's' &&
(rs_param < 0 || rs_param > 255)) ||
(appliedSize == 'w' && appliedSize == 's' &&
(rs_param < -32768 || rs_param > 32767)) ||
(appliedSize == 'w' && appliedSize != 's' &&
(rs_param < 0 || rs_param > 65535)))
return false;
....
}
Similar errors can be found in some other places:
V547 Expression 'info.type != 0xFF || info.type != 0xFE' is always true. Probably the '&&' operator should be used here. DeSmuME_VS2005 mc.cpp 1054
void BackupDevice::loadfile()
{
....
if (info.type != 0xFF || info.type != 0xFE)
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. mpu4.c 934
int m_led_extender;
#define CARD_A 1
#define NO_EXTENDER 0
static WRITE8_DEVICE_HANDLER( pia_ic5_porta_w )
{
....
else if ((state->m_led_extender != CARD_A)||
(state->m_led_extender != NO_EXTENDER))
....
}
V547 Expression 'c != '\\' || c != '/'' is always true. Probably the '&&' operator should be used here. Tandem2XML tandemresultsparser.cxx 787
bool TandemResultsParser::writePepXML(....)
{
....
char c = pathSummary.at(pathSummary.length() - 1);
if (c != '\\' || c != '/')
....
}
This is what should have been written here: if (c != '\\' && c != '/')
V547 Expression 'peptideProphetOpts_.find(" PI ", 0) >= 0' is always true. Unsigned type value is always >= 0. pepXMLViewer pipelineanalysis.cxx 1590
class basic_string
{
....
size_type find(const _Elem *_Ptr, size_type _Off = 0) const
....
}
void
PipelineAnalysis::prepareFields(void) {
....
if (peptideProphetOpts_.find(" PI ", 0)>=0) {
fields_.push_back(Field("PpI_zscore"));
}
....
}
This is what should have been written here: (peptideProphetOpts_.find(" PI ", 0) != string::npos).
Similar errors can be found in some other places:
V547 Expression 'numAssignedPeaks >= 0' is always true. Unsigned type value is always >= 0. tpplib spectrastreplicates.cpp 642
void SpectraSTReplicates::aggregateStats(....)
{
....
unsigned int numAssignedPeaks =
(*r)->entry->getPeakList()->getNumAssignedPeaks();
if (numAssignedPeaks >= 0)
{
sumFracAssigned +=
(double)numAssignedPeaks / (double)numPeaks;
numAnnotated++;
}
....
}
Similar errors can be found in some other places:
V547 Expression 'pos < 0' is always false. Unsigned type value is never < 0. dta2mzXML dta2mzxml.cpp 622
int Dta2mzXML::extractScanNum(const string& dtaFileName)
{
....
std::string::size_type pos = dtaFileName.rfind("/");
if (pos < 0) {
pos = dtaFileName.rfind("\\");
}
....
}
This is what should have been written here: (pos == string::npos).
Similar errors can be found in some other places:
V547 Expression is always true. Probably the '&&' operator should be used here. vtkHybrid vtkmniobjectreader.cxx 161
int vtkMNIObjectReader::CanReadFile(const char* fname)
{
....
if (objType == 'P' || objType != 'L' ||
objType == 'M' || objType != 'F' ||
objType == 'X' || objType != 'Q' ||
objType == 'T')
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. vtkIO vtknetcdfcfreader.cxx 838
int vtkNetCDFCFReader::RequestDataObject(....)
{
if ( (preferredDataType != VTK_IMAGE_DATA)
|| (preferredDataType != VTK_RECTILINEAR_GRID) )
{
vtkWarningMacro("You have set the OutputType to a data "
"type that cannot fully represent the "
"topology of the data. Some of the "
"topology will be ignored.");
}
}
Similar errors can be found in some other places:
V547 Expression 'str::after("abcde", 'x') == ""' is always false. To compare strings you should use strcmp() function. test.cpp 43
inline const char * after(const char *s, char x);
inline string after(const string& s, char x);
inline const char * after(const char *s, const char *x);
inline string after(string s, string x);
inline const char * after(const char *s, char x) {
const char *p = strchr(s, x);
return (p != 0) ? p+1 : "";
}
int main() {
{
....
assert( str::after("abcde", 'x') == "" );
....
}
V547 Expression 'i >= 0' is always true. Unsigned type value is always >= 0. mmap_win.cpp 90
void* MemoryMappedFile::map(....) {
....
size_t len = strlen( filename );
for ( size_t i=len-1; i>=0; i-- ) {
if ( filename[i] == '/' ||
filename[i] == '\\' )
break;
if ( filename[i] == ':' )
filename[i] = '_';
}
....
}
V547 Expression 'bytesRead < 0' is always false. Unsigned type value is never < 0. soundfile.cpp 166
bool CSoundFile::OpenWaveFile()
{
....
DWORD bytesRead = mmioRead(m_hFile, (LPSTR)&m_Format,
m_MMCKInfoChild.cksize);
if (bytesRead < 0)
{
AfxMessageBox("Error reading PCM wave format record");
mmioClose(m_hFile,0);
m_Mode = FILE_ERROR;
return FALSE;
}
....
}
V547 Expression '* p == 0xFE' is always false. The value range of char type: [127, -128]. compile.cpp 527
#define MAGIC_CONTINUE_NUMBER_LO 0xFE
#define MAGIC_CONTINUE_NUMBER_HI 0x7F
/* I can't believe this actually worked */
void bufferResolveJumps(Buffer out)
{
....
if (*p == MAGIC_CONTINUE_NUMBER_LO &&
*(p+1) == MAGIC_CONTINUE_NUMBER_HI)
{
....
}
You're right not to believe. It doesn't work indeed! :-)
V547 Expression '(to != CH_UTF16LE) || (to != CH_UTF16BE)' is always true. Probably the '&&' operator should be used here. charcnv.c 188
static size_t convert_string_internal(....)
{
....
if (((from == CH_UTF16LE)||(from == CH_UTF16BE)) &&
((to != CH_UTF16LE)||(to != CH_UTF16BE))) {
....
}
Similar errors can be found in some other places:
V547 Expression 'result.pid < 0' is always false. Unsigned type value is never < 0. util.c 2376
struct server_id {
uint32_t pid;
uint32_t vnn;
uint64_t unique_id;
}
struct server_id interpret_pid(const char *pid_string)
{
struct server_id result;
....
/* Assigning to result.pid may have overflowed
Map negative pid to -1: i.e. error */
if (result.pid < 0) {
result.pid = -1;
}
....
}
V547 Expression is always false. Consider reviewing this expression. pdbtest.c 170
static bool samu_correct(struct samu *s1, struct samu *s2)
{
....
if (d2_buf == NULL && d2_buf != NULL) {
DEBUG(0, ("Logon hours is not set\n"));
ret = False;
}
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. transports.c 556
void
pt_configure_remaining_proxies(void)
{
....
tor_assert(mp->conf_state != PT_PROTO_BROKEN ||
mp->conf_state != PT_PROTO_FAILED_LAUNCH);
....
}
V547 Expression 'd > maxd' is always false. Unsigned type value is never < 0. fuzzymeanshifttracker.cpp 386
void CvFuzzyMeanShiftTracker::SearchWindow::initDepthValues(....)
{
unsigned int d=0, mind = 0xFFFF, maxd = 0,
m0 = 0, m1 = 0, mc, dd;
....
for (int j = 0; j < height; j++)
{
....
if (d > maxd)
maxd = d;
....
}
}
Variable 'd' does not change in the loop.
V547 Expression 'i < 0x10000' is always true. The value range of unsigned short type: [0, 65535]. xboxhw.c 358
#define DISKREADBUFFER_SIZE HEX(10000)
typedef unsigned short USHORT, *PUSHORT;
static VOID DetectBiosDisks(....)
{
USHORT i;
....
Changed = FALSE;
for (i = 0; ! Changed && i < DISKREADBUFFER_SIZE; i++)
{
Changed = ((PUCHAR)DISKREADBUFFER)[i] != 0xcd;
}
....
}
V547 Expression 'ads->udpsocket < 0' is always false. Unsigned type value is never < 0. setup.c 539
typedef UINT_PTR SOCKET;
#define ADNS_SOCKET SOCKET
struct adns__state {
....
ADNS_SOCKET udpsocket, tcpsocket;
....
};
static int init_finish(adns_state ads) {
....
if (ads->udpsocket<0) { r= errno; goto x_free; }
....
}
Similar errors can be found in some other places:
V547 Expression '0 <= Id' is always true. Unsigned type value is always >= 0. menu.c 2663
static INT FASTCALL
MenuButtonUp(MTRACKER *Mt, HMENU PtMenu, UINT Flags)
{
UINT Id;
....
Id = NtUserMenuItemFromPoint(....);
....
if (0 <= Id &&
MenuGetRosMenuItemInfo(MenuInfo.Self, Id, &ItemInfo) &&
MenuInfo.FocusedItem == Id)
....
}
V547 Expression 'Info->nPage < 0' is always false. Unsigned type value is never < 0. scrollbar.c 428
typedef struct tagSCROLLINFO {
....
UINT nPage;
....
} SCROLLINFO,*LPSCROLLINFO;
static DWORD FASTCALL
co_IntSetScrollInfo(....)
{
LPSCROLLINFO Info;
....
/* Make sure the page size is valid */
if (Info->nPage < 0)
{
pSBData->page = Info->nPage = 0;
}
....
}
V547 Expression 'Entry->Id <= 0xffff' is always true. The value range of unsigned short type: [0, 65535]. res.c 312
typedef unsigned short WORD;
WORD Id;
static LONG
LdrpCompareResourceNames_U(....)
{
/* Fail if ResourceName2 is an ID */
if (Entry->Id <= USHRT_MAX) return -1;
....
}
V547 Expression 'index < 0' is always false. Unsigned type value is never < 0. extensions.c 936
typedef unsigned int GLuint;
const GLubyte *_mesa_get_enabled_extension(
struct gl_context *ctx, GLuint index)
{
const GLboolean *base;
size_t n;
const struct extension *i;
if (index < 0)
return NULL;
....
}
Similar errors can be found in some other places:
V547 Expression 'i < 256' is always true. The value range of unsigned char type: [0, 255]. hw_mac.c 1946
VOID HwFillRateElement(....)
{
UCHAR i, j;
....
for (i = 0; (i < basicRateSet->uRateSetLength) &&
(i < 256); i++)
{
rate[i] = 0x80 | basicRateSet->ucRateSet[i];
}
....
}
V547 Expression is always false. The value range of unsigned char type: [0, 255]. hw_mac.c 1971
VOID HwFillRateElement(....)
{
....
UCHAR rate[256];
UCHAR rateNum;
....
if (rateNum == sizeof(rate) / sizeof(UCHAR))
break;
....
}
V547 Expression 'sockfd < 0' is always false. Unsigned type value is never < 0. radius.cpp 682
typedef UINT_PTR SOCKET;
static int DoRadiusAuth(....)
{
SOCKET sockfd;
....
// Open a socket.
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0)
{
DbgPrintf(3, _T("RADIUS: Cannot create socket"));
pairfree(req);
return 5;
}
....
}
Similar errors can be found in some other places:
V547 Expression 'i >= 0' is always true. Unsigned type value is always >= 0. ipfix.c 488
int ipfix_snprint_string(....)
{
size_t i;
uint8_t *in = (uint8_t*) data;
for( i=len-1; i>=0; i-- ) {
if ( in[i] == '\0' ) {
return snprintf( str, size, "%s", in );
}
}
....
}
V547 Expression 'value >= 0' is always true. Unsigned type value is always >= 0. catalyst.cpp 71
bool CatalystDriver::isDeviceSupported(
SNMP_Transport *snmp, const TCHAR *oid)
{
DWORD value = 0;
if (SnmpGet(snmp->getSnmpVersion(), snmp,
_T(".1.3.6.1.4.1.9.5.1.2.14.0"),
NULL, 0, &value, sizeof(DWORD), 0)
!= SNMP_ERR_SUCCESS)
return false;
// Catalyst 3550 can return 0 as number of slots
return value >= 0;
}
V547 Expression 'i >= 0' is always true. Unsigned type value is always >= 0. mergedoclinediffs.cpp 282
void CMergeDoc::Computelinediff(....)
{
....
vector<wdiff*>::size_type i;
....
for (i=worddiffs.size() - 1; i>=0; --i)
{
const wdiff * diff = worddiffs[i];
if (end1 == -1 && diff->end[0] != -1)
end1 = diff->end[0];
if (end2 == -1 && diff->end[1] != -1)
end2 = diff->end[1];
if (end1 != -1 && end2 != -1)
break; // found both
}
....
}
V547 Expression 'NUMA_NodeNumber >= 0' is always true. Unsigned type value is always >= 0. quickthreadnuma.cpp 101
int numa_preferred(void)
{
unsigned char NUMA_NodeNumber = numa_available();
if(NUMA_NodeNumber >= 0)
return NUMA_NodeNumber;
return 0;
}
V547 Expression 'ticks < 0' is always false. Unsigned type value is never < 0. winplink.c 635
int main(int argc, char **argv)
{
....
DWORD ticks;
....
if (run_timers(now, &next)) {
ticks = next - GETTICKCOUNT();
if (ticks < 0) ticks = 0;
} else {
ticks = INFINITE;
}
....
}
V547 Expression 'socket_ < 0' is always false. Unsigned type value is never < 0. tcp_server_socket_win.cc 48
typedef UINT_PTR SOCKET;
SOCKET socket_;
int TCPServerSocketWin::Listen(....) {
....
socket_ = socket(address.GetSockAddrFamily(),
SOCK_STREAM, IPPROTO_TCP);
if (socket_ < 0) {
PLOG(ERROR) << "socket() returned an error";
return MapSystemError(WSAGetLastError());
}
....
}
V547 Expression 'm_TidyupTimer.Get() < 0' is always false. Unsigned type value is never < 0. crenderitem.effectcloner.cpp 182
unsigned long long Get ( void );
void CEffectClonerImpl::MaybeTidyUp ( void )
{
....
if ( m_TidyupTimer.Get () < 0 )
return;
....
}
V547 Expression 'ucNumber >= 1000' is always false. The value range of unsigned char type: [0, 255]. cluafunctiondefinitions.cpp 4450
int CLuaFunctionDefinitions::GetVehicleUpgradeSlotName (....)
{
unsigned char ucNumber;
....
else if ( ucNumber >= 1000 && ucNumber <= 1193 )
....
}
Similar errors can be found in some other places:
V547 Expression 'uiResourceLength < 0' is always false. Unsigned type value is never < 0. csettings.cpp 408
inline const char* CSettings::GetName (....,
unsigned int uiResourceLength )
{
// Only calculate the resource length if it's
// not already specified
if ( uiResourceLength < 0 ) {
....
} else {
....
}
}
Similar errors can be found in some other places:
V547 Expression 'wc < 0x10000' is always true. The value range of wchar_t type: [0, 65535]. utf8.h 121
int
utf8_wctomb (unsigned char *dest, wchar_t wc, int dest_size)
{
if (!dest)
return 0;
int count;
if (wc < 0x80)
count = 1;
else if (wc < 0x800)
count = 2;
else if (wc < 0x10000)
count = 3;
else if (wc < 0x200000)
count = 4;
else if (wc < 0x4000000)
count = 5;
else if (wc <= 0x7fffffff)
count = 6;
else
return RET_ILSEQ;
....
}
Similar errors can be found in some other places:
V547 Expression 'new_socket.get() >= 0' is always true. Unsigned type value is always >= 0. win_iocp_socket_service.hpp 436
typedef SOCKET socket_type;
class socket_holder
{
....
socket_type socket_;
....
socket_type get() const { return socket_; }
....
};
template <typename Socket>
boost::system::error_code accept(....)
{
....
// On success, assign new connection to peer socket object.
if (new_socketnew_socket.get() >= 0)
{
if (peer_endpoint)
peer_endpoint->resize(addr_len);
if (!peer.assign(impl.protocol_, new_socket.get(), ec))
new_socket.release();
}
return ec;
}
V547 Expression 'b + tau >= 0' is always true. Unsigned type value is always >= 0. spectrastpeaklist.cpp 2058
double SpectraSTPeakList::calcXCorr() {
....
for (int tau = -75; tau <= 75; tau++) {
float dot = 0.0;
for (unsigned int b = 0; b < numBins; b++) {
if (b + tau >= 0 && b + tau < (int)numBins) {
dot += (*m_bins)[b] * theoBins[b + tau] / 10000.0;
}
}
....
....
}
V547 Expression 'parentPos >= 0' is always true. Unsigned type value is always >= 0. bomgenerator.cpp 77
void CBOMGenerator::GenerateBomForDesign(
int level, size_t parentPos, ....)
{
....
if (parentPos >= 0) cmrParent = cmrDefaultParent;
....
}
V547 Expression 'pos < 0' is always false. Unsigned type value is never < 0. tokenize.h 1548
template <typename TStream, typename TPass, typename TBuffer>
inline int
readLineStripTrailingBlanks(TBuffer & buffer,
RecordReader<TStream, TPass> & reader)
{
....
typename Size<TBuffer>::Type pos = length(buffer) - 1;
if (pos < 0)
return 0;
....
}
V547 Expression 'pos < 0' is always false. Unsigned type value is never < 0. main.cpp 314
typedef std::basic_string<TCHAR> tstring;
int process_report(....)
{
....
tstring sInDirName;
....
size_t pos = sInDirName.rfind('\\');
if(pos<0) // There is no back slash in path
{
sInDirName = _T("");
sInFileName = szInput;
}
else
{
sInFileName = sInDirName.substr(pos+1);
sInDirName = sInDirName.substr(0, pos);
}
....
}
Similar errors can be found in some other places:
V547 Expression is always false. Probably the '||' operator should be used here. json_reader.cpp 566
bool
Reader::readArray( Token &tokenStart )
{
....
bool badTokenType = ( token.type_ == tokenArraySeparator &&
token.type_ == tokenArrayEnd );
if ( !ok || badTokenType )
{
....
}
This is what should have been written here: token.type_ != tokenArraySeparator && token.type_ != tokenArrayEnd
V547 Expression is always false. Probably the '||' operator should be used here. ram_search.cpp 921
bool Set_RS_Val()
{
....
int appliedSize;
....
if((appliedSize == TEXT('b') && appliedSize == TEXT('s') &&
(rs_param < -128 || rs_param > 127)) ||
(appliedSize == TEXT('b') && appliedSize != TEXT('s') &&
(rs_param < 0 || rs_param > 255)) ||
(appliedSize == TEXT('w') && appliedSize == TEXT('s') &&
(rs_param < -32768 || rs_param > 32767)) ||
(appliedSize == TEXT('w') && appliedSize != TEXT('s') &&
(rs_param < 0 || rs_param > 65535)))
return false;
....
}
Similar errors can be found in some other places:
V547 Expression 'res < 0' is always false. Unsigned type value is never < 0. Riza w32videocodecpack.cpp 828
void VDVideoCompressorVCM::GetState(vdfastvector<uint8>& data) {
DWORD res;
....
res = ICGetState(hic, data.data(), size);
....
if (res < 0)
throw MyICError("Video compression", res);
}
Similar errors can be found in some other places:
V547 Expression '* p == '//'' is always false. The value range of char type: [-128, 127]. prime95 prime95.cpp 156
BOOL CPrime95App::InitInstance()
{
char *p;
....
for (p = m_lpCmdLine; *p == '//' || *p == '-'; ) {
....
}
V547 Expression '(s = socket(hp->h_addrtype, 1, 0)) < 0' is always false. Unsigned type value is never < 0. prime95 primenet.c 354
typedef UINT_PTR SOCKET;
SOCKET socket(__in int af, __in int type,
__in int protocol);
int pnHttpServer (char *pbuf, unsigned cbuf, char* postargs)
{
....
if ((s = socket (hp->h_addrtype, SOCK_STREAM, 0)) < 0) {
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. G4had_im_r_matrix g4collisionmesonbaryonelastic.cc 53
G4bool G4CollisionMesonBaryonElastic::
IsInCharge(const G4KineticTrack& trk1,
const G4KineticTrack& trk2) const
{
G4bool result = false;
G4ParticleDefinition * p1 = trk1.GetDefinition();
G4ParticleDefinition * p2 = trk2.GetDefinition();
if( (GetNumberOfPartons(p1) != 2 ||
GetNumberOfPartons(p2) != 3)
||(GetNumberOfPartons(p1) != 3 ||
GetNumberOfPartons(p2) != 2) )
{
result = false;
}
....
}
V547 Expression '0 > * busnum' is always false. Unsigned type value is never < 0. linux_usbfs.c 620
int linux_get_device_address (....,
uint8_t *busnum, uint8_t *devaddr,
....)
{
....
*busnum = __read_sysfs_attr(ctx, sys_name, "busnum");
if (0 > *busnum)
return *busnum;
*devaddr = __read_sysfs_attr(ctx, sys_name, "devnum");
if (0 > *devaddr)
return *devaddr;
....
}
Similar errors can be found in some other places:
V547 Expression 'sock_fd < 0' is always false. Unsigned type value is never < 0. postgres auth.c 1668
typedef UINT_PTR SOCKET;
typedef SOCKET pgsocket;
static int
ident_inet(hbaPort *port)
{
....
pgsocket sock_fd;
....
sock_fd = socket(ident_serv->ai_family,
ident_serv->ai_socktype,
ident_serv->ai_protocol);
if (sock_fd < 0)
{
....
}
Similar errors can be found in some other places:
V547 Expression 'm_nActiveParticles >= 0' is always true. Unsigned type value is always >= 0. Client (HL2) particlemgr.cpp 967
unsigned short m_nActiveParticles;
void CParticleEffectBinding::RemoveParticle(
Particle *pParticle )
{
....
Assert( m_nActiveParticles >= 0 );
....
}
V547 Expression 'firstedge >= 0' is always true. Unsigned type value is always >= 0. Vbsp writebsp.cpp 1428
static void AddNodeToBounds(....)
{
....
unsigned int firstedge = dfaces[face].firstedge;
Assert( firstedge >= 0 );
....
}
V547 Expression 'pEdge->v[0] >= 0' is always true. Unsigned type value is always >= 0. Vbsp writebsp.cpp 1435
struct dedge_t
{
DECLARE_BYTESWAP_DATADESC();
unsigned short v[2];
};
static void AddNodeToBounds(....)
{
....
Assert( pEdge->v[0] >= 0 );
Assert( pEdge->v[1] >= 0 );
....
}
Similar errors can be found in some other places:
V547 Expression 'numbounce < 0' is always false. Unsigned type value is never < 0. Vrad_dll vrad.cpp 2412
unsigned numbounce = 100;
int ParseCommandLine( int argc, char **argv, bool *onlydetail )
{
....
numbounce = atoi (argv[i]);
if ( numbounce < 0 )
{
Warning(
"Error: expected non-negative value after '-bounce'\n");
return 1;
}
....
}
V547 Expression '-- i >= 0' is always true. Unsigned type value is always >= 0. isql.cpp 3421
static processing_state add_row(TEXT* tabname)
{
....
unsigned i = n_cols;
while (--i >= 0)
{
if (colnumber[i] == ~0u)
{
bldr->remove(fbStatus, i);
if (ISQL_errmsg(fbStatus))
return (SKIP);
}
}
msg.assignRefNoIncr(bldr->getMetadata(fbStatus));
....
}
V547 Expression 'scale < 0' is always false. Unsigned type value is never < 0. isql.cpp 3716
static processing_state add_row(TEXT* tabname)
{
....
unsigned varLength, scale;
....
scale = msg->getScale(fbStatus, i);
....
if (scale < 0)
....
}
Similar errors can be found in some other places:
V547 Expression '* * argv != 'n' || * * argv != 'N'' is always true. Probably the '&&' operator should be used here. gpre.cpp 1829
static bool get_switches(....)
....
if (**argv != 'n' || **argv != 'N')
{
fprintf(stderr,
"-sqlda : Deprecated Feature: you must use XSQLDA\n ");
print_switches();
return false;
}
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. searchmodule.cpp 469
SearchSpotStatus GetStatus() const { return m_status; }
SearchSpot* SearchGroup::FindBestSearchSpot(....)
{
....
if(searchSpot.GetStatus() != Unreachable ||
searchSpot.GetStatus() != BeingSearchedRightAboutNow)
....
}
V547 Expression 'inTimelineId >= 0' is always true. Unsigned type value is always >= 0. circularstatsstorage.cpp 31
const CCircularBufferTimeline *
CCircularBufferStatsContainer::GetTimeline(
size_t inTimelineId) const
{
....
if (inTimelineId >= 0 && (int)inTimelineId < m_numTimelines)
{
tl = &m_timelines[inTimelineId];
}
else
{
CryWarning(VALIDATOR_MODULE_GAME,VALIDATOR_ERROR,
"Statistics event %" PRISIZE_T
" is larger than the max registered of %"
PRISIZE_T ", event ignored",
inTimelineId,m_numTimelines);
}
....
}
V547 Expression 'standardDate.wDay < 0' is always false. Unsigned type value is never < 0. wintzimpl.cpp 66
int32_t getRuleWeekInMonth(void) const;
typedef struct _SYSTEMTIME {
....
WORD wDay;
....
} SYSTEMTIME, *PSYSTEMTIME;
static UBool getSystemTimeInformation(....)
{
....
standardDate.wDay = std->getRule()->getRuleWeekInMonth();
if (standardDate.wDay < 0) {
standardDate.wDay = 5;
}
....
}
Similar errors can be found in some other places:
V547 Expression 'iParentType == 9 && iParentType == 21' is always false. Probably the '||' operator should be used here. sci_uimenu.c 99
#define __GO_FIGURE__ 9
#define __GO_UIMENU__ 21
int sci_uimenu(char *fname, unsigned long fname_len)
{
....
if (iParentType == __GO_FIGURE__ &&
iParentType == __GO_UIMENU__)
{
Scierror(999, _("%s: Wrong type for input argument #%d: ")
_("A '%s' or '%s' handle expected.\n"),
fname, 1, "Figure", "Uimenu");
return FALSE;
}
....
}
This is what should have been written here: iParentType != __GO_FIGURE__ && iParentType != __GO_UIMENU__
V547 Expression '-- cch >= 0' is always true. Unsigned type value is always >= 0. mergeelx.c 1188
void GetNameElk(elk, stOut)
ELK elk;
unsigned char *stOut;
{
unsigned char *stElk = &rgchElkNames[mpelkichName[elk]];
unsigned cch = stElk[0] + 1;
while (--cch >= 0)
*stOut++ = *stElk++;
}
V547 Expression is always true. Probably the '&&' operator should be used here. qsgatlastexture.cpp 271
void Atlas::uploadBgra(Texture *texture)
{
const QRect &r = texture->atlasSubRect();
QImage image = texture->image();
if (image.format() != QImage::Format_ARGB32_Premultiplied ||
image.format() != QImage::Format_RGB32) {
....
}
V547 Expression '-- size >= 0' is always true. Unsigned type value is always >= 0. arrays.h 154
class Arrays
{
....
bool equals( class1* val1, class2* val2 ) const{
static _comparator comp;
if ( val1 == val2 )
return true;
size_t size = val1->size();
if ( size != val2->size() )
return false;
_itr1 itr1 = val1->begin();
_itr2 itr2 = val2->begin();
while ( --size >= 0 ){
if ( !comp(*itr1,*itr2) )
return false;
itr1++;
itr2++;
}
return true;
}
....
}
V547 Expression 'q->getQueryName() != L"BooleanQuery"' is always true. To compare strings you should use wcscmp() function. multifieldqueryparser.cpp 44
const TCHAR* getQueryName() const;
Query* MultiFieldQueryParser::parse(....)
{
....
Query* q = QueryParser::parse(query, fields[i], analyzer);
if (q && (q->getQueryName() != _T("BooleanQuery")
|| ((BooleanQuery*)q)->getClauseCount() > 0)) {
....
}
Similar errors can be found in some other places:
V547 Expression is always false. Probably the '||' operator should be used here. clonedlg.cpp 413
void CCloneDlg::OnBnClickedCheckSvn()
{
....
CString str;
m_URLCombo.GetWindowText(str);
while(str.GetLength()>=1 &&
str[str.GetLength()-1] == _T('\\') &&
str[str.GetLength()-1] == _T('/'))
{
str=str.Left(str.GetLength()-1);
}
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. smart_protocol.c 264
enum git_ack_status {
GIT_ACK_NONE,
GIT_ACK_CONTINUE,
GIT_ACK_COMMON,
GIT_ACK_READY
};
static int wait_while_ack(gitno_buffer *buf)
{
....
if (pkt->type == GIT_PKT_ACK &&
(pkt->status != GIT_ACK_CONTINUE ||
pkt->status != GIT_ACK_COMMON)) {
....
}
V547 Expression 'c == 'x' && c == 'X'' is always false. Probably the '||' operator should be used here. libtesseract303 scanutils.cpp 135
uintmax_t streamtoumax(FILE* s, int base) {
int d, c = 0;
....
c = fgetc(s);
if (c == 'x' && c == 'X') c = fgetc(s);
....
}
V547 Expression 'new_fd < 0' is always false. Unsigned type value is never < 0. ccsip_platform_tcp.c 438
typedef UINT_PTR SOCKET;
typedef SOCKET cpr_socket_t;
cpr_socket_t
sip_tcp_create_connection (sipSPIMessage_t *spi_msg)
{
cpr_socket_t new_fd;
....
new_fd = cprSocket(af_listen, SOCK_STREAM, 0);
if (new_fd < 0) {
CCSIP_DEBUG_ERROR(SIP_F_PREFIX"Socket creation failed %d.",
fname, cpr_errno);
return INVALID_SOCKET;
}
....
}
Similar errors can be found in some other places:
V547 Expression 'aChannelCount < 0' is always false. Unsigned type value is never < 0. adts.cpp 44
bool
Adts::ConvertEsdsToAdts(uint16_t aChannelCount, ....)
{
....
if (newSize >= (1 << 13) || aChannelCount < 0 ||
aChannelCount > 15 || aFrequencyIndex < 0 ||
aProfile < 1 || aProfile > 4)
return false;
....
}
V547 Expression is always false. Probably the '||' operator should be used here. nswindowsregkey.cpp 292
NS_IMETHODIMP
nsWindowsRegKey::ReadStringValue(....)
{
....
DWORD type;
....
if (type != REG_SZ && type == REG_EXPAND_SZ &&
type == REG_MULTI_SZ)
return NS_ERROR_FAILURE;
....
}
V547 Expression '-- guess >= minEntry' is always true. Unsigned type value is always >= 0. ion.cpp 1112
const SafepointIndex *
IonScript::getSafepointIndex(uint32_t disp) const
{
....
size_t minEntry = 0;
....
size_t guess = ....;
....
while (--guess >= minEntry) {
guessDisp = table[guess].displacement();
JS_ASSERT(guessDisp >= disp);
if (guessDisp == disp)
return &table[guess];
}
....
}
V547 Expression 'm_mantissa[0] >= 0' is always true. Unsigned type value is always >= 0. dggoogol.cpp 55
typedef unsigned long long dgUnsigned64;
dgUnsigned64 m_mantissa[DG_GOOGOL_SIZE];
dgGoogol::dgGoogol(dgFloat64 value)
:m_sign(0)
,m_exponent(0)
{
....
m_mantissa[0] = (dgInt64 (dgFloat64 (
dgUnsigned64(1)<<62) * mantissa));
// it looks like GCC have problems with this
dgAssert (m_mantissa[0] >= 0);
....
}
V547 Expression '0 == commonInfo->eventName' is always false. Pointer 'commonInfo->eventName' != NULL. ccluaengine.cpp 436
struct CommonScriptData
{
// Now this struct is only used in LuaBinding.
int handler;
char eventName[64]; // <=
....
};
int LuaEngine::handleCommonEvent(void* data)
{
....
CommonScriptData* commonInfo = static_cast<....*>(data);
if (NULL == commonInfo->eventName || // <=
0 == commonInfo->handler)
return 0;
....
}
Similar errors can be found in some other places:
V547 Expression is always false. Unsigned type value is never < 0. enum.c 309
static int ebl_callback(....)
{
unsigned int i;
....
if ((i = dn_expand((unsigned char *)fullanswer,
(unsigned char *)answer + len,
(unsigned char *)answer, c->apex, sizeof(c->apex) - 1)) < 0)
{
ast_log(LOG_WARNING, "Failed to expand hostname\n");
return 0;
}
}
V547 Expression 'tmp_len >= 0' is always true. Unsigned type value is always >= 0. ftp_fopen_wrapper.c 639
static size_t php_ftp_dirstream_read(....)
{
size_t tmp_len;
....
/* Trim off trailing whitespace characters */
tmp_len--;
while (tmp_len >= 0 && // <=
(ent->d_name[tmp_len] == '\n' ||
ent->d_name[tmp_len] == '\r' ||
ent->d_name[tmp_len] == '\t' ||
ent->d_name[tmp_len] == ' ')) {
ent->d_name[tmp_len--] = '\0';
}
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. vboxfboverlay.cpp 2259
VBoxVHWAImage::reset(VHWACommandList * pCmdList)
{
....
if (pCmd->SurfInfo.PixelFormat.c.rgbBitCount != 32
|| pCmd->SurfInfo.PixelFormat.c.rgbBitCount != 24)
{
AssertFailed();
pCmd->u.out.ErrInfo = -1;
return VINF_SUCCESS;
}
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. incidenceformatter.cpp 2684
static QString formatICalInvitationHelper(....)
{
....
a = findDelegatedFromMyAttendee( inc );
if ( a ) {
if ( a->status() != Attendee::Accepted || // <=
a->status() != Attendee::Tentative ) { // <=
html += responseButtons( inc, rsvpReq, rsvpRec, helper );
break;
}
}
....
}
Similar errors can be found in some other places:
V547 Expression 'dis->itemData >= 0' is always true. Unsigned type value is always >= 0. TabSRMM hotkeyhandler.cpp 213
ULONG_PTR itemData;
LONG_PTR CALLBACK HotkeyHandlerDlgProc(....)
{
....
if (dis->itemData >= 0) {
....
}
Similar errors can be found in some other places:
V547 Expression 'cp != "\005"' is always true. To compare strings you should use strcmp() function. Yahoo libyahoo2.cpp 4486
static void yahoo_process_search_connection(....)
{
....
if (cp != "\005")
....
}
V547 Expression 'i >= 0' is always true. Unsigned type value is always >= 0. Tipper str_utils.cpp 220
TCHAR *myfgets(TCHAR *Buf, int MaxCount, FILE *File)
{
_fgetts(Buf, MaxCount, File);
for (size_t i = _tcslen(Buf) - 1; i >= 0; i--)
{
if (Buf[i] == '\n' || Buf[i] == ' ')
Buf[i] = 0;
else
break;
}
CharLower(Buf);
return Buf;
}
V547 Expression is always true. Probably the '&&' operator should be used here. sbxmod.cxx 1777
enum SbxDataType {
SbxEMPTY = 0,
SbxNULL = 1,
....
};
void SbModule::GetCodeCompleteDataFromParse(
CodeCompleteDataCache& aCache)
{
....
if( (pSymDef->GetType() != SbxEMPTY) ||
(pSymDef->GetType() != SbxNULL) )
aCache.InsertGlobalVar( pSymDef->GetName(),
pParser->aGblStrings.Find(pSymDef->GetTypeId()) );
....
}
Similar errors can be found in some other places:
V547 Expression is always false. Probably the '||' operator should be used here. svdobj.cxx 2352
enum SfxStyleFamily {
....
SFX_STYLE_FAMILY_PARA = 2,
....
SFX_STYLE_FAMILY_PAGE = 8,
....
};
void SdrObject::NbcSetStyleSheet(SfxStyleSheet* pNewStyleSheet,
bool bDontRemoveHardAttr)
{
// only allow graphic and presentation styles for shapes
if( pNewStyleSheet &&
(pNewStyleSheet->GetFamily() == SFX_STYLE_FAMILY_PARA) &&
(pNewStyleSheet->GetFamily() == SFX_STYLE_FAMILY_PAGE) )
return;
GetProperties().SetStyleSheet(pNewStyleSheet,
bDontRemoveHardAttr);
}
V547 Expression is always false. Probably the '||' operator should be used here. xmlstylesexporthelper.cxx 223
OUString ScMyValidationsContainer::GetCondition(
ScXMLExport& rExport, const ScMyValidation& aValidation)
{
....
if (.... ||
(aValidation.aOperator ==
sheet::ConditionOperator_BETWEEN &&
aValidation.aOperator ==
sheet::ConditionOperator_NOT_BETWEEN &&
!aValidation.sFormula2.isEmpty())))
....
}
V547 Expression 'maxCpuId >= 0' is always true. Unsigned type value is always >= 0. cee_wks codeman.cpp 1219
void EEJitManager::SetCpuInfo()
{
....
unsigned char buffer[16];
DWORD maxCpuId = getcpuid(0, buffer);
if (maxCpuId >= 0)
{
....
}
V547 Expression '* r && * r == ' ' && * r == '\t'' is always false. Probably the '||' operator should be used here. selection.c 546
static int
selection_rel(....)
{
char *r, *rname;
....
while (*r && *r == ' ' && *r == '\t')
r++;
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. StatusView.cpp 1397
void
TDragRegion::Draw(BRect)
{
....
if (fDragLocation != kDontDrawDragRegion ||
fDragLocation != kNoDragRegion)
DrawDragRegion();
}
V547 Expression 'reservedBase < 0' is always false. Unsigned type value is never < 0. agp_gart.cpp 1172
/* address types */
typedef unsigned long int __haiku_addr_t; // <=
typedef __haiku_addr_t addr_t; // <=
static status_t
bind_aperture(...., addr_t reservedBase, ....)
{
....
if (status < B_OK) {
if (reservedBase < 0) // <=
aperture->DeleteMemory(memory);
return status;
}
....
}
V547 Expression 'nogscale >= 0' is always true. Unsigned type value is always >= 0. tvp3026.c 212
status_t mil2_dac_init (void)
{
uint32 rfhcnt, nogscale, memconfig;
....
for (nogscale = 1; nogscale >= 0; nogscale--) { // <=
int max = -1 + 33.2 * mclk / (nogscale? 1: 4);
for (rfhcnt = 15; rfhcnt > 0; rfhcnt--) {
int value = (rfhcnt & 0x0e) * 256 + (rfhcnt & 0x01) * 64;
LOG(2,("mil2_dac_init factor %d, rfhcnt %2d: %d ?<= %d\n",
nogscale, rfhcnt, value, max));
if (value <= max) goto rfhcnt_found;
}
}
....
}
V547 Expression 'p_bytes < 0' is always false. Unsigned type value is never < 0. memory_pool_static_malloc.cpp 159
void* MemoryPoolStaticMalloc::_realloc(void *p_memory,
size_t p_bytes) {
....
if (p_bytes<=0)
{
this->free(p_memory);
ERR_FAIL_COND_V( p_bytes < 0 , NULL );
return NULL;
}
....
}
V547 Expression 's < 0' is always false. Unsigned type value is never < 0. particles_2d.cpp 230
_FORCE_INLINE_ static float _rand_from_seed(uint32_t *seed)
{
....
uint32_t s = (*seed);
....
if (s < 0)
s += 2147483647;
....
}
V547 Expression is always false. Unsigned type value is never < 0. windowsapplication.cpp 1938
void FWindowsApplication::QueryConnectedMice()
{
....
if (GetRawInputDeviceInfoA(Device.hDevice, ....) < 0)
continue;
Name.Reset(new char[NameLen+1]);
if (GetRawInputDeviceInfoA(Device.hDevice, ....) < 0)
continue;
....
}
UINT WINAPI GetRawInputDeviceInfo(...);
V547 Expression 'nBit < 0' is always false. Unsigned type value is never < 0. bitmask.c 60
BOOL TestBit(LPBITS lpBits, UINT nBit)
{
UINT offset;
UCHAR mask;
if (nBit < 0 || !lpBits || !lpBits->m_lpBits)
return FALSE;
....
}
Similar errors can be found in some other places:
V547 Expression 'uTStates < 0' is always false. Unsigned type value is never < 0. z80.cpp 5507
static const double uZ80ClockMultiplier = CLK_Z80 / CLK_6502;
inline static ULONG ConvertZ80TStatesTo6502Cycles(UINT uTStates)
{
return (uTStates < 0) ?
0 : (ULONG) ((double)uTStates / uZ80ClockMultiplier);
}
V547 Expression is always true. Probably the '&&' operator should be used here. minigamederby.cxx 346
bool OnPlayerKeyStateChange(
int playerid, int newkeys, int oldkeys) override
{
if (newkeys == 1 || newkeys == 9 ||
newkeys == 33 && oldkeys != 1 ||
oldkeys != 9 || oldkeys != 33) // <=
{
AddVehicleComponent(Player[playerid].CurrentVehicle, 1010);
}
return true;
}
Similar errors can be found in some other places:
V547 Expression 'index >= 0' is always true. Unsigned type value is always >= 0. stunting.cxx 372
ZCMDF(tpx, PERMISSION_NONE,
RESTRICTION_NOT_IN_A_GAME | RESTRICTION_NOT_AFTER_FIGHT,
cmd_alias({}), "D")
{
if (parser.Good())
{
size_t index = (_StuntPark.Objects.size() - 1) -
parser.Get<unsigned long>();
if (index >= 0)
{
....
}
}
return true;
}
V547 Expression is always false. Unsigned type value is never < 0. esl.c 690
typedef SOCKET ws_socket_t;
static ws_socket_t prepare_socket(ips_t *ips)
{
ws_socket_t sock = ws_sock_invalid;
....
if ((sock = socket(family, SOCK_STREAM, IPPROTO_TCP)) < 0) {
die("Socket Error!\n");
}
....
}
V547 Expression 'fftstate->Perm == ((void *) 0)' is always false. Pointer 'fftstate->Perm' != NULL. fft.c 339
typedef struct {
unsigned int SpaceAlloced;
unsigned int MaxPermAlloced;
double Tmp0[MAXFFTSIZE];
double Tmp1[MAXFFTSIZE];
double Tmp2[MAXFFTSIZE];
double Tmp3[MAXFFTSIZE];
int Perm[MAXFFTSIZE];
int factor [NFACTOR];
} FFTstr;
static int FFTRADIX (...., FFTstr *fftstate)
{
....
if (fftstate->Tmp0 == NULL || fftstate->Tmp1 == NULL ||
fftstate->Tmp2 == NULL || fftstate->Tmp3 == NULL ||
fftstate->Perm == NULL) {
return -1;
}
....
}
V547 Expression is always false. Probably the '||' operator should be used here. nsmsgdbview.cpp 3014
class NS_NO_VTABLE nsMsgViewCommandType
{
enum
{
....
junk = 27,
unjunk = 28,
....
};
};
nsresult nsMsgDBView::
ApplyCommandToIndices(nsMsgViewCommandTypeValue command, ....)
{
....
if ((command == nsMsgViewCommandType::junk) &&
(command == nsMsgViewCommandType::unjunk))
....
}
V547 Expression '* i ++ < 0' is always false. Unsigned type value is never < 0. imonomaux.cpp 460
class IMonomAuxInterface {
public:
typedef unsigned Word;
typedef Word* MonomIterator;
typedef const Word* MonomConstIterator;
....
}
bool IMonomAuxInterface::assertValid(
IMonomAuxInterface::MonomConstIterator i) const
{
MonomConstIterator end1 = i + mEndVar;
do {
if (*i++ < 0)
return false;
} while(i < end1);
return true;
}
V547 Expression 'CurrentFileSize >= 0' is always true. Unsigned type value is always >= 0. buildpatchcompactifier.cpp 135
bool FBuildDataCompactifier::Compactify(....) const
{
....
uint64 CurrentFileSize;
....
CurrentFileSize = IFileManager::Get().FileSize(*File);
if (CurrentFileSize >= 0)
{
....
}
else
{
GLog->Logf(TEXT("Warning. ......"), *File);
}
....
}
V547 Expression 'i >= 0' is always true. Unsigned type value is always >= 0. compact.cpp 35
// Answer the index of the last occuppied OT entry
unsigned __stdcall ObjectMemory::lastOTEntry()
{
HARDASSERT(m_pOT);
unsigned i = m_nOTSize-1;
const OTE* pOT = m_pOT;
while (pOT[i].isFree())
{
ASSERT(i >= 0);
i--;
}
return i;
}
Similar errors can be found in some other places:
V547 Expression 'ch > 127' is always false. The value range of char type: [-128, 127]. decode.cpp 55
ostream& operator<<(ostream& stream, ....)
{
....
char ch = string->m_characters[i];
//if (ch = '\0') break;
if (ch < 32 || ch > 127) // <=
{
static char hexChars[16+1] = "0123456789ABCDEF";
....
}
....
}
V547 Expression 'srcIndex - src->left >= 0' is always true. Unsigned type value is always >= 0. sparsearraysegment.inl 355
class SparseArraySegmentBase
{
public:
static const uint32 MaxLength;
....
uint32 size;
....
}
template<typename T>
SparseArraySegment<T>* SparseArraySegment<T>::CopySegment(....,
uint32 srcIndex, ....)
{
....
AssertMsg(srcIndex - src->left >= 0, // <=
"src->left > srcIndex resulting in \
negative indexing of src->elements");
js_memcpy_s(dst->elements + dstIndex - dst->left,
sizeof(T) * inputLen,
src->elements + srcIndex - src->left,
sizeof(T) * inputLen);
return dst;
}
V547 Expression is always true. Probably the '&&' operator should be used here. bytecodegenerator.cpp 805
void ByteCodeGenerator::AssignRegister(Symbol *sym)
{
AssertMsg(sym->GetDecl() == nullptr ||
sym->GetDecl()->nop != knopConstDecl || // <=
sym->GetDecl()->nop != knopLetDecl, "...."); // <=
if (sym->GetLocation() == Js::Constants::NoRegister)
{
sym->SetLocation(NextVarRegister());
}
}
V547 Expression 'callSiteId >= 0' is always true. Unsigned type value is always >= 0. inline.cpp 1181
typedef uint16 ProfileId;
Func * Inline::BuildInlinee(Js::FunctionBody* funcBody, ....)
{
....
Js::ProfileId callSiteId = static_cast<Js::ProfileId>(....);
Assert(callSiteId >= 0);
....
}
Similar errors can be found in some other places:
V547 Expression 'val[0] == 0xEF' is always false. The value range of char type: [-128, 127]. file.cpp 462
bool File::IsUnicodeBOM(bool skip)
{
....
else if (m_options & fileOptionsText)
{
char val[3];
file.ReadString(val, 3);
found = (val[0] == 0xEF && val[1] == 0xBB && val[2] == 0xBF);
}
// restore pointer if no BOM or we aren't skipping it
if (!found || !skip)
{
SetPosition(pos);
}
....
}
V547 Expression '(SpeakerActivityMask & 0xC000) == 0x0C00' is always false. file_dts.cpp 196
std::string
DTS_HD_SpeakerActivityMask(int16u SpeakerActivityMask)
{
....
if ((SpeakerActivityMask&0xC000)==0x0C00)
....
}
Note that 0xC000 and 0x0C00 are used. Apparently these values should have been the same.
Similar errors can be found in some other places:
V547 Expression is always true. Probably the '&&' operator should be used here. qla_hw.c 799
static int
qla_tx_tso(qla_host_t *ha, struct mbuf *mp, ....)
{
....
if ((*tcp_opt != 0x01) || (*(tcp_opt + 1) != 0x01) ||
(*(tcp_opt + 2) != 0x08) || (*(tcp_opt + 2) != 10)) { // <=
return -1;
}
....
}
Similar errors can be found in some other places:
V547 Expression 'cdb[0] != 0x28 || cdb[0] != 0x2A' is always true. Probably the '&&' operator should be used here. mfi_tbolt.c 1110
int
mfi_tbolt_send_frame(struct mfi_softc *sc, struct mfi_command*cm)
{
....
if (cdb[0] != 0x28 || cdb[0] != 0x2A) { // <=`
if ((req_desc = mfi_tbolt_build_mpt_cmd(sc, cm)) == NULL) {
device_printf(sc->mfi_dev, "Mapping from MFI "
"to MPT Failed \n");
return 1;
}
}
else
device_printf(sc->mfi_dev, "DJA NA XXX SYSPDIO\n");
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. igmp.c 1939
static void
igmp_v3_suppress_group_record(struct in_multi *inm)
{
....
if (inm->inm_state != IGMP_G_QUERY_PENDING_MEMBER ||
inm->inm_state != IGMP_SG_QUERY_PENDING_MEMBER)
return;
....
}
V547 Expression 'j >= 0' is always true. Unsigned type value is always >= 0. safe.c 1596
static void
safe_mcopy(struct mbuf *srcm, struct mbuf *dstm, u_int offset)
{
u_int j, dlen, slen; // <=
caddr_t dptr, sptr;
/*
* Advance src and dst to offset.
*/
j = offset;
while (j >= 0) { // <=
if (srcm->m_len > j)
break;
j -= srcm->m_len; // <=
srcm = srcm->m_next;
if (srcm == NULL)
return;
}
sptr = mtod(srcm, caddr_t) + j;
slen = srcm->m_len - j;
j = offset;
while (j >= 0) { // <=
if (dstm->m_len > j)
break;
j -= dstm->m_len; // <=
dstm = dstm->m_next;
if (dstm == NULL)
return;
}
dptr = mtod(dstm, caddr_t) + j;
dlen = dstm->m_len - j;
....
}
Similar errors can be found in some other places:
V547 Expression is always false. Unsigned type value is never < 0. dt_subr.c 715
#define vsnprintf RTStrPrintfV
int
dt_printf(dtrace_hdl_t *dtp, FILE *fp, const char *format, ...)
{
....
if (vsnprintf(
&dtp->dt_buffered_buf[dtp->dt_buffered_offs],
avail,
format,
ap) < 0) { // <=
rval = dt_set_errno(dtp, errno);
va_end(ap);
return (rval);
}
....
}
size_t RTStrPrintfV(char *, size_t, const char *, va_list args); int vsnprintf (char *, size_t, const char *, va_list arg );
V547 Expression 'sd >= 0' is always true. Unsigned type value is always >= 0. vboxservicevminfo.cpp 1086
static int vgsvcVMInfoWriteNetwork(void)
{
....
SOCKET sd = WSASocket(AF_INET, SOCK_DGRAM, 0, 0, 0, 0);
....
if (pAdpInfo)
RTMemFree(pAdpInfo);
if (sd >= 0) // <=
closesocket(sd);
....
}
V547 Expression is always false. Probably the '||' operator should be used here. entity.cpp 3537
enum RenderType {
....
RT_BRUSH = 4,
RT_FIELDBRUSH = 8,
....
};
void
CEntity::DumpSync_t(CTStream &strm, INDEX iExtensiveSyncCheck)
{
....
if( en_pciCollisionInfo == NULL) {
strm.FPrintF_t("Collision info NULL\n");
} else if (en_RenderType==RT_BRUSH && // <=
en_RenderType==RT_FIELDBRUSH) { // <=
strm.FPrintF_t("Collision info: Brush entity\n");
} else {
....
}
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. propertycombobar.cpp 1853
CEntity *CPropertyComboBar::GetSelectedEntityPtr(void)
{
// obtain selected property ID ptr
CPropertyID *ppidProperty = GetSelectedProperty();
// if there is valid property selected
if( (ppidProperty == NULL) ||
(ppidProperty->pid_eptType != CEntityProperty::EPT_ENTITYPTR) ||
(ppidProperty->pid_eptType != CEntityProperty::EPT_PARENT) )
{
return NULL;
}
....
}
V547 Expression 'ulUsedShadowMemory >= 0' is always true. Unsigned type value is always >= 0. gfxlibrary.cpp 1693
void CGfxLibrary::ReduceShadows(void)
{
ULONG ulUsedShadowMemory = ....;
....
ulUsedShadowMemory -= sm.Uncache(); // <=
ASSERT( ulUsedShadowMemory>=0); // <=
....
}
V547 Expression 'achrLine != ""' is always true. To compare strings you should use strcmp() function. worldeditor.cpp 2254
void CWorldEditorApp::OnConvertWorlds()
{
....
char achrLine[256]; // <=
CTFileStream fsFileList;
// count lines in list file
try {
fsFileList.Open_t( fnFileList);
while( !fsFileList.AtEOF()) {
fsFileList.GetLine_t( achrLine, 256);
// increase counter only for lines that are not blank
if( achrLine != "") ctLines++; // <=
}
fsFileList.Close();
}
....
}
if(strcmp(achrLine, "") != 0) ctLines++;
Similar errors can be found in some other places:
V547 Expression '(int) startOutPoints.size() % 2 != 2' is always true. rasterselection.cpp 852
TStroke getIntersectedStroke(TStroke &stroke, TRectD bbox)
{
....
for (t = 0; t < (int)outPoints.size(); t++)
addPointToVector(...., (int)startOutPoints.size() % 2 != 2);
....
}
V547 Expression is always false. Unsigned type value is never < 0. spl_directory.c 2886
#define MIN(a, b) (((a)<(b))?(a):(b))
#define MAX(a, b) (((a)>(b))?(a):(b))
SPL_METHOD(SplFileObject, fwrite)
{
....
size_t str_len;
zend_long length = 0;
....
str_len = MAX(0, MIN((size_t)length, str_len));
....
}
V547 Expression 'bdb->bdb_page.getPageNum() >= 0' is always true. Unsigned type value is always >= 0. cch.cpp 4827
static bool write_page(thread_db* tdbb, BufferDesc* bdb, ....)
{
....
if (bdb->bdb_page.getPageNum() >= 0)
....
}
V547 Expression 'newSize < 0' is always false. Unsigned type value is never < 0. update.cpp 254
STDMETHODIMP COutMultiVolStream::SetSize(UInt64 newSize)
{
if (newSize < 0) // <=
return E_INVALIDARG;
....
}
Similar errors can be found in some other places:
V547 Expression is always true. Probably the '&&' operator should be used here. configs_dumper.cpp 262
void configs_dumper::dumper_thread(void* my_ptr)
{
....
DWORD wait_result = WaitForSingleObject(
this_ptr->m_make_start_event, INFINITE);
while ( wait_result != WAIT_ABANDONED) ||
(wait_result != WAIT_FAILED))
....
}
V547 Expression 'squad->get_index(this) == u32(- 1)' is always false. The value range of unsigned char type: [0, 255]. ai_rat.cpp 480
void CAI_Rat::UpdateCL()
{
....
if (!Useful()) {
inherited::UpdateCL ();
Exec_Look (Device.fTimeDelta);
CMonsterSquad *squad = monster_squad().get_squad(this);
if (squad && ((squad->GetLeader() != this &&
!squad->GetLeader()->g_Alive()) ||
squad->get_index(this) == u32(-1)))
squad->SetLeader(this);
....
}
....
}
V547 Expression 'm_tActionCondition.m_tLifeTime >= 0' is always true. Unsigned type value is always >= 0. script_entity_action_inline.h 115
namespace ALife
{
typedef u64 _TIME_ID;
}
ALife::_TIME_ID CScriptActionCondition::m_tLifeTime;
IC bool CScriptEntityAction::CheckIfTimeOver()
{
return((m_tActionCondition.m_tLifeTime >= 0) &&
((m_tActionCondition.m_tStartTime +
m_tActionCondition.m_tLifeTime)
< Device.dwTimeGlobal));
}
Similar errors can be found in some other places:
V547 Expression 's->sock_fd < 0' is always false. Unsigned type value is never < 0. socketmodule.c 655
#ifdef MS_WINDOWS
typedef SOCKET SOCKET_T;
#else
typedef int SOCKET_T;
#endif
typedef struct {
PyObject_HEAD
SOCKET_T sock_fd; /* Socket file descriptor */
....
} PySocketSockObject;
static int
internal_select(PySocketSockObject *s,
int writing,
_PyTime_t interval,
int connect)
{
....
if (s->sock_fd < 0) // <=
return 0;
....
}
V547 Expression 'pszScript[iSrcBufPos] != '=='' is always true. The value range of char type: [-128, 127]. luadbg.cpp 716
bool CLUADbg::LoadFile(const char* pszFile, bool bForceReload)
{
FILE* hFile = NULL;
char* pszScript = NULL, * pszFormattedScript = NULL;
....
while (pszScript[iSrcBufPos] != ' ' &&
....
pszScript[iSrcBufPos] != '=' &&
pszScript[iSrcBufPos] != '==' && // <=
pszScript[iSrcBufPos] != '*' &&
pszScript[iSrcBufPos] != '+' &&
pszScript[iSrcBufPos] != '/' &&
pszScript[iSrcBufPos] != '~' &&
pszScript[iSrcBufPos] != '"')
{}
....
}
V547 Expression 'm_socket < 0' is always false. Unsigned type value is never < 0. servicenetwork.cpp 585
typedef SOCKET CRYSOCKET;
// Internal socket data
CRYSOCKET m_socket;
bool CServiceNetworkConnection::TryReconnect()
{
....
// Create new socket if needed
if (m_socket == 0)
{
m_socket = CrySock::socketinet();
if (m_socket < 0)
{
....
return false;
}
}
....
}
V547 Expression '"audio_playback_mute"' is always true. core im_container.cpp 329
void core::im_container::on_voip_call_message(....)
{
....
} else if (type == "update") {
....
} else if (type == "voip_set_window_offsets") {
....
} else if (type == "voip_reset") {
....
else if ("audio_playback_mute")
{
const std::string mode = _params.get_value_as_string("mute");
im->on_voip_set_mute(mode == "on");
}
else {
assert(false);
}
}
V547 Expression 'type.Lower() == "Array"' is always false. NodeJSOuptutParser.h 61
struct NodeJSHandle {
wxString type;
....
bool IsString() const {return type.Lower() == "string";}
bool IsArray() const {return type.Lower() == "Array"; } // <=
};
V547 Expression is always true. Probably the '&&' operator should be used here. LoopInterchange.cpp 208
static bool containsNoDependence(CharMatrix &DepMatrix,
unsigned Row,
unsigned Column) {
for (unsigned i = 0; i < Column; ++i) {
if (DepMatrix[Row][i] != '=' || DepMatrix[Row][i] != 'S' ||
DepMatrix[Row][i] != 'I')
return false;
}
return true;
}
V547 Expression '"R"' is always true. PDA.cpp 90
ParticlesDataMutable* readPDA(....)
{
....
if(word == "V"){
attrs.push_back(simple->addAttribute(....);
}else if("R"){ // <=
attrs.push_back(simple->addAttribute(....);
}else if("I"){ // <=
attrs.push_back(simple->addAttribute(....);
}
....
}
V547 Expression 'buffer[0] == '\r' && buffer[0] == '\n ' ' is always false. Probably the '||' operator should be used here. hdr_reader.cpp 84
unsigned char *loadHdr(....)
{
....
if (! fgets(buffer, MAXLINE, fp)) goto error;
if (buffer[0] == '\n') break;
if (buffer[0] == '\r' && buffer[0] == '\n') break; // <=
....
}
V547 Expression '(ptr[3] & 0x1E) != 0x03' is always true. sd.c 4115
int ext_sd_send_cmd_get_rsp(struct rtsx_chip *chip,
u8 cmd_idx, u32 arg, u8 rsp_type,
u8 *rsp, int rsp_len, bool special_check)
{
int retval;
int timeout = 100;
u16 reg_addr;
u8 *ptr;
....
if (cmd_idx == SELECT_CARD) {
if (rsp_type == SD_RSP_TYPE_R2) {
if ((ptr[3] & 0x1E) != 0x04) {
rtsx_trace(chip);
return STATUS_FAIL;
}
} else if (rsp_type == SD_RSP_TYPE_R0) {
if ((ptr[3] & 0x1E) != 0x03) { // <=
rtsx_trace(chip);
return STATUS_FAIL;
}
}
}
....
}
V547 Expression 'block' is always true. svclock.c 873
void
nlmsvc_grant_reply(struct nlm_cookie *cookie, __be32 status)
{
struct nlm_block *block;
dprintk("grant_reply: looking for cookie %x, s=%d \n",
*(unsigned int *)(cookie->data), status);
if (!(block = nlmsvc_find_block(cookie)))
return;
if (block) {
if (status == nlm_lck_denied_grace_period) {
/* Try again in a couple of seconds */
nlmsvc_insert_block(block, 10 * HZ);
} else {
/* Lock is now held by client, or has been rejected.
* In both cases, the block should be removed. */
nlmsvc_unlink_block(block);
}
}
nlmsvc_release_block(block);
}
V547 Expression 'sym' is always true. menu.c 498
bool menu_is_visible(struct menu *menu)
{
struct menu *child;
struct symbol *sym;
....
if (!sym || sym_get_tristate_value(menu->sym) == no) // <=
return false;
for (child = menu->list; child; child = child->next) {
if (menu_is_visible(child)) {
if (sym) // <=
sym->flags |= SYMBOL_DEF_USER;
return true;
}
}
return false;
}
V547 Expression is always false. Probably the '||' operator should be used here. SpellEffects.cpp 2872
void Spell::EffectEnchantItemTmp(SpellEffectIndex eff_idx)
{
....
// TODO: Strange stuff in following code
// shaman family enchantments
if (....)
duration = 300;
else if (m_spellInfo->SpellIconID == 241 &&
m_spellInfo->Id != 7434)
duration = 3600;
else if (m_spellInfo->Id == 28891 && // <=
m_spellInfo->Id == 28898) // <=
duration = 3600;
....
}
Similar errors can be found in some other places:
V547 Expression 'cfgflags >= 0 || cfgflags <= 3' is always true. hwpmc_piv.c 812
static int
p4_config_pmc(int cpu, int ri, struct pmc *pm)
{
....
int cfgflags, cpuflag;
....
KASSERT(cfgflags >= 0 || cfgflags <= 3,
("[p4,%d] illegal cfgflags cfg=%d on cpu=%d ri=%d",
__LINE__, cfgflags, cpu, ri));
....
KASSERT(cfgflags >= 0 || cfgflags <= 3,
("[p4,%d] illegal runcount cfg=%d on cpu=%d ri=%d",
__LINE__, cfgflags, cpu, ri));
....
}
Similar errors can be found in some other places:
V547 Expression 'sock < 0' is always false. Unsigned type value is never < 0. sys_net.cpp 695
#ifdef _WIN32
using socket_t = SOCKET;
#else
using socket_t = int;
#endif
s32 socket(s32 family, s32 type, s32 protocol)
{
....
socket_t sock = ::socket(family, type, protocol);
if (sock < 0)
{
libnet.error("socket()....", get_errno() = get_last_error());
return -1;
}
....
}
V547 Expression is always false. Unsigned type value is never < 0. ng_nat.c 374
unsigned int
LibAliasSetMode(struct libalias *, unsigned int _flags,
unsigned int _mask);
static int
ng_nat_rcvmsg(node_p node, item_p item, hook_p lasthook)
{
....
if (LibAliasSetMode(priv->lib,
ng_nat_translate_flags(mode->flags),
ng_nat_translate_flags(mode->mask)) < 0) {
error = ENOMEM;
break;
}
....
}
V547 Expression is always false. scif_sas_controller.c 531
....
U16 max_ncq_depth;
....
SCI_STATUS scif_user_parameters_set(
SCI_CONTROLLER_HANDLE_T controller,
SCIF_USER_PARAMETERS_T * scif_parms
)
{
....
if (scif_parms->sas.max_ncq_depth < 1 &&
scif_parms->sas.max_ncq_depth > 32)
return SCI_FAILURE_INVALID_PARAMETER_VALUE;
....
}
V547 Expression 'outArrIndices[i] < 0' is always false. Unsigned type value is never < 0. CGFLoader.cpp 881
static bool CompactBoneVertices(....,
DynArray<uint16>& outArrIndices, ....) // <= uint16
{
....
outArrIndices.resize(3 * inFaceCount, -1);
int outVertexCount = 0;
for (int i = 0; i < verts.size(); ++i)
{
....
outArrIndices[....] = outVertexCount - 1;
}
// Making sure that the code above has no bugs // <= LOL
for (int i = 0; i < outArrIndices.size(); ++i)
{
if (outArrIndices[i] < 0) // <= LOL
{
return false;
}
}
return true;
}
V547 Expression 'to_unref' is always false. master_session.cc 1114
Status MasterSession::StartStep(const BuildGraphOptions& opts,
int64* count,
ReffedClientGraph** rcg,
bool is_partial) {
....
ReffedClientGraph* to_unref = nullptr;
....
if (to_unref) to_unref->Unref();
....
}
V547 Expression 'ce->off >= 0' is always true. Unsigned type value is always >= 0. image.c 147
typedef ULong DiOffT;
typedef
struct {
Bool fromC;
DiOffT off;
SizeT size;
SizeT used;
UChar data[];
}
CEnt;
static Bool is_sane_CEnt ( .... )
{
....
CEnt* ce = img->ces[i];
....
if (!(ce->size == CACHE_ENTRY_SIZE)) goto fail;
if (!(ce->off >= 0)) goto fail; // <=
if (!(ce->off + ce->used <= img->real_size)) goto fail;
....
}
V547 Expression '((void *) 0)' is always false. server.c 110
#define NULL ((void *) 0)
void reset_valgrind_sink(const char *info)
{
if (VG_(log_output_sink).fd != initial_valgrind_sink.fd
&& initial_valgrind_sink_saved) {
VG_(log_output_sink).fd = initial_valgrind_sink.fd;
VG_(umsg) ("Reset valgrind output to log (%s)\n",
(info = NULL ? "" : info)); // <=
}
}
Most likely this is what should be written here: (info == NULL ? "" : info)
V547 Expression is always false. pcm_extplug.c 769
int snd_pcm_extplug_set_slave_param_list(
snd_pcm_extplug_t *extplug, int type, unsigned int num_list,
const unsigned int *list)
{
extplug_priv_t *ext = extplug->pcm->private_data;
if (type < 0 && type >= SND_PCM_EXTPLUG_HW_PARAMS) { // <=
SNDERR("EXTPLUG: invalid parameter type %d", type);
return -EINVAL;
}
return snd_ext_parm_set_list(&ext->sparams[type],
num_list, list);
}
Most likely this is what should be written here: (type < 0 || type >= SND_PCM_EXTPLUG_HW_PARAMS)
Similar errors can be found in some other places:
V547 Expression 'pathPosEnd >= 0' is always true. Unsigned type value is always >= 0. new_fmode.cpp 566
class String : public OStream
{
....
static const size_t npos = INT_MAX;
size_t find(char c, size_t pos = 0) const {
char * res = (char *)memchr(begin_ + pos, c, size() - pos);
if (res == 0) return npos;
else return res - begin_;
}
....
};
PosibErr<FilterModeList *> FilterModeList::get_new(
const String & key, const Config *)
{
....
String possMode;
....
unsigned pathPos = 0;
unsigned pathPosEnd = 0;
....
while ( ( (pathPosEnd =
possMode.find('/',pathPos)) < possMode.size() )
&& ( pathPosEnd >= 0 ) ) {
pathPos = pathPosEnd + 1;
}
....
}
V547 Expression 'epos >= 0' is always true. Unsigned type value is always >= 0. scim_anthy_style_file.cpp 103
StyleLineType StyleLine::get_type (void)
{
....
unsigned int spos, epos;
....
for (epos = m_line.length () - 1;
epos >= 0 && isspace (m_line[epos]);
epos--);
....
}
Similar errors can be found in some other places:
V547 Expression is always true. Probably the '&&' operator should be used here. bluetooth-hid.c 229
typedef enum {
BT_HID_MOUSE_BUTTON_NONE = 0x00,
BT_HID_MOUSE_BUTTON_LEFT = 0x01,
BT_HID_MOUSE_BUTTON_RIGHT = 0x02,
BT_HID_MOUSE_BUTTON_MIDDLE = 0x04
} bt_hid_mouse_button_e;
int bt_hid_device_send_mouse_event(const char *remote_address,
const bt_hid_mouse_data_s *mouse_data)
{
....
if (mouse_data->buttons != BT_HID_MOUSE_BUTTON_LEFT ||
mouse_data->buttons != BT_HID_MOUSE_BUTTON_RIGHT ||
mouse_data->buttons != BT_HID_MOUSE_BUTTON_MIDDLE) {
return BT_ERROR_INVALID_PARAMETER;
}
....
}
V547 Expression 'm_candiPageFirst < 0' is always false. Unsigned type value is never < 0. imi_view_classic.cpp 201
unsigned m_candiPageFirst;
bool
CIMIClassicView::onKeyEvent(const CKeyEvent& key)
{
....
if (m_candiPageFirst > 0) {
m_candiPageFirst -= m_candiWindowSize;
if (m_candiPageFirst < 0) m_candiPageFirst = 0;
changeMasks |= CANDIDATE_MASK;
}
....
}
V547 Expression 'itemData' is always true. QuickAccess.cpp 571
void
QuickAccess::_grid_mostVisited_del(void *data, Evas_Object *)
{
BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__);
if (data) { // <=
auto itemData = static_cast<HistoryItemData*>(data); // <=
if (itemData) // <=
delete itemData;
}
}
Similar errors can be found in some other places:
V547 Expression 'strlen(s_formatted) < 128' is always true. clock.c 503
#define CLOCK_STR_LEN 128
void indicator_get_time_by_region(char* output,void *data)
{
....
char s_formatted[CLOCK_STR_LEN] = { 0, };
....
if (strlen(s_formatted) < CLOCK_STR_LEN) { // <=
strncpy(output, s_formatted, strlen(s_formatted));
}
else {
strncpy(output, s_formatted, CLOCK_STR_LEN - 1);
}
return;
}
V547 Expression 'doc != NULL' is always true. setting-common-data-slp-setting.c 1450
static void _parseLangListXML(char *docname)
{
SETTING_TRACE_BEGIN;
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(docname);
if (doc == NULL) {
fprintf(stderr, "Document not parsed successfully. \n");
return;
}
....
if (doc != NULL) {
xmlFreeDoc(doc);
}
return;
}
V547 Expression '(status < 500) && (status > 599)' is always false. ecore_con_url.c 351
static void
_ecore_con_url_dialer_error(void *data, const Efl_Event *event)
{
Ecore_Con_Url *url_con = data;
Eina_Error *perr = event->info;
int status;
status =
efl_net_dialer_http_response_status_get(url_con->dialer);
if ((status < 500) && (status > 599))
{
DBG("HTTP error %d reset to 1", status);
status = 1; /* not a real HTTP error */
}
WRN("HTTP dialer error url='%s': %s",
efl_net_dialer_address_dial_get(url_con->dialer),
eina_error_msg_get(*perr));
_ecore_con_event_url_complete_add(url_con, status);
}
Similar errors can be found in some other places:
V547 Expression 'match' is always true. eina_rectangle.c 798
EAPI void
eina_rectangle_pool_release(Eina_Rectangle *rect)
{
Eina_Rectangle *match;
Eina_Rectangle_Alloc *new;
....
match =(Eina_Rectangle *) (new + 1);
if (match)
era->pool->empty = _eina_rectangle_skyline_list_update(
era->pool->empty, match);
....
}
V547 Expression 's' is always true. evas_object_smart.c 160
EAPI const void *
evas_object_smart_interface_get(const Evas_Object *eo_obj,
const char *name)
{
Evas_Smart *s;
....
s = evas_object_smart_smart_get(eo_obj);
if (!s) return NULL;
if (s)
....
}
Similar errors can be found in some other places:
V547 Expression 'val > 0xffffu' is always false. The value range of unsigned short type: [0, 65535]. FunctionsCoding.h 339
static void ipv6_scan(const char * src, unsigned char * dst)
{
....
uint16_t val{};
unsigned char * colonp = nullptr;
while (const auto ch = *src++)
{
const auto num = unhex(ch);
if (num != -1)
{
val <<= 4;
val |= num;
if (val > 0xffffu) // <=
return clear_dst();
....
}
V547 Expression 'offset > 0' is always true. FunctionsCoding.h 649
static void formatIP(UInt32 ip, char *& out)
{
....
for (size_t offset = 8; offset <= 24; offset += 8)
{
if (offset > 0)
*(out++) = '.';
....
}
V547 Expression 'middleMeasure != 0' is always false. ove.cpp 7852
bool
getMiddleUnit(...., Measure* middleMeasure, int& middleUnit) {
....
}
void OveOrganizer::organizeWedge(....) {
....
Measure* middleMeasure = NULL;
int middleUnit = 0;
getMiddleUnit(
ove_, part, track,
measure, ove_->getMeasure(bar2Index),
wedge->start()->getOffset(), wedge->stop()->getOffset(),
middleMeasure, middleUnit);
if( middleMeasure != 0 ) { // <=
WedgeEndPoint* midStopPoint = new WedgeEndPoint();
measureData->addMusicData(midStopPoint);
midStopPoint->setTick(wedge->getTick());
midStopPoint->start()->setOffset(middleUnit);
midStopPoint->setWedgeStart(false);
midStopPoint->setWedgeType(WedgeType::Cres_Line);
midStopPoint->setHeight(wedge->getHeight());
WedgeEndPoint* midStartPoint = new WedgeEndPoint();
measureData->addMusicData(midStartPoint);
midStartPoint->setTick(wedge->getTick());
midStartPoint->start()->setOffset(middleUnit);
midStartPoint->setWedgeStart(true);
midStartPoint->setWedgeType(WedgeType::Decresc_Line);
midStartPoint->setHeight(wedge->getHeight());
}
}
....
}
Typo: middleMeasure and middleUnit.
V547 Expression 'error == 2' is always false. mididriver.cpp 126
#define ENOENT 2
bool AlsaMidiDriver::init()
{
int error = snd_seq_open(&alsaSeq, "hw", ....);
if (error < 0) {
if (error == ENOENT)
qDebug("open ALSA sequencer failed: %s",
snd_strerror(error));
return false;
}
....
}
V547 Expression '!beamedSomething' is always true. SegmentNotationHelper.cpp 1405
void SegmentNotationHelper::makeBeamedGroupAux(....)
{
int groupId = segment().getNextId();
bool beamedSomething = false; // <=
for (iterator i = from; i != to; ++i) {
....
if ((*i)->isa(Note::EventType) &&
(*i)->getNotationDuration() >= Note(....).getDuration()) {
if (!beamedSomething) continue; // <=
iterator j = i;
bool somethingLeft = false;
while (++j != to) {
if ((*j)->getType() == Note::EventType &&
(*j)->getNotationAbsoluteTime() > (*i)->get....() &&
(*j)->getNotationDuration() < Note(....).getDuration()) {
somethingLeft = true;
break;
}
}
if (!somethingLeft) continue;
}
....
}
V547 Expression 'i > 5' is always false. SegmentParameterBox.cpp 323
void SegmentParameterBox::initBox()
{
....
for (int i = 0; i < 6; i++) {
timeT time = 0;
if (i > 0 && i < 6) {
time = Note(Note::Hemidemisemiquaver).get.... << (i - 1);
} else if (i > 5) {
time = Note(Note::Crotchet).getDuration() * (i - 4);
}
....
}
V547 Expression 'adjustedOctave < 8' is always false. NotePixmapFactory.cpp 1920
QGraphicsPixmapItem* NotePixmapFactory::makeClef(....)
{
....
int oct = clef.getOctaveOffset();
if (oct == 0) return plain.makeItem();
int adjustedOctave = (8 * (oct < 0 ? -oct : oct));
if (adjustedOctave > 8)
adjustedOctave--;
else if (adjustedOctave < 8)
adjustedOctave++;
....
}
V547 Expression '""' is always true. LilyPondOptionsDialog.cpp 64
LilyPondOptionsDialog::LilyPondOptionsDialog(....)
{
setModal(true);
setWindowTitle((windowCaption = "" ?
tr("LilyPond Export/Preview") : windowCaption));
....
}
Similar errors can be found in some other places:
V547 Expression 'strlen(buf) < 256' is always true. vst_info_file.cc 262
static char *
read_string (FILE *fp)
{
char buf[MAX_STRING_LEN];
if (!fgets (buf, MAX_STRING_LEN, fp)) {
return 0;
}
if (strlen (buf) < MAX_STRING_LEN) {
if (strlen (buf)) {
buf[strlen (buf)-1] = 0;
}
return strdup (buf);
} else {
return 0;
}
}
V547 Expression is always false. sphinx.cpp 22416
enum ESphBinRead
{
BIN_READ_OK, ///< bin read ok
BIN_READ_EOF, ///< bin end
BIN_READ_ERROR, ///< bin read error
BIN_PRECACHE_OK, ///< precache ok
BIN_PRECACHE_ERROR ///< precache failed
};
ESphBinRead CSphBin::ReadBytes ( void * pDest, int iBytes )
{
....
return BIN_READ_EOF;
....
return BIN_READ_ERROR;
....
return BIN_READ_OK;
}
static void DictReadEntry (....)
{
....
if ( pBin->ReadBytes ( pKeyword, iKeywordLen )<0 ) // <=
{
assert ( pBin->IsError() );
return;
}
....
}
V547 CWE-570 Expression 'truncated' is always false. objects.cc 2867
void String::StringShortPrint(StringStream* accumulator,
bool show_details) {
int len = length();
if (len > kMaxShortPrintLength) {
accumulator->Add("<Very long string[%u]>", len);
return;
}
if (!LooksValid()) {
accumulator->Add("<Invalid String>");
return;
}
StringCharacterStream stream(this);
bool truncated = false;
if (len > kMaxShortPrintLength) {
len = kMaxShortPrintLength;
truncated = true;
}
bool one_byte = true;
for (int i = 0; i < len; i++) {
uint16_t c = stream.GetNext();
if (c < 32 || c >= 127) {
one_byte = false;
}
}
stream.Reset(this);
if (one_byte) {
if (show_details)
accumulator->Add("<String[%u]: ", length());
for (int i = 0; i < len; i++) {
accumulator->Put(static_cast<char>(stream.GetNext()));
}
if (show_details) accumulator->Put('>');
} else {
// Backslash indicates that the string contains control
// characters and that backslashes are therefore escaped.
if (show_details)
accumulator->Add("<String[%u]\\: ", length());
for (int i = 0; i < len; i++) {
uint16_t c = stream.GetNext();
if (c == '\n') {
accumulator->Add("\\n");
} else if (c == '\r') {
accumulator->Add("\\r");
} else if (c == '\\') {
accumulator->Add("\\\\");
} else if (c < 32 || c > 126) {
accumulator->Add("\\x%02x", c);
} else {
accumulator->Put(static_cast<char>(c));
}
}
if (truncated) { // <=
accumulator->Put('.');
accumulator->Put('.');
accumulator->Put('.');
}
if (show_details) accumulator->Put('>');
}
return;
}
V547 CWE-570 Expression 'inf == - 1' is always false. string-stream.cc 149
void StringStream::Add(....) {
....
case 'f': case 'g': case 'G': case 'e': case 'E': {
double value = current.data_.u_double_;
int inf = std::isinf(value);
if (inf == -1) {
Add("-inf");
} else if (inf == 1) {
Add("inf");
} else if (std::isnan(value)) {
Add("nan");
} else {
EmbeddedVector<char, 28> formatted;
SNPrintF(formatted, temp.start(), value);
Add(formatted.start());
}
break;
} ....
}
Description of the std::isinf function: http://en.cppreference.com/w/cpp/numeric/math/isinf As you can see, the function std::isinf returns the bool type. Thus, the function is clearly used incorrectly.
V547 CWE-571 Expression is always true. time.cc 83
static const int kDaysInMonth[13] = {
0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
bool ValidateDateTime(const DateTime& time) {
if (time.year < 1 || time.year > 9999 ||
time.month < 1 || time.month > 12 ||
time.day < 1 || time.day > 31 ||
time.hour < 0 || time.hour > 23 ||
time.minute < 0 || time.minute > 59 ||
time.second < 0 || time.second > 59) {
return false;
}
if (time.month == 2 && IsLeapYear(time.year)) {
return time.month <= kDaysInMonth[time.month] + 1;
} else {
return time.month <= kDaysInMonth[time.month];
}
}
Details: https://www.viva64.com/en/b/0550/
Similar errors can be found in some other places:
V547 CWE-570 Expression 'c1 == c' is always false. rune.cc 247
typedef signed int Rune;
enum
{
UTFmax = 4,
Runesync = 0x80,
Runeself = 0x80,
Runeerror = 0xFFFD,
Runemax = 0x10FFFF,
};
char*
utfrune(const char *s, Rune c)
{
long c1;
Rune r;
int n;
if(c < Runesync) /* not part of utf sequence */
return strchr((char*)s, c);
for(;;) {
c1 = *(unsigned char*)s;
if(c1 < Runeself) { /* one byte rune */
if(c1 == 0)
return 0;
if(c1 == c) // <=
return (char*)s;
s++;
continue;
}
n = chartorune(&r, s);
if(r == c)
return (char*)s;
s += n;
}
return 0;
}
If the variable c < 0x80, the function ends its work. This means that the value of a variable (c)>= 0x80. A comparison, interesting for us is performed only in case if c1 < 0x80. If c >= 80 and c1 < 0x80, the c==c1 a condition will always be false.
V547 CWE-571 Expression 'allDone' is always true. skopcontour.cpp 43
SkOpSpan* SkOpContour::undoneSpan() {
SkOpSegment* testSegment = &fHead;
bool allDone = true;
do {
if (testSegment->done()) {
continue;
}
allDone = false;
return testSegment->undoneSpan();
} while ((testSegment = testSegment->next()));
if (allDone) {
fDone = true;
}
return nullptr;
}
Very suspicious code, but it is difficult for me to understand what is the actual error here.
V547 CWE-570 Expression '!first' is always false. webmediaconstraints.cpp 302
WebString StringConstraint::ToString() const {
....
bool first = true;
for (const auto& iter : exact_) {
if (!first)
builder.Append(", ");
builder.Append('"');
builder.Append(iter);
builder.Append('"');
}
....
}
As the first variable is always true, the commas between items will not be added.
V547 CWE-571 Expression is always true. mtrr.c 692
void
pat_init(void)
{
boolean_t istate;
uint64_t pat;
if (!(cpuid_features() & CPUID_FEATURE_PAT))
return;
istate = ml_set_interrupts_enabled(FALSE);
pat = rdmsr64(MSR_IA32_CR_PAT);
DBG("CPU%d PAT: was 0x%016llx\n", get_cpu_number(), pat);
/* Change PA6 attribute field to WC if required */
if ((pat & ~(0x0FULL << 48)) != (0x01ULL << 48)) {
mtrr_update_action(CACHE_CONTROL_PAT);
}
ml_set_interrupts_enabled(istate);
}
The expression pat & [0xFFF0FFFFFFFFFFFF] can not result in the value 0x0001000000000000. So, the condition is always true. And the function mtrr_update_action is always called.
V547 CWE-571 Expression 'i == 0' is always true. at91_mci.c 196
static void at91_mci_init_dma_read(struct at91_mci *mci)
{
rt_uint8_t i;
....
for (i = 0; i < 1; i++)
{
/* Check to see if this needs filling */
if (i == 0)
{
if (at91_mci_read(AT91_PDC_RCR) != 0)
{
mci_dbg("Transfer active in current\n");
continue;
}
}
else {
if (at91_mci_read(AT91_PDC_RNCR) != 0)
{
mci_dbg("Transfer active in next\n");
continue;
}
}
length = data->blksize * data->blks;
mci_dbg("dma address = %08X, length = %d\n",
data->buf, length);
if (i == 0)
{
at91_mci_write(AT91_PDC_RPR, (rt_uint32_t)(data->buf));
at91_mci_write(AT91_PDC_RCR, .....);
}
else
{
at91_mci_write(AT91_PDC_RNPR, (rt_uint32_t)(data->buf));
at91_mci_write(AT91_PDC_RNCR, .....);
}
}
....
}
Similar errors can be found in some other places:
V547 CWE-570 Expression 'idx < 0' is always false. fsl_flexcomm.c 133
uint32_t FLEXCOMM_GetInstance(void *base)
{
int i;
for (i = 0; i < FSL_FEATURE_SOC_FLEXCOMM_COUNT; i++)
{
if ((uint32_t)base == s_flexcommBaseAddrs[i])
{
return i;
}
}
assert(false);
return 0;
}
status_t FLEXCOMM_Init(void *base, FLEXCOMM_PERIPH_T periph)
{
int idx = FLEXCOMM_GetInstance(base);
if (idx < 0)
{
return kStatus_InvalidArgument;
}
....
}
Similar errors can be found in some other places:
V547 CWE-571 Expression is always true. Probably the '&&' operator should be used here. bxcan.c 1171
#define RT_CAN_MODE_NORMAL 0
#define RT_CAN_MODE_LISEN 1
#define RT_CAN_MODE_LOOPBACK 2
#define RT_CAN_MODE_LOOPBACKANLISEN 3
static rt_err_t control(struct rt_can_device *can,
int cmd, void *arg)
{
....
case RT_CAN_CMD_SET_MODE:
argval = (rt_uint32_t) arg;
if (argval != RT_CAN_MODE_NORMAL ||
argval != RT_CAN_MODE_LISEN ||
argval != RT_CAN_MODE_LOOPBACK ||
argval != RT_CAN_MODE_LOOPBACKANLISEN)
{
return RT_ERROR;
}
if (argval != can->config.mode)
{
can->config.mode = argval;
return bxcan_set_mode(pbxcan->reg, argval);
}
break;
....
}
V547 Expression 'j == 0' is always false. KoColorSpace.cpp 218
QPolygonF KoColorSpace::estimatedTRCXYY() const
{
....
for (int j = 5; j>0; j--) {
channelValuesF.fill(0.0);
channelValuesF[i] = ((max / 4)*(5 - j));
if (colorModelId().id() != "XYZA") {
fromNormalisedChannelsValue(data, channelValuesF);
convertPixelsTo(....);
xyzColorSpace->normalisedChannelsValue(....);
}
if (j == 0) { // <=
colorantY = channelValuesF[1];
if (d->colorants.size()<2) {
d->colorants.resize(3 * colorChannelCount());
d->colorants[i] = ....
d->colorants[i + 1] = ....
d->colorants[i + 2] = ....
}
}
}
....
}
Similar errors can be found in some other places:
V547 Expression 'n == 128' is always false. compression.cpp 110
quint32 decode_packbits(const char *src,
char* dst,
quint16 packed_len,
quint32 unpacked_len)
{
qint32 n;
....
while (unpack_left > 0 && pack_left > 0)
{
n = *src;
src++;
pack_left--;
if (n == 128) // <=
continue;
else if (n > 128) // <=
n -= 256;
....
}
....
}
Similar errors can be found in some other places:
V547 Expression is always false. SvgTextEditor.cpp 472
void SvgTextEditor::setTextWeightDemi()
{
if (m_textEditorWidget.richTextEdit->textCursor()
.charFormat().fontWeight() > QFont::Normal
&& m_textEditorWidget.richTextEdit->textCursor()
.charFormat().fontWeight() < QFont::Normal) { // <=
setTextBold(QFont::Normal);
} else {
setTextBold(QFont::DemiBold);
}
}
V547 Expression is always true. Probably the '&&' operator should be used here. KoResourceItemChooser.cpp 408
void KoResourceItemChooser::updatePreview(KoResource *resource)
{
....
if (image.format() != QImage::Format_RGB32 || // <=
image.format() != QImage::Format_ARGB32 || // <=
image.format() != QImage::Format_ARGB32_Premultiplied) {
image = image.convertToFormat(....);
}
....
}
Similar errors can be found in some other places:
V547 Expression 'len <= 0' is always true. COMPOSE.C 235
long ComposeFlat8Diff(....)
{
....
len = 0;
// len = ....;
// ....
if (len <= 0)
{
....
}
....
}
V547 CWE-570 Expression 'nwrite < 0' is always false. Unsigned type value is never < 0. File.cpp 1941
static void* ScpWorkerThreadStart(void* param)
{
....
do
{
size_t nwrite = fwrite(ptr, 1, remaining, destfile);
if (nwrite < 0)
{
pRequest->error_.Overwrite(ErrorCode::FromErrno(errno));
break;
}
else
{
remaining -= nwrite;
ptr += nwrite;
pRequest->szCopied_ += nwrite;
}
} while (remaining != 0);
....
}
V547 CWE-571 Expression 'len >= 0' is always true. Unsigned type value is always >= 0. Types.cpp 121
size_t BIO_ctrl_pending(BIO *b);
template <typename TBuf>
TBuf BioMemToTBuf(BIO* bio)
{
char* data = NULL;
auto len = BIO_ctrl_pending(bio);
Invariant(len >= 0);
....
}
V547 CWE-570 Expression 'nbNeighb >= 2' is always false. WaterManager.cpp 581
void WaterManager::CreateWaveMeshes()
{
....
int nbNeighb = 0;
....
bool found = false;
nbNeighb = 0;
for (int p = 0; p < 8; ++p)
{
if (CoastalPointsSet.count(xx+around[p][0] +
(yy + around[p][1])*SideSize))
{
if (nbNeighb >= 2)
{
CoastalPointsSet.erase(xx + yy*SideSize);
continue;
}
++nbNeighb;
// We've found a new point around us.
// Move there
xx = xx + around[p][0];
yy = yy + around[p][1];
indexx = xx + yy*SideSize;
if (i == 0)
Chain.push_back(CoastalPoint(indexx,CVector2D(xx*2,yy*2)));
else
Chain.push_front(CoastalPoint(indexx,CVector2D(xx*2,yy*2)));
CoastalPointsSet.erase(xx + yy*SideSize);
found = true;
break;
}
}
if (!found)
endedChain = true;
....
}
V547 Expression 'RETVAL == 0' is always true. Typemap.c 710
XS_EUPXS(XS_XS__Typemap_T_SYSRET_pass);
XS_EUPXS(XS_XS__Typemap_T_SYSRET_pass)
{
dVAR; dXSARGS;
if (items != 0)
croak_xs_usage(cv, "");
{
SysRet RETVAL;
#line 370 "Typemap.xs"
RETVAL = 0;
#line 706 "Typemap.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
if (RETVAL != -1) { // <=
if (RETVAL == 0) // <=
sv_setpvn(RETVALSV, "0 but true", 10);
else
sv_setiv(RETVALSV, (IV)RETVAL);
}
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
V547 CWE-570 Expression 'buffer[i] < '\040' && buffer[i] > '\176'' is always false. qedidparser.cpp 169
QString QEdidParser::parseEdidString(const quint8 *data)
{
QByteArray buffer(reinterpret_cast<const char *>(data), 13);
// Erase carriage return and line feed
buffer = buffer.replace('\r', '\0').replace('\n', '\0');
// Replace non-printable characters with dash
for (int i = 0; i < buffer.count(); ++i) {
if (buffer[i] < '\040' && buffer[i] > '\176')
buffer[i] = '-';
}
return QString::fromLatin1(buffer.trimmed());
}
V547 CWE-570 Expression 'message' is always false. qwindowscontext.cpp 802
DWORD
__stdcall
FormatMessageW(
DWORD dwFlags,
LPCVOID lpSource,
DWORD dwMessageId,
DWORD dwLanguageId,
LPWSTR lpBuffer,
DWORD nSize,
va_list *Arguments
);
// Re-engineered from the inline function _com_error::ErrorMessage().
// We cannot use it directly since it uses swprintf_s(), which is not
// present in the MSVCRT.DLL found on Windows XP (QTBUG-35617).
static inline QString errorMessageFromComError(const _com_error &comError)
{
TCHAR *message = nullptr;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, DWORD(comError.Error()), MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
message, 0, NULL);
if (message) {
const QString result = QString::fromWCharArray(message).trimmed();
LocalFree(static_cast<HLOCAL>(message));
return result;
}
if (const WORD wCode = comError.WCode())
return QString::asprintf("IDispatch error #%u", uint(wCode));
return QString::asprintf("Unknown error 0x0%x", uint(comError.Error()));
}
V547 CWE-571 Expression 'st->mode == 1001' is always true. opus_encoder.c 1734
#define MODE_HYBRID 1001
opus_int32 opus_encode_native(....)
{
....
if (st->mode == MODE_HYBRID) // <=
{
int len;
len = (ec_tell(&enc)+7)>>3;
if (redundancy)
len += st->mode == MODE_HYBRID ? 3 : 1; // <=
....
}
V547 CWE-570 Expression 'mclength != 1' is always false. pcre2_compile.c 7355
static int
compile_branch(....)
{
uint32_t mclength;
....
if (mclength == 1 || req_caseopt == 0) // <=
{
firstcu = mcbuffer[0];
firstcuflags = req_caseopt;
if (mclength != 1) // <=
{
reqcu = code[-1];
reqcuflags = cb->req_varyopt;
}
}
....
}
V547 CWE-571 Expression 'sock.sockfd >= 0' is always true. Unsigned type value is always >= 0. libwebsockets.c 2651
typedef UINT_PTR SOCKET;
typedef SOCKET lws_sockfd_type;
typedef union {
lws_sockfd_type sockfd;
lws_filefd_type filefd;
} lws_sock_file_fd_type;
LWS_EXTERN struct lws *
lws_create_adopt_udp(....)
{
lws_sock_file_fd_type sock;
....
for (rp = r; rp; rp = rp->ai_next) {
sock.sockfd = socket(rp->ai_family, rp->ai_socktype,
rp->ai_protocol);
if (sock.sockfd >= 0) // <=
break;
}
....
}
V547 CWE-570 Expression 'i >= 3' is always false. csg_shape.cpp 939
CSGBrush *CSGBox::_build_brush() {
....
for (int i = 0; i < 6; i++) {
....
if (i < 3)
face_points[j][(i + k) % 3] = v[k] * (i >= 3 ? -1 : 1);
else
face_points[3 - j][(i + k) % 3] = v[k] * (i >= 3 ? -1 : 1);
....
}
....
}
Similar errors can be found in some other places:
V547 CWE-571 Expression 'idx >= 0 || idx < 4' is always true. variant_op.cpp 2152
void Variant::set(....) {
....
int idx = p_index;
if (idx < 0)
idx += 4;
if (idx >= 0 || idx < 4) {
Color *v = reinterpret_cast<Color *>(_data._mem);
(*v)[idx] = p_value;
valid = true;
}
....
}
Similar errors can be found in some other places:
V547 Expression 'updatePos' is always true. StelGuiItems.cpp 831
void BottomStelBar::updateText(bool updatePos)
{
....
updatePos = true;
....
if (location->text() != newLocation || updatePos)
{
updatePos = true;
....
}
....
if (fov->text() != str)
{
updatePos = true;
....
}
....
if (fps->text() != str)
{
updatePos = true;
....
}
if (updatePos)
{
....
}
}
V547 CWE-571 Expression 'content' is always true. html.c 162
static int
rndr_emphasis(hoedown_buffer *ob, const hoedown_buffer *content,
const hoedown_renderer_data *data)
{
if (!content || !content->size) return 0;
HOEDOWN_BUFPUTSL(ob, "<em>");
if (content) hoedown_buffer_put(ob, content->data, content->size);
HOEDOWN_BUFPUTSL(ob, "</em>");
return 1;
}
V547 CWE-571 Expression 'e->OutIdx >= 0' is always true. clipper.cpp 2983
void Clipper::DoMaxima(TEdge *e)
{
....
else if( e->OutIdx >= 0 && eMaxPair->OutIdx >= 0 )
{
if (e->OutIdx >= 0) AddLocalMaxPoly(e, eMaxPair, e->Top);
DeleteFromAEL(e);
DeleteFromAEL(eMaxPair);
}
....
}
V547 CWE-571 Expression 'layer' is always true. footprintpreviewgraphicsitem.cpp 177
void FootprintPreviewGraphicsItem::paint(....) noexcept {
....
for (const Circle& circle : mFootprint.getCircles()) {
layer = mLayerProvider.getLayer(*circle.getLayerName());
if (!layer) continue; // <=
if (layer) { // <=
pen = QPen(....);
painter->setPen(pen);
} else
painter->setPen(Qt::NoPen);
....
}
....
}
V547 Expression 'm_resolvedName == L"en-US"' is always false. To compare strings you should use wcscmp() function. Calculator LocalizationSettings.h 180
wchar_t m_resolvedName[LOCALE_NAME_MAX_LENGTH];
Platform::String^ GetEnglishValueFromLocalizedDigits(....) const
{
if (m_resolvedName == L"en-US")
{
return ref new Platform::String(localizedString.c_str());
}
....
}
V547 Expression '!pipe->In' is always false. MessagePipe.c 63
wMessagePipe* MessagePipe_New()
{
....
pipe->In = MessageQueue_New(NULL);
if (!pipe->In)
goto error_in;
pipe->Out = MessageQueue_New(NULL);
if (!pipe->In) // <=
goto error_out;
....
}
V547 Expression 'strcat(target, source) != NULL' is always true. triostr.c 425
TRIO_PUBLIC_STRING int
trio_append
TRIO_ARGS2((target, source),
char *target,
TRIO_CONST char *source)
{
assert(target);
assert(source);
return (strcat(target, source) != NULL);
}
V547 Expression 'cache' is always true. glyph.c 730
typedef struct rdp_glyph_cache rdpGlyphCache;
struct rdp_glyph_cache
{
....
GLYPH_CACHE glyphCache[10];
....
};
void glyph_cache_free(rdpGlyphCache* glyphCache)
{
....
GLYPH_CACHE* cache = glyphCache->glyphCache;
if (cache)
{
....
}
....
}
V547 Expression 'rdp->state >= CONNECTION_STATE_ACTIVE' is always true. connection.c 1489
int rdp_server_transition_to_state(rdpRdp* rdp, int state)
{
....
switch (state)
{
....
case CONNECTION_STATE_ACTIVE:
rdp->state = CONNECTION_STATE_ACTIVE; // <=
....
if (rdp->state >= CONNECTION_STATE_ACTIVE) // <=
{
IFCALLRET(client->Activate, client->activated, client);
if (!client->activated)
return -1;
}
....
}
....
}
V547 Expression 'status == 0x00090314' is always false. ntlm.c 299
BOOL ntlm_authenticate(rdpNtlm* ntlm, BOOL* pbContinueNeeded)
{
....
if (status != SEC_E_OK)
{
....
return FALSE;
}
if (status == SEC_I_COMPLETE_NEEDED) // <=
status = SEC_E_OK;
else if (status == SEC_I_COMPLETE_AND_CONTINUE) // <=
status = SEC_I_CONTINUE_NEEDED;
....
}
V547 Expression 'write_time' is always false. disk.c 805
RD_NTSTATUS
disk_set_information(....)
{
time_t write_time, change_time, access_time, mod_time;
....
if (write_time || change_time)
mod_time = MIN(write_time, change_time);
else
mod_time = write_time ? write_time : change_time; // <=
....
}
V547 Expression is always true. Probably the '&&' operator should be used here. disk.c 1419
static RD_NTSTATUS
disk_device_control(RD_NTHANDLE handle, uint32 request, STREAM in,
STREAM out)
{
....
if (((request >> 16) != 20) || ((request >> 16) != 9))
return RD_STATUS_INVALID_PARAMETER;
....
}
V547 [CWE-571] Expression 'nextByte != 0x90' is always true. X86DisassemblerDecoder.cpp 379
static int readPrefixes(struct InternalInstruction* insn) {
....
uint8_t byte = 0;
uint8_t nextByte;
....
if (byte == 0xf3 && (nextByte == 0x88 || nextByte == 0x89 ||
nextByte == 0xc6 || nextByte == 0xc7)) {
insn->xAcquireRelease = true;
if (nextByte != 0x90) // PAUSE instruction support // <=
break;
}
....
}
V547 Expression 'error == ((int) 0)' is always true. Directory.cpp 688
int32
BDirectory::CountEntries()
{
status_t error = Rewind();
if (error != B_OK)
return error;
int32 count = 0;
BPrivate::Storage::LongDirEntry entry;
while (error == B_OK) {
if (GetNextDirents(&entry, sizeof(entry), 1) != 1)
break;
if (strcmp(entry.d_name, ".") != 0 && strcmp(entry.d_name, "..") != 0)
count++;
}
Rewind();
return (error == B_OK ? count : error);
}
V547 Expression 'remaining < 0' is always false. Unsigned type value is never < 0. DwarfFile.cpp 1947
status_t
DwarfFile::_UnwindCallFrame(....)
{
....
uint64 remaining = lengthOffset + length - dataReader.Offset();
if (remaining < 0)
return B_BAD_DATA;
....
}
V547 Expression 'sleep((unsigned) secs) < 0' is always false. Unsigned type value is never < 0. misc.cpp 56
status_t
snooze(bigtime_t amount)
{
if (amount <= 0)
return B_OK;
int64 secs = amount / 1000000LL;
int64 usecs = amount % 1000000LL;
if (secs > 0) {
if (sleep((unsigned)secs) < 0) // <=
return errno;
}
if (usecs > 0) {
if (usleep((useconds_t)usecs) < 0)
return errno;
}
return B_OK;
}
extern unsigned int sleep (unsigned int __seconds); extern int usleep (__useconds_t __useconds);
V547 Expression 'leftvol >= 0' is always true. sceAudio.cpp 120
static u32 sceAudioOutputPannedBlocking
(u32 chan, int leftvol, int rightvol, u32 samplePtr) {
int result = 0;
// For some reason, this is the only one that checks for negative.
if (leftvol > 0xFFFF || rightvol > 0xFFFF || leftvol < 0 || rightvol < 0) {
....
} else {
if (leftvol >= 0) {
chans[chan].leftVolume = leftvol;
}
if (rightvol >= 0) {
chans[chan].rightVolume = rightvol;
}
chans[chan].sampleAddress = samplePtr;
result = __AudioEnqueue(chans[chan], chan, true);
}
}
V547 Expression 'size == 8' is always false. syn-att.c 195
extern void ud_translate_att(
int size = 0;
.... // Variable "size" doesn't change
if (size == 8) {
ud_asmprintf(u, "b");
} else if (size == 16) {
ud_asmprintf(u, "w");
} else if (size == 64) {
ud_asmprintf(u, "q");
}
....
}
V547 [CWE-571] Expression 'delta < - 64' is always true. d_net.c 130
int ExpandTics (int low)
{
int delta;
delta = low - (maketic&0xff);
if (delta >= -64 && delta <= 64)
return (maketic&~0xff) + low;
if (delta > 64)
return (maketic&~0xff) - 256 + low;
if (delta < -64)
return (maketic&~0xff) + 256 + low;
I_Error ("ExpandTics: strange value %i at maketic %i",low,maketic);
return 0;
}
V547 Expression '!inputFilename.empty()' is always true. makexindex.cpp 128
int main(int argc, char* argv[])
{
if (!parseCommandLine(argc, argv) || inputFilename.empty())
{
Usage();
return 1;
}
istream* inputFile = &cin;
if (!inputFilename.empty())
{
inputFile = new ifstream(inputFilename, ios::in);
if (!inputFile->good())
{
cerr << "Error opening input file " << inputFilename << '\n';
return 1;
}
}
....
}
V547 Expression 'path' is always true. fift-main.cpp 136
int main(int argc, char* const argv[]) {
....
if (!no_env) {
const char* path = std::getenv("FIFTPATH");
if (path) {
parse_include_path_set(path ? path : "/usr/lib/fift", // <=
source_include_path);
}
}
....
}
V547 Expression 'lastsector' is always false. udf25.cpp:636
int udf25::UDFGetAVDP( struct avdp_t *avdp)
{
....
uint32_t lastsector;
....
lastsector = 0; // <=
....
for(;;) {
....
if( lastsector ) { // <= V547
lbnum = lastsector;
terminate = 1;
} else {
//! @todo Find last sector of the disc (this is optional).
if( lastsector ) // <= V547
lbnum = lastsector - 256;
else
return 0;
}
}
....
}
Similar errors can be found in some other places:
V547 Expression 'values.size() != 2' is always false. GUIControlSettings.cpp:1174
bool CGUIControlRangeSetting::OnClick()
{
....
std::vector<CVariant> values;
SettingConstPtr listDefintion = settingList->GetDefinition();
switch (listDefintion->GetType())
{
case SettingType::Integer:
values.push_back(m_pSlider->
GetIntValue(CGUISliderControl::RangeSelectorLower));
values.push_back(m_pSlider->
GetIntValue(CGUISliderControl::RangeSelectorUpper));
break;
case SettingType::Number:
values.push_back(m_pSlider->
GetFloatValue(CGUISliderControl::RangeSelectorLower));
values.push_back(m_pSlider->
GetFloatValue(CGUISliderControl::RangeSelectorUpper));
break;
default:
return false;
}
if (values.size() != 2)
return false;
SetValid(CSettingUtils::SetList(settingList, values));
return IsValid();
}
V547 Expression 'prio == 0x7fffffff' is always true. DBusReserve.cpp:57
bool CDBusReserve::AcquireDevice(const std::string& device)
{
....
int prio = INT_MAX;
....
res =
dbus_bus_request_name(
m_conn,
service.c_str(),
DBUS_NAME_FLAG_DO_NOT_QUEUE |
(prio == INT_MAX ? 0 : DBUS_NAME_FLAG_ALLOW_REPLACEMENT), // <=
error);
....
}
V547 Expression '!file_name_value.empty()' is always false. SelectionRules.cxx 1423
bool SelectionRules::AreAllSelectionRulesUsed() const {
for(auto&& rule : fClassSelectionRules){
....
std::string file_name_value;
if (!rule.GetAttributeValue("file_name", file_name_value))
file_name_value.clear();
if (!file_name_value.empty()) { // <=
// don't complain about defined_in rules
continue;
}
const char* attrName = nullptr;
const char* attrVal = nullptr;
if (!file_name_value.empty()) { // <=
attrName = "file name";
attrVal = file_name_value.c_str();
} else {
attrName = "class";
if (!name.empty()) attrVal = name.c_str();
}
ROOT::TMetaUtils::Warning(0,"Unused %s rule: %s\n", attrName, attrVal);
}
....
}
V547 Expression 'idx >= 0' is always true. Unsigned type value is always >= 0. lexer.h 129
char GetCharAtWithLowerCheck(uint32 idx) const {
return idx >= 0 ? line[idx] : 0;
}
V547 [CWE-570] Expression 'segnib >= 0xE000' is always false. inst_r2k.cc 42
u32_t rabbit_mmu::logical_addr_to_phys( u16_t logical_addr ) {
u32_t phys_addr = logical_addr;
unsigned segnib = logical_addr >> 12;
if (segnib >= 0xE000)
{
phys_addr += ((u32_t)xpc) << 12;
}
....
}
V547 [CWE-570] Expression 'len < 0' is always false. Unsigned type value is never < 0. keys.c 312
static int keys_set(const char *name, size_t len_rd, settings_read_cb read_cb,
void *cb_arg)
{
....
size_t len;
....
len = read_cb(cb_arg, val, sizeof(val));
if (len < 0) {
BT_ERR("Failed to read value (err %zu)", len);
return -EINVAL;
}
....
}
V547 [CWE-570] Expression '(end - * p) < 1' is always false. x509_crt.c 635
static int x509_get_subject_alt_name( unsigned char **p,
const unsigned char *end,
mbedtls_x509_sequence *subject_alt_name )
{
....
while( *p < end )
{
if( ( end - *p ) < 1 )
return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS +
MBEDTLS_ERR_ASN1_OUT_OF_DATA );
....
}
....
}
V547 [CWE-571] Expression 'disp' is always true. lv_disp.c 148
uint32_t lv_disp_get_inactive_time(const lv_disp_t * disp)
{
if(!disp) disp = lv_disp_get_default();
if(!disp) {
LV_LOG_WARN("lv_disp_get_inactive_time: no display registered");
return 0;
}
if(disp) return lv_tick_elaps(disp->last_activity_time);
lv_disp_t * d;
uint32_t t = UINT32_MAX;
d = lv_disp_get_next(NULL);
while(d) {
t = LV_MATH_MIN(t, lv_tick_elaps(d->last_activity_time));
d = lv_disp_get_next(d);
}
return t;
}
V547 Expression 'axisCount' is always false. MultiBodyCar.cpp 650
void UpdateDriverInput(dVehicle* const vehicle, dFloat timestep)
{
....
int axisCount = scene->GetJoystickAxis(axis);
axisCount = 0;
if (axisCount)
{
....
}
....
}
V547 [CWE-570] Expression 'name == nullptr' is always false. libopenrct2 ServerList.cpp 102
std::optional<ServerListEntry> ServerListEntry::FromJson(....)
{
auto name = json_object_get(server, "name");
....
if (name == nullptr || version == nullptr)
{
....
}
else
{
....
entry.name = (name == nullptr ? "" : json_string_value(name));
....
}
....
}
V547 Expression 'nearest_emergefull_d == - 1' is always true. clientiface.cpp 363
void RemoteClient::GetNextBlocks (....)
{
....
s32 nearest_emergefull_d = -1;
....
s16 d;
for (d = d_start; d <= d_max; d++) {
....
if (block == NULL || surely_not_found_on_disk || block_is_invalid) {
if (emerge->enqueueBlockEmerge(peer_id, p, generate)) {
if (nearest_emerged_d == -1)
nearest_emerged_d = d;
} else {
if (nearest_emergefull_d == -1) // <=
nearest_emergefull_d = d;
goto queue_full_break;
}
....
}
....
queue_full_break:
if (nearest_emerged_d != -1) { // <=
new_nearest_unsent_d = nearest_emerged_d;
} else ....
}
The value nearest_emergefull_d is never changing in the loop.
V547 [CWE-570] Expression 'rel_wait < 0' is always false. Unsigned type value is never < 0. os_thread_windows.c 359
static DWORD
get_rel_wait(const struct timespec *abstime)
{
struct __timeb64 t;
_ftime64_s(&t);
time_t now_ms = t.time * 1000 + t.millitm;
time_t ms = (time_t)(abstime->tv_sec * 1000 +
abstime->tv_nsec / 1000000);
DWORD rel_wait = (DWORD)(ms - now_ms);
return rel_wait < 0 ? 0 : rel_wait;
}
V547 [CWE-571] Expression 'blocks[i]' is always true. heap.c 1054
static struct memory_block
heap_coalesce(struct palloc_heap *heap,
const struct memory_block *blocks[], int n)
{
struct memory_block ret = MEMORY_BLOCK_NONE;
const struct memory_block *b = NULL;
ret.size_idx = 0;
for (int i = 0; i < n; ++i) {
if (blocks[i] == NULL)
continue;
b = b ? b : blocks[i];
ret.size_idx += blocks[i] ? blocks[i]->size_idx : 0;
}
....
}
V547 Expression 'ret < 0' is always false. qcow2-cluster.c 1557
static int handle_dependencies(....)
{
....
if (end <= old_start || start >= old_end) {
....
} else {
if (bytes == 0 && *m) {
....
return 0;
}
if (bytes == 0) {
....
return -EAGAIN;
}
....
}
return 0;
}
int qcow2_alloc_cluster_offset(BlockDriverState *bs, ....)
{
....
ret = handle_dependencies(bs, start, &cur_bytes, m);
if (ret == -EAGAIN) {
....
} else if (ret < 0) {
....
}
}
V547 Expression 's[0] == '-'' is always false. clipp.h 303
inline bool
fwd_to_unsigned_int(const char*& s)
{
if(!s) return false;
for(; std::isspace(*s); ++s);
if(!s[0] || s[0] == '-') return false;
if(s[0] == '-') return false;
return true;
}
V547 Expression 'event_thread_started == false' is always true. gui_core_kernel_1.cpp 162
class event_handler_thread : public threaded_object
{
....
bool event_thread_started;
....
};
void start_event_thread ()
{
....
if (event_thread_started == false)
{
auto_mutex M(window_table.get_mutex());
if (event_thread_started == false)
{
event_thread_started = true;
// start up the event handler thread
start();
....
}
V547 Expression 'samples.size() > 0' is always true. svm.h 360
template <
typename detection_type,
typename label_type
>
bool is_track_association_problem (
const std::vector<std::vector<
labeled_detection<detection_type,label_type> > >& samples
)
{
if (samples.size() == 0)
return false;
unsigned long num_nonzero_elements = 0;
for (unsigned long i = 0; i < samples.size(); ++i)
{
if (samples.size() > 0)
++num_nonzero_elements;
}
if (num_nonzero_elements < 2)
return false;
....
}
V547 Expression is always false. linenoise.c 256
static int getColumns(void) {
....
/* Restore position. */
if (cols > start) {
char seq[32];
snprintf(seq,32,"\x1b[%dD",cols-start);
if (fwrite(seq, 1, strlen(seq), stdout) == -1) {
/* Can't recover... */
}
flushWrite();
}
....
}
Similar errors can be found in some other places:
V547 Expression is always false. linenoise.c 596
int linenoiseEditInsert(struct linenoiseState *l, char c) {
....
if (fwrite(&c,1,1,stdout) == -1) return -1;
....
}
Similar errors can be found in some other places:
V547 Expression is always false. linenoise.c 828
static int linenoiseEdit(char *buf, size_t buflen, const char *prompt)
....
while(1) {
....
if (fread(seq+2, 1, 1, stdin) == -1) break;
....
}
....
}
V547 Expression 'ret != 0' is always false. sdio_slave.c 394
esp_err_t sdio_slave_start(void)
{
....
critical_exit_recv();
ret = ESP_OK;
if (ret != ESP_OK) return ret;
sdio_slave_hal_set_ioready(context.hal, true);
return ESP_OK;
}
V547 Expression is always true. essl_sdio.c 209
esp_err_t essl_sdio_init(void *arg, uint32_t wait_ms)
{
....
// Set block sizes for functions 1 to given value (default value = 512).
if (ctx->block_size > 0 || ctx->block_size <= 2048) {
bs = ctx->block_size;
} else {
bs = 512;
}
....
}
Most likely this is what should be written here: ctx->block_size > 0 && ctx->block_size <= 2048
V547 Expression 'depth <= 0' is always false. panic_handler.c 169
static void print_backtrace(const void *f, int core)
{
XtExcFrame *frame = (XtExcFrame *) f;
int depth = 100;
//Initialize stk_frame with first frame of stack
esp_backtrace_frame_t stk_frame =
{.pc = frame->pc, .sp = frame->a1, .next_pc = frame->a0};
panic_print_str("\r\nBacktrace:");
print_backtrace_entry(esp_cpu_process_stack_pc(stk_frame.pc), stk_frame.sp);
//Check if first frame is valid
bool corrupted =
!(esp_stack_ptr_is_sane(stk_frame.sp) &&
(esp_ptr_executable((void *)esp_cpu_process_stack_pc(stk_frame.pc)) ||
/* Ignore the first corrupted PC in case of InstrFetchProhibited */
frame->exccause == EXCCAUSE_INSTR_PROHIBITED));
//Account for stack frame that's already printed
uint32_t i = ((depth <= 0) ? INT32_MAX : depth) - 1;
....
}
Similar errors can be found in some other places:
V547 Expression is always false. tasks.c 896
#ifndef portPRIVILEGE_BIT
#define portPRIVILEGE_BIT ( ( UBaseType_t ) 0x00 )
#endif
static void prvInitialiseNewTask(...., UBaseType_t uxPriority, ....)
{
StackType_t *pxTopOfStack;
UBaseType_t x;
#if (portNUM_PROCESSORS < 2)
xCoreID = 0;
#endif
#if( portUSING_MPU_WRAPPERS == 1 )
/* Should the task be created in privileged mode? */
BaseType_t xRunPrivileged;
if( ( uxPriority & portPRIVILEGE_BIT ) != 0U )
{
xRunPrivileged = pdTRUE;
}
else
{
xRunPrivileged = pdFALSE;
}
....
}
V547 Expression 'err != 0' is always false. sdio_slave_hal.c 96
static esp_err_t sdio_ringbuf_send(....)
{
uint8_t* get_ptr = ....;
esp_err_t err = ESP_OK;
if (copy_callback) {
(*copy_callback)(get_ptr, arg);
}
if (err != ESP_OK) return err;
buf->write_ptr = get_ptr;
return ESP_OK;
}
V547 Expression 'bit_len == 32' is always false. spi_flash_ll.h 371
static inline void spi_flash_ll_set_usr_address(spi_dev_t *dev, uint32_t addr,
int bit_len)
{
// The blank region should be all ones
if (bit_len >= 32) {
dev->addr = addr;
dev->slv_wr_status = UINT32_MAX;
} else {
uint32_t padding_ones = (bit_len == 32? 0 : UINT32_MAX >> bit_len);
dev->addr = (addr << (32 - bit_len)) | padding_ones;
}
}
V547 Expression 'b' is always true. wpabuf.c 235
struct wpabuf * wpabuf_concat(struct wpabuf *a, struct wpabuf *b)
{
struct wpabuf *n = NULL;
size_t len = 0;
if (b == NULL)
return a;
if (a)
len += wpabuf_len(a);
if (b)
len += wpabuf_len(b);
n = wpabuf_alloc(len);
if (n) {
if (a)
wpabuf_put_buf(n, a);
if (b)
wpabuf_put_buf(n, b);
}
wpabuf_free(a);
wpabuf_free(b);
return n;
}
Similar errors can be found in some other places:
V547 [CWE-571] Expression 'max_size > 0' is always true. gtkrecentmanager.c 480
static void
gtk_recent_manager_real_changed (GtkRecentManager *manager)
{
....
int age;
int max_size = MAX_LIST_SIZE;
....
.... // Variable max_size is not used here.
....
if (age == 0 || max_size == 0 || !enabled)
{
g_bookmark_file_free (priv->recent_items);
priv->recent_items = g_bookmark_file_new ();
priv->size = 0;
}
else
{
if (age > 0)
gtk_recent_manager_clamp_to_age (manager, age);
if (max_size > 0)
gtk_recent_manager_clamp_to_size (manager, max_size);
}
....
}
V547 [CWE-571] Expression 'desktop_startup_id' is always true. gdk.c 176
static void
stash_desktop_startup_notification_id (void)
{
const char *desktop_startup_id;
desktop_startup_id = g_getenv ("DESKTOP_STARTUP_ID");
if (desktop_startup_id && *desktop_startup_id != '\0')
{
if (!g_utf8_validate (desktop_startup_id, -1, NULL))
g_warning ("DESKTOP_STARTUP_ID contains invalid UTF-8");
else
startup_notification_id =
g_strdup (desktop_startup_id ? desktop_startup_id : "");
}
g_unsetenv ("DESKTOP_STARTUP_ID");
}
V547 [CWE-571] Expression 'extraBytes > 0' is always true. FBXUtil.cpp 224
std::string EncodeBase64(const char* data, size_t length)
{
// calculate extra bytes needed to get a multiple of 3
size_t extraBytes = 3 - length % 3;
// number of base64 bytes
size_t encodedBytes = 4 * (length + extraBytes) / 3;
std::string encoded_string(encodedBytes, '=');
// read blocks of 3 bytes
for (size_t ib3 = 0; ib3 < length / 3; ib3++)
{
const size_t iByte = ib3 * 3;
const size_t iEncodedByte = ib3 * 4;
const char* currData = &data[iByte];
EncodeByteBlock(currData, encoded_string, iEncodedByte);
}
// if size of data is not a multiple of 3,
// also encode the final bytes (and add zeros where needed)
if (extraBytes > 0)
{
char finalBytes[4] = { 0,0,0,0 };
memcpy(&finalBytes[0], &data[length - length % 3], length % 3);
const size_t iEncodedByte = encodedBytes - 4;
EncodeByteBlock(&finalBytes[0], encoded_string, iEncodedByte);
// add '=' at the end
for (size_t i = 0; i < 4 * extraBytes / 3; i++)
encoded_string[encodedBytes - i - 1] = '=';
}
return encoded_string;
}
V547 [CWE-571] Expression '(general_purpose_bits & Utf8Names) != 0' is always true. qzip.cpp 716
enum GeneralPurposeFlag {
....
Utf8Names = 0x0800,
....
};
static inline void writeUShort(uchar *data, ushort i)
{
data[0] = i & 0xff;
data[1] = (i>>8) & 0xff;
}
void QZipWriterPrivate::addEntry(EntryType type, const QString &fileName, ....)
{
....
ushort general_purpose_bits = Utf8Names; // always use utf-8
writeUShort(header.h.general_purpose_bits, general_purpose_bits);
const bool inUtf8 = (general_purpose_bits & Utf8Names) != 0;
header.file_name = inUtf8 ? fileName.toUtf8() : fileName.toLocal8Bit();
}
V547 [CWE-571] Expression 'vi < 0' is always true. qtreeview.cpp 2219
QModelIndex QTreeView::moveCursor(....)
{
....
int vi = -1;
if (vi < 0)
vi = qMax(0, d->viewIndex(current));
....
}
V547 [CWE-570] Expression 'type == - 1' is always false. qv4datacollector.cpp 282
int QV4DataCollector::encodeScopeType(
QV4::Heap::ExecutionContext::ContextType scopeType)
{
switch (scopeType) {
case QV4::Heap::ExecutionContext::Type_GlobalContext:
break;
case QV4::Heap::ExecutionContext::Type_WithContext:
return 2;
case QV4::Heap::ExecutionContext::Type_CallContext:
return 1;
case QV4::Heap::ExecutionContext::Type_QmlContext:
return 3;
case QV4::Heap::ExecutionContext::Type_BlockContext:
return 4;
}
return 0;
}
QJsonObject QV4DataCollector::buildFrame(....)
{
....
for (int i = 0, ei = scopeTypes.count(); i != ei; ++i) {
int type = encodeScopeType(scopeTypes[i]);
if (type == -1)
continue;
QJsonObject scope;
scope[QLatin1String("index")] = i;
scope[QLatin1String("type")] = type;
scopes.push_back(scope);
}
....
}
V547 [CWE-570] Expression 'l != len' is always false. qv4typedarray.cpp 306
typedef unsigned int uint;
ReturnedValue TypedArrayCtor::virtualCallAsConstructor(....)
{
....
qint64 l = argc ? argv[0].toIndex() : 0;
if (scope.engine->hasException)
return Encode::undefined();
// ### lift UINT_MAX restriction
if (l < 0 || l > UINT_MAX)
return scope.engine->throwRangeError(QLatin1String("Index out of range."));
uint len = (uint)l;
if (l != len)
scope.engine->throwRangeError(
QStringLiteral("Non integer length for typed array."));
....
}
V547 [CWE-570] Expression 'count == 9' is always false. qfont.cpp 2142
bool QFont::fromString(const QString &descrip)
{
....
const int count = l.count();
if (!count || (count > 2 && count < 9) || count == 9 || count > 17 ||
l.first().isEmpty()) {
qWarning("QFont::fromString: Invalid description '%s'",
descrip.isEmpty() ? "(empty)" : descrip.toLatin1().data());
return false;
}
setFamily(l[0].toString());
if (count > 1 && l[1].toDouble() > 0.0)
setPointSizeF(l[1].toDouble());
if (count == 9) { // <=
setStyleHint((StyleHint) l[2].toInt());
setWeight(QFont::Weight(l[3].toInt()));
setItalic(l[4].toInt());
setUnderline(l[5].toInt());
setStrikeOut(l[6].toInt());
setFixedPitch(l[7].toInt());
} else if (count >= 10) {
....
}
V547 [CWE-571] Expression 'lang' is always true. qfontconfigdatabase.cpp 462
// this could become a list of all languages used for each writing
// system, instead of using the single most common language.
static const char languageForWritingSystem[][6] = {
"", // Any
"en", // Latin
"el", // Greek
"ru", // Cyrillic
...... // No null pointers. Empty string literals are used.
"", // Symbol
"sga", // Ogham
"non", // Runic
"man" // N'Ko
};
static_assert(sizeof languageForWritingSystem /
sizeof *languageForWritingSystem == QFontDatabase::WritingSystemsCount);
static void populateFromPattern(....)
{
....
for (int j = 1; j < QFontDatabase::WritingSystemsCount; ++j) {
const FcChar8 *lang = (const FcChar8*) languageForWritingSystem[j];
if (lang) {
FcLangResult langRes = FcLangSetHasLang(langset, lang);
if (langRes != FcLangDifferentLang) {
....
}
V547 [CWE-571] Expression 'socket != - 1' is always true. qnativesocketengine_unix.cpp 315
bool QNativeSocketEnginePrivate::createNewSocket(....)
{
....
int socket = qt_safe_socket(domain, type, protocol, O_NONBLOCK);
....
if (socket < 0) {
....
return false;
}
socketDescriptor = socket;
if (socket != -1) {
this->socketProtocol = socketProtocol;
this->socketType = socketType;
}
return true;
}
V547 [CWE-571] Expression 'current' is always true. qopenglframebufferobject.cpp 1185
bool QOpenGLFramebufferObject::release()
{
if (!isValid())
return false;
QOpenGLContext *current = QOpenGLContext::currentContext();
if (!current)
return false;
Q_D(QOpenGLFramebufferObject);
#ifdef QT_DEBUG
....
#endif
if (current) {
d->funcs.glBindFramebuffer(GL_FRAMEBUFFER,
current->defaultFramebufferObject());
QOpenGLContextPrivate *contextPrv = QOpenGLContextPrivate::get(current);
contextPrv->qgl_current_fbo_invalid = true;
contextPrv->qgl_current_fbo = nullptr;
}
return true;
}
V547 [CWE-571] Expression 'window != m_window' is always true. qquick3dscenemanager.cpp 60
void QQuick3DSceneManager::setWindow(QQuickWindow *window)
{
if (window == m_window)
return;
if (window != m_window) {
if (m_window)
disconnect(....);
m_window = window;
connect(....);
emit windowChanged();
}
}
V547 [CWE-570] Expression '!count' is always false. qsqltablemodel.cpp 1110
bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent)
{
Q_D(QSqlTableModel);
if (parent.isValid() || row < 0 || count <= 0)
return false;
else if (row + count > rowCount())
return false;
else if (!count)
return true;
....
}
V547 [CWE-571] Expression 'widgetItem' is always true. qdockarealayout.cpp 1167
bool QDockAreaLayoutInfo::insertGap(....)
{
....
QDockAreaLayoutItem new_item
= widgetItem == nullptr
? QDockAreaLayoutItem(subinfo)
: widgetItem ? QDockAreaLayoutItem(widgetItem)
: QDockAreaLayoutItem(placeHolderItem);
....
}
V547 [CWE-571] Expression 'identifierWithEscapeChars' is always true. qqmljslexer.cpp 817
int Lexer::scanToken()
{
....
bool identifierWithEscapeChars = false;
....
if (!identifierWithEscapeChars) {
identifierWithEscapeChars = true;
....
}
....
if (identifierWithEscapeChars) {
....
}
....
}
V547 [CWE-571] Expression 'softwareRenderer' is always true. qsgsoftwarethreadedrenderloop.cpp 510
void QSGSoftwareRenderThread::syncAndRender()
{
....
bool canRender = wd->renderer != nullptr;
if (canRender) {
auto softwareRenderer = static_cast<QSGSoftwareRenderer*>(wd->renderer);
if (softwareRenderer)
softwareRenderer->setBackingStore(backingStore);
....
}
Most likely this is what should be written here: dynamic_cast<QSGSoftwareRenderer*>(wd->renderer);
V547 [CWE-570] Expression 'm_verbose' is always false. qmlprofilerapplication.cpp 495
void QmlProfilerApplication::tryToConnect()
{
Q_ASSERT(!m_connection->isConnected());
++ m_connectionAttempts;
if (!m_verbose && !(m_connectionAttempts % 5)) {// print every 5 seconds
if (m_verbose) {
if (m_socketFile.isEmpty())
logError(
QString::fromLatin1("Could not connect to %1:%2 for %3 seconds ...")
.arg(m_hostName).arg(m_port).arg(m_connectionAttempts));
else
logError(
QString::fromLatin1("No connection received on %1 for %2 seconds ...")
.arg(m_socketFile).arg(m_connectionAttempts));
}
}
....
}
V547 [CWE-571] Expression 'month' is always true. qdatetime.cpp 4907
static const char qt_shortMonthNames[][4] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
static int fromShortMonthName(QStringView monthName)
{
for (unsigned int i = 0;
i < sizeof(qt_shortMonthNames) / sizeof(qt_shortMonthNames[0]); ++i)
{
if (monthName == QLatin1String(qt_shortMonthNames[i], 3))
return i + 1;
}
return -1;
}
QDateTime QDateTime::fromString(QStringView string, Qt::DateFormat format)
{
....
month = fromShortMonthName(parts.at(1));
if (month)
day = parts.at(2).toInt(&ok);
// If failed, try day then month
if (!ok || !month || !day) {
month = fromShortMonthName(parts.at(2));
if (month) {
QStringView dayPart = parts.at(1);
if (dayPart.endsWith(u'.'))
day = dayPart.chopped(1).toInt(&ok);
}
}
....
}
Similar errors can be found in some other places:
V547 Expression 'palette.empty()' is always true. image_tool.cpp 32
const std::vector<uint8_t> PALPAlette()
{
std::vector<uint8_t> palette;
if (palette.empty())
{
palette.resize( 256 * 3 );
for ( size_t i = 0; i < palette.size(); ++i )
{
palette[i] = kb_pal[i] << 2;
}
}
return palette;
}
V547 Expression 'rval != - 6' is always true. output_base.c 219
static int register_module(....)
{
....
int rval;
if ((rval = register_plugin(current_dm)) != OUTPUT_SUCCESS)
{
if (rval != OUTPUT_ERROR_EXISTS)
fprintf(stderr, "%s: Failed to register OUTPUT plugin.\n",
current_dm->name);
return OUTPUT_ERROR;
}
....
}
static int register_plugin(const Output_Module_t *dm)
{
if (....)
{
....
return OUTPUT_ERROR;
}
....
return OUTPUT_SUCCESS;
}
#define OUTPUT_SUCCESS 0
#define OUTPUT_ERROR -1
#define OUTPUT_ERROR_EXISTS -6
V547 Expression 'ret == - 2' is always false. base.c 344
static void load_static_modules(void)
{
....
ret = output_load_module(dirpath);
if (ret == OUTPUT_SUCCESS)
{
DEBUG_WRAP(DebugMessage(DEBUG_INIT, "Found module %s\n", de->d_name););
}
else if (ret == OUTPUT_ERROR_NOMEM)
{
closedir(dirp);
return OUTPUT_ERROR_NOMEM;
}
....
}
V547 Expression 'found_offset' is always true. sf_snort_plugin_pcre.c 202
static int pcre_test(...., int *found_offset)
{
....
*found_offset = -1;
....
if (found_offset)
{
*found_offset = ovector[1];
....
}
return matched;
}
V547 Expression 'sipMsg->status_code > 0' is always true. sip_dialog.c 806
int SIP_updateDialog(SIPMsg *sipMsg, SIP_DialogList *dList, SFSnortPacket *p)
{
int ret;
....
if (sipMsg->status_code == 0)
ret = SIP_processRequest(....);
else if (sipMsg->status_code > 0)
ret = SIP_processResponse(....);
else
ret = SIP_FAILURE;
....
}
V547 [CWE-570] Expression 'padding == 0' is always false. database.h 505.
static uint32_t stream_offset(std::string_view const& name) noexcept
{
uint32_t padding = 4 - name.size() % 4;
if (padding == 0)
{
padding = 4;
}
return static_cast<uint32_t>(8 + name.size() + padding);
}
V547 Expression 'bp->nb_dirtyoff >= bp->nb_dirtyend' is always false. nfs_bio.c 3858
int
nfs_vinvalbuf_internal(....)
{
struct nfsbuf *bp;
....
off_t end = ....;
/* check for any dirty data before the EOF */
if ((bp->nb_dirtyend > 0) && (bp->nb_dirtyoff < end))
{
/* clip dirty range to EOF */
if (bp->nb_dirtyend > end)
{
bp->nb_dirtyend = end;
if (bp->nb_dirtyoff >= bp->nb_dirtyend) // <=
{
bp->nb_dirtyoff = bp->nb_dirtyend = 0;
}
}
if ((bp->nb_dirtyend > 0) && (bp->nb_dirtyoff < end)) // <=
{
....
}
}
....
}
V547 Expression 'ar->k_ar.ar_arg_mac_string == NULL' is always true. audit_mac.c 246
void
audit_arg_mac_string(struct kaudit_record *ar, ....)
{
if (ar->k_ar.ar_arg_mac_string == NULL)
{
ar->k_ar.ar_arg_mac_string = kheap_alloc(....);
}
....
if (ar->k_ar.ar_arg_mac_string == NULL)
{
if (ar->k_ar.ar_arg_mac_string == NULL) // <=
{
return;
}
}
....
}
V547 Expression '(value & (1ULL << 62)) == 1' is always false. vm_shared_region.c 2820
static kern_return_t
vm_shared_region_slide_page_v3(vm_offset_t vaddr, ....)
{
....
uint8_t *page_content = (uint8_t *)vaddr;
uint16_t page_entry;
....
uint8_t* rebaseLocation = page_content;
uint64_t delta = page_entry;
do {
rebaseLocation += delta;
uint64_t value;
memcpy(&value, rebaseLocation, sizeof(value));
....
bool isBind = (value & (1ULL << 62)) == 1; // <=
if (isBind) {
return KERN_FAILURE;
}
....
} while (delta != 0);
....
}