рд╕рдордп-рд╕рдордп рдкрд░, рд╣рдорд╛рд░реА рдЯреАрдо рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓реЗрдЦ рд▓рд┐рдЦреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ Qt рдерд╛ред рдЖрдЦрд┐рд░реА рдмрд╛рд░ рд╣рдордиреЗ 2014 рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛ред 2014 рдХреЗ рдмрд╛рдж рд╕реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХрд╡рд░рд┐рдЯреА рдХреА рдорджрдж рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдм рд╣рдо рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рднреА рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпреВрдЯреА
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ:
рдЗрд╕ рдмрд╛рд░
рдХреНрдпреВрдЯреА рдмреЗрд╕ (рдХреЛрд░, рдЧреБрдИ, рд╡рд┐рдЬреЗрдЯреНрд╕, рдиреЗрдЯрд╡рд░реНрдХ, ...) рдФрд░
рдХреНрдпреВрдЯреА 5 рд╕реБрдкрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ ред рдХреНрдпреВрдЯреА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╣рдо рдмрд╛рдж рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдЯрд┐рдХ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдЖрдк рд╕рд╛рдЗрдЯ рд╕реЗ
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд░рд╛рдп рдореЗрдВ, рдХреНрдпреВрдЯреА рдХреЛрдб рдмреЗрд╣рддрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдХрдИ рдирдП рдирд┐рджрд╛рди рд╕рд╛рдордиреЗ рдЖрдП рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рд╕рдореАрдХреНрд╖рд╛ рдЕрдзреНрдпрдпрди рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдЗрд╕ рдЖрдХрд╛рд░ рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рдорд┐рд▓реАрдВред рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЫрд╛рдк рд╣реИред рдореИрдВрдиреЗ рдпрд╛ рддреЛ рдпрд╛ рдЕрдм рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдШрдирддреНрд╡ рдкрд░ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╢реЛрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдирд┐рдпрдорд┐рдд рд╕реНрдЯреЗрдЯрд┐рдХ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдорд┐рдд рдЬрд╛рдВрдЪ рд╕реЗ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИред 2014 рдореЗрдВ, Coverity рдХреА рдорджрдж рд╕реЗ, Qt рдкреНрд░реЛрдЬреЗрдХреНрдЯ (
qt-project ) рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдиреЗ рд▓рдЧреА, рдФрд░ 2016 рдореЗрдВ, Qt Creator (
qt-creator )ред рдореЗрд░реА рд░рд╛рдп: рдпрджрд┐ рдЖрдк рдПрдХ рдЦреБрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ
рдХрд╡рд░реЗрдЬ рд╕реНрдХреИрди рдПрдХ рдЕрдЪреНрдЫрд╛ рдореБрдлреНрдд рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╛рдардХ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдореИрдВрдиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рджреЗрдЦрд╛ рдерд╛, рддреЛ рдХреЛрдИ рд▓реЗрдЦ рдирд╣реАрдВ рд╣реЛрдЧрд╛ :)ред рдФрд░ рдЪреВрдВрдХрд┐ рдПрдХ рд▓реЗрдЦ рд╣реИ, рд╡рд╣ рд╣реИ, рджреЛрд╖ред рдЖрдЗрдП рдЙрди рдкрд░ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдХреБрд▓ рдореЗрдВ, рдореИрдВрдиреЗ 96 рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд▓рд┐рдЦреАрдВред
рдЕрд╕рдлрд▓ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдФрд░ рдЯрд╛рдЗрдкреЛ
рдЖрдЗрдП рд╢реИрд▓реА рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬрдм рдЧрд▓рддреА рдХрд╛ рдХрд╛рд░рдг рдЕрд╕рд╛рд╡рдзрд╛рдиреА рд╣реИред рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдХрдо рдХрд░рдХреЗ рдЖрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдЕрднреА рддрдХ рдирд╣реАрдВ рдкрдврд╝реЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрди рджреЛ рд▓реЗрдЦреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ:
рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЗрдВрдЯрд░рд▓реЗрдиреНрдЬ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рд▓реЗрдЦ C, C ++ рдФрд░ C # рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рддреБрд▓рдирд╛рддреНрдордХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред рдЕрдм, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ
рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкрд╛рдпрд╛ рд╣реИ:
public boolean equals(Object other) { if (other instanceof Id) { Id that = (Id) other; return purchaseSequence.equals(this.purchaseSequence) && that.purchaseNumber == this.purchaseNumber; } else { return false; } }
рдпрджрд┐ рдЖрдк рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐
рдЦрд░реАрдж рдХреНрд╖реЗрддреНрд░ рдХреА рддреБрд▓рдирд╛ рдЦреБрдж рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк:
return that.purchaseSequence.equals(this.purchaseSequence) && that.purchaseNumber == this.purchaseNumber;
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЬрд╛рд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ "рдСрдЧреЗрди рдЕрд╕реНрддрдмрд▓ рдХреЛ рд░реЗрдХ" рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡реИрд╕реЗ, рд╣рдо рд╕рднреА рдХреЛ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рд╣рдореЗрдВ рд▓рд┐рдЦреЗрдВ (рдЪреБрдиреЗрдВ "рдореБрдЭреЗ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪрд╛рд╣рд┐рдП")ред
рдЕрдм Qt рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ред
рджреЛрд╖ N рез static inline int windowDpiAwareness(HWND hwnd) { return QWindowsContext::user32dll.getWindowDpiAwarenessContext && QWindowsContext::user32dll.getWindowDpiAwarenessContext ? QWindowsContext::user32dll.getAwarenessFromDpiAwarenessContext( QWindowsContext::user32dll.getWindowDpiAwarenessContext(hwnd)) : -1; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V501 CWE-571 рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ 'QWindowsContext :: user32dll.getWindowDpiA рдЬрд╛рдЧрд░реВрдХрддрд╛Context' рдмрд╛рдИрдВ рдУрд░ рдФрд░ '&&' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ред qwindowscontext.cpp 150
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рдВрджреЗрд╢ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдпрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рддрд░рд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдереА:
return QWindowsContext::user32dll.getAwarenessFromDpiAwarenessContext && QWindowsContext::user32dll.getWindowDpiAwarenessContext ? QWindowsContext::user32dll.getAwarenessFromDpiAwarenessContext( QWindowsContext::user32dll.getWindowDpiAwarenessContext(hwnd)) : -1;
рджреЛрд╖ N2, N3 void QReadWriteLockPrivate::release() { Q_ASSERT(!recursive); Q_ASSERT(!waitingReaders && !waitingReaders && !readerCount && !writerCount); freelist->release(id); }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V501 CWE-571 рдмрд╛рдИрдВ рдФрд░ '&&' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ: WaitingReaders &&! WaitingReaders qreadwritelock.cn 632!
рддреНрд░реБрдЯрд┐
Q_ASSERT рдореИрдХреНрд░реЛ
рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдВрджрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред
WaitReaders рд╡реИрд░рд┐рдПрдмрд▓ рдбрдмрд▓ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡реЗ рдХреБрдЫ рдЕрдиреНрдп рдЪрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рднреВрд▓ рдЧрдПред
Qreadwritelock.cpp рдлрд╝рд╛рдЗрд▓ рдХреА 625 рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИред рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ! :)
рджреЛрд╖ N4 QString QGraphicsSceneBspTree::debug(int index) const { .... if (node->type == Node::Horizontal) { tmp += debug(firstChildIndex(index)); tmp += debug(firstChildIndex(index) + 1); } else { tmp += debug(firstChildIndex(index)); tmp += debug(firstChildIndex(index) + 1); } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V523 CWE-691 'рддрддреНрдХрд╛рд▓реАрди' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред qgraphicsscene_bsp.cpp 179
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдкрд╛рда рдХрд╛ рдмреНрд▓реЙрдХ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдЗрд╕реЗ рд╕рд╣реА рдХрд░рдирд╛ рднреВрд▓ рдЧрдПред
рджреЛрд╖ N5 enum FillRule { OddEvenFill, WindingFill }; QDataStream &operator>>(QDataStream &s, QPainterPath &p) { .... int fillRule; s >> fillRule; Q_ASSERT(fillRule == Qt::OddEvenFill || Qt::WindingFill); .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V768 CWE-571 рдЧрдгрдирд╛ рдирд┐рд░рдВрддрд░ 'рд╡рд┐рдВрдбрд┐рдВрдЧрдлрд┐рд▓' рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреВрд▓рд┐рдпрди-рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред qpainterpath.cpp 2479
рд╕рд╣рдордд рд╣реВрдБ, рдпрд╣ рдПрдХ рд╕реБрдВрджрд░ рдмреНрд▓реЛрдкрд░ рд╣реИ!
Q_ASSERT рдХреБрдЫ рднреА рдЪреЗрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд╛рд▓рдд рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддреА рд╣реИред рд╕реНрдерд┐рддрд┐ рд╕рддреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирд╛рдорд┐рдд
Qt :: WindingFill 1 рд╣реИред
рджреЛрд╖ N6 bool QVariant::canConvert(int targetTypeId) const { .... if (currentType == QMetaType::SChar || currentType == QMetaType::Char) currentType = QMetaType::UInt; if (targetTypeId == QMetaType::SChar || currentType == QMetaType::Char) targetTypeId = QMetaType::UInt; .... }
рдЪреЗрддрд╛рд╡рдиреА рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрд╡рдпрдВ рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЛ рд╣рд╛рдЬрд┐рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдПрдХ рддрд╕реНрд╡реАрд░ рдЬреЛрдбрд╝рдХрд░, рдореИрдВ рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рдВрджреЗрд╢ рдХреЛ рддреБрд░рдВрдд рдирд╣реАрдВ рдкрдврд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реВрдВрдЧрд╛ :)ред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V560 CWE-570 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ: currentType == QMetaType :: Charред qvariant.cpp 3529
рд╕реНрдерд┐рддрд┐ "currentType == QMetaType :: Char" рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рд╢рд░реНрдд рдкреВрд░реА рд╣реЛрддреА рд╣реИ, рддреЛ рдЪрд░
рд╡рд░реНрддрдорд╛рди рдЯрд╛рдЗрдк рдХреЛ QMetaType :: UInt рдорд╛рди
рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЗрд╕рд▓рд┐рдП, рдЖрдЧреЗ рдЪрд░
currentType рдЕрдм
QMetaType :: Char рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░реЗ рдореЗрдВ
, рдпрджрд┐ рд╕рдмрдкреНрд░реЗрд╢рди "currentType == QMetaType :: Char" рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреВрд╕рд░рд╛
рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
if (targetTypeId == QMetaType::SChar || targetTypeId == QMetaType::Char) targetTypeId = QMetaType::UInt;
V560 рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдиреЛрдЯрд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдХрдИ V560 рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдм рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬреИрд╕реЗ рд╣реА рдореБрдЭреЗ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓рд╛ рдорд┐рд▓рд╛, рдЬрд┐рд╕реЗ рдПрдХ рджреЛрд╖ N6 рдХреЗ рд░реВрдк рдореЗрдВ рдКрдкрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред
рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд V560 рдХреЛ рдЧрд▓рдд рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
QString QTextHtmlExporter::findUrlForImage(const QTextDocument *doc, ....) { QString url; if (!doc) return url; if (QTextDocument *parent = qobject_cast<QTextDocument *>(doc->parent())) return findUrlForImage(parent, cacheKey, isPixmap); if (doc && doc->docHandle()) {
рдЪреЗрддрд╛рд╡рдиреА PVS-Stuidio: V560 CWE-571 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: рдбреЙрдХреНрдЯрд░ред qtextdocument.cpp 2992
рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИ рдХрд┐
рдбреЙрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рджреЛрдмрд╛рд░рд╛
рдЬрд╛рдВрдЪреЗ рдЬрд╛рдиреЗ рдкрд░ рд╣рдореЗрд╢рд╛
рдЕрд╢рдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдерд╛ред рдЖрдк рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдХрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
if (doc->docHandle()) {
рджреЛрд╖ N7рдФрд░ рдЖрдЦрд┐рд░реА рдорд╛рдорд▓рд╛, рдЬрд┐рд╕реЗ рдЯрд╛рдЗрдкреЛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдирд╛рдореЛрдВ рдореЗрдВ рднреНрд░рдо рдХреЗ рдХрд╛рд░рдг рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИред
class QWindowsCursor : public QPlatformCursor { public: enum CursorState { CursorShowing, CursorHidden, CursorSuppressed }; .... } QWindowsCursor::CursorState QWindowsCursor::cursorState() { enum { cursorShowing = 0x1, cursorSuppressed = 0x2 }; CURSORINFO cursorInfo; cursorInfo.cbSize = sizeof(CURSORINFO); if (GetCursorInfo(&cursorInfo)) { if (cursorInfo.flags & CursorShowing) .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V616 CWE-480 'CursorShowing' рдХрд╛ рдирд╛рдо 0 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред qwindowscursor.cpp 669
рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЫреЛрдЯреЗ рдиреЛрдЯ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛: "
рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ
рд╡реНрдпрдХреНрддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ
рдЕрдзрд┐рдХ рдЪреМрдХрд╕ рд╣реЛ рдЧрдпрд╛ред"
рд╕реБрд░рдХреНрд╖рд╛ рджреЛрд╖
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рджреЛрд╖ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрди рд╕рднреА рдХреЛ
рд╕рд╛рдорд╛рдиреНрдп рдХрдордЬреЛрд░реА рдЧрдгрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реАрдбрдмреНрд▓реНрдпреВрдИ рдЖрдИрдбреА рджреЗрдЦреЗрдВ)ред рдпрджрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ CWE рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рд╣реИрдВред рдпрд╣
PVS-Studio SAST рдкреГрд╖реНрда рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдореВрд╣ рдореЗрдВ рдХрдИ рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рд╕реБрд▓рдЭрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред рдЖрдЗрдП рдЙрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред
рджреЛрд╖ N8, N9 bool QLocalServerPrivate::addListener() { .... SetSecurityDescriptorOwner(pSD.data(), pTokenUser->User.Sid, FALSE); SetSecurityDescriptorGroup(pSD.data(), pTokenGroup->PrimaryGroup, FALSE); .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:
- V530 CWE-252 'SetSecurityDescriptorOwner' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред qlocalserver_win.cpp 167
- V530 CWE-252 'SetSecurityDescriptorGroup' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред qlocalserver_win.cpp 168
рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдп рд╣реИрдВред
рд╕реЗрдЯрд╕реЗрдХреНрд╡рд┐рдЯреАрд╕рд┐рдЯреАрд╕реНрдХреНрд░рд┐рдкреНрдЯрдСрдлрдирд░ рдФрд░
рд╕реЗрдЯрд╕реИрдХреЗрд░рд┐рдЯреАрд╕реИрдбреЗрдХреНрдЯрд░рдЧреНрд░реЗрдЧрд░ рдХреЗ рдХрд╛рд░реНрдп рдЙрдирдХреЗ рдмреАрдЪ рд╣реИрдВред
рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡реЗ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╕рддреНрдпрд╛рдкрди рдХреА рдХрдореА рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдФрд░ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЬреЛрдЦрд┐рдо рдХрд╛ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рджреЛрд╖ N10 bool QLocalServerPrivate::addListener() { .... InitializeAcl(acl, aclSize, ACL_REVISION_DS); .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V530 CWE-252 рдлрд╝рдВрдХреНрд╢рди 'рдЖрд░рдВрдн' рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред qlocalserver_win.cpp 144
рд╕реНрдерд┐рддрд┐ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИред
рджреЛрд╖ N11, N12 static inline void sha1ProcessChunk(....) { .... quint8 chunkBuffer[64]; .... #ifdef SHA1_WIPE_VARIABLES .... memset(chunkBuffer, 0, 64); #endif }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V597 CWE-14 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'chunkBuffer' рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП RtlSecureZeroMemory () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред sha1.cpp 189
рдХрдВрдкрд╛рдЗрд▓рд░
рдореЗрдорд╕реЗрдЯ рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рдкрд╣рд▓реЗ рд╣реА рдХрдИ рдмрд╛рд░ рдореИрдВрдиреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЦреБрдж рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХрд╛ рдорди рдирд╣реАрдВ рд╣реИред рдореИрдВ рд▓реЗрдЦ "
рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдлрд╛рдИ " рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реВрдВред
рдФрд░ рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдЙрд╕реА sha1.cpp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ, рд▓рд╛рдЗрди 247 рдкрд░ред
рдЕрд╢рдХреНрдд рд╕рдВрдХреЗрдд
рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЧрд▓рддрд┐рдпрд╛рдБ рдереАрдВред
рджреЛрд╖ N13 QByteArray &QByteArray::append(const char *str, int len) { if (len < 0) len = qstrlen(str); if (str && len) { .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 CWE-476 'str' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 2118, 2119ред qbytearray.cpp 2118
рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░
рдирд▓реНрдЯреНрд░реЙрдк рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА
рдЬрд╛рддреА рд╣реИред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рд▓рдЧрднрдЧ рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ
рджреЗрдЦрддреЗ рд╣реИрдВ ред
рджреЛрд╖ N14, N15 static inline const QMetaObjectPrivate *priv(const uint* data) { return reinterpret_cast<const QMetaObjectPrivate*>(data); } bool QMetaEnum::isFlag() const { const int offset = priv(mobj->d.data)->revision >= 8 ? 2 : 1; return mobj && mobj->d.data[handle + offset] & EnumIsFlag; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 CWE-476 'mobj' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 2671, 2672ред qmetaobject.cpp 2671
рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ
рдирд┐рдЬреА рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╢рд░реАрд░ рдХреЛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдХрднреА-рдХрднреА рдкрд╛рдардХ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдХреЛрдб рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рдпрд╣ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рдореЗрдВ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреЗрдЦрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ :)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐
рдирд┐рдЬреА рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдореИрдХреНрд░реЛ рд╣реИ:
#define priv(A) foo(sizeof(A))
рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЗрд╕ рддрд░рд╣ рдХреА рдЪрд░реНрдЪрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред
рддреЛ,
modj рдкреЙрдЗрдВрдЯрд░
рдХреЛ рдбрд┐рдлрд░реЗрдВрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЧреЗ рджреГрд╢реНрдп рдкрд░ "рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рднрдпрд╛рдирдХ" рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдЖрддрд╛ рд╣реИред
рд╕рдорд░реВрдк рдХрд╛рд░реНрдп рдореЗрдВ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рдиреЗ рдХреЗ рдХрд╛рд░рдг:
bool QMetaEnum::isScoped() const { const int offset = priv(mobj->d.data)->revision >= 8 ? 2 : 1; return mobj && mobj->d.data[handle + offset] & EnumIsScoped; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 CWE-476 'mobj' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 2683, 2684ред qmetaobject.cpp 2683
рджреЛрд╖ N16-N21рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
void QTextCursor::insertFragment(const QTextDocumentFragment &fragment) { if (!d || !d->priv || fragment.isEmpty()) return; d->priv->beginEditBlock(); d->remove(); fragment.d->insert(*this); d->priv->endEditBlock(); if (fragment.d && fragment.d->doc) d->priv->mergeCachedResources(fragment.d->doc->docHandle()); }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 CWE-476 nullrr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'fragment.d' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 2238, 2241ред Qtextcursor.cpp 2238
рд╕рднреА рд╕рдорд╛рдиред рдЪрд░
рдЕрдВрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЗ рдЕрдиреБрдХреНрд░рдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ:
- N5ptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ V595 CWE-476 'рд╡рд┐рдВрдбреЛ' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 1846, 1848. qapplication.cpp 1846
- N5ptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ V595 CWE-476 'рд╡рд┐рдВрдбреЛ' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 1858, 1860ред qapplication.cpp 1858
- N5ptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ V595 CWE-476 'рдЙрддреНрддрд░' рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 492, 502ред qhttpnetworkconnectionchannel.cpp 492
- V595 CWE-476 'newHandle' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 877, 883. qsplitter.cpp 877
- V595 CWE-476 'рд╡рд┐рдЬреЗрдЯ' рдкреЙрдЗрдВрдЯрд░ рдХреЛ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреНрд╕: 2320, 2322ред qwindowsvistastyle.cpp 2320
- рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдореИрдВ рдЬрд▓реНрджреА рд╕реЗ V595 рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рд╕реАрдЦ рдХрд░ рдердХ рдЧрдпрд╛, рдФрд░ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдХреЛрдб рдЕрдВрд╢ рд▓рд┐рдЦ рджрд┐рдПред
рджреЛрд╖ N22-N33рдПрдХ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐
рдирдпрд╛ рдСрдкрд░реЗрдЯрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдмреАрдЪ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдВ
рдореЙрд▓реЙрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ (рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдореВрд╣ рджреЗрдЦреЗрдВ)ред
bool QTranslatorPrivate::do_load(const QString &realname, const QString &directory) { .... d->unmapPointer = new char[d->unmapLength]; if (d->unmapPointer) { file.seek(0); qint64 readResult = file.read(d->unmapPointer, d->unmapLength); if (readResult == qint64(unmapLength)) ok = true; } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V668 CWE-571 'd-> unmap Pointer' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЕрд╢рдХреНрдд рдХрд░рдиреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЛрдИ рд╕рдордЭрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдореГрддрд┐ рдХреЛ 'рдирдП' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред qtranslator.cpp 596
рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЪреЗрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрдкрд╡рд╛рдж
std :: bad_alloc рдлреЗрдВрдХрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐
рдирдпрд╛ рдСрдкрд░реЗрдЯрд░ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рди рд╣реЛрдиреЗ рдкрд░
рдирд▓реНрдЯреНрд░рдкреНрд░ рд▓реМрдЯ
рдЖрдП , рддреЛ рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
d->unmapPointer = new (std::nothrow) char[d->unmapLength];
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ
рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрдЧрд╛ред
рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдБ: рдореИрдВ рдЙрдиреНрд╣реЗрдВ
qt-V668.txt рдлрд╝рд╛рдЗрд▓ рджреВрдВрдЧрд╛ ред
рджреЛрд╖ N34-N70рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдм рдпрд╣ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдмрд╛рд░реА рд╣реИ рдЬрдм рд╡реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВ,
рдХреЙрд▓реЛрдХ ,
рд╕реНрдЯреНрд░реИрдкрдЕрдк , рдЖрджрд┐ред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╣реИрдВред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг: "
рдХреНрдпреЛрдВ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдореЙрд▓реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХреНрдпрд╛ рд▓реМрдЯрд╛ ред"
SourceFiles::SourceFiles() { nodes = (SourceFileNode**)malloc(sizeof(SourceFileNode*)*(num_nodes=3037)); for(int n = 0; n < num_nodes; n++) nodes[n] = nullptr; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V522 CWE-690 рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдирд▓ рдкреЙрдЗрдВрдЯрд░ 'рдиреЛрдбреНрд╕' рдХреА рдбреАрдлреНрд░реЗрдВрд╕рд┐рдВрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрд╛рдБрдЪ рд░реЗрдЦрд╛рдПрдБ: 138, 136. makefiledeps.cpp 138
рдкреВрд░реНрд╡ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд┐рдирд╛ рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпреЗ рд╕рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рдореИрдВ рдмрд╛рдХреА рдЪреЗрддрд╛рд╡рдиреА рд╕реВрдЪреА рджреЗ рджреВрдВрдЧрд╛:
qt-V522-V575.txt ред
рд╢рд░реНрддреЛрдВ рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдБ
рджреЛрд╖ N71 QString QEdidParser::parseEdidString(const quint8 *data) { QByteArray buffer(reinterpret_cast<const char *>(data), 13);
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V547 CWE-570 рдПрдХреНрд╕рдкреНрд░реЗрд╢рди 'рдмрдлрд░ [i] <' \ 040 '&& рдмрдлрд░ [i]>' 176 '' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред qedidparser.cpp 169
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП "рдЧреИрд░-рдореБрджреНрд░рдг рдпреЛрдЧреНрдп рд╡рд░реНрдгреЛрдВ рдХреЛ рдбреИрд╢ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ"ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд╣ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЖрдЗрдП рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
if (buffer[i] < '\040' && buffer[i] > '\176')
рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдПрдХ рд╡рд░реНрдг '\ 040' рд╕реЗ рдХрдо рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ '\ 176' рд╕реЗ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ '||' рд╕рд╣реА рдХреЛрдб рд╣реИ:
if (buffer[i] < '\040' || buffer[i] > '\176')
рджреЛрд╖ N72рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдВрдбреЛрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реИрдВред
#if defined(Q_OS_WIN) static QString driveSpec(const QString &path) { if (path.size() < 2) return QString(); char c = path.at(0).toLatin1(); if (c < 'a' && c > 'z' && c < 'A' && c > 'Z') return QString(); if (path.at(1).toLatin1() != ':') return QString(); return path.mid(0, 2); } #endif
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рджреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ:
- V590 CWE-571 'c <' a '&& c>' z '&& c <' A '&& c>' Z '' рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрддреНрдпрдзрд┐рдХ рд╣реИ рдпрд╛ рдПрдХ рдЧрд▓рдд рдЪрд┐рддреНрд░рдг рд╣реИред qdir.cpp 77
- V560 CWE-570 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ: c> 'z'ред qdir.cpp 77
рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ:
if (c < 'a' && c > 'z' && c < 'A' && c > 'Z')
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдХ рдРрд╕рд╛ рдЪрд░рд┐рддреНрд░ рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬреЛ рд▓реИрдЯрд┐рди рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХрд╛ рдЕрдХреНрд╖рд░ рди рд╣реЛред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
if ((c < 'a' || c > 'z') && (c < 'A' || c > 'Z'))
рджреЛрд╖ N73 enum SelectionMode { NoSelection, SingleSelection, MultiSelection, ExtendedSelection, ContiguousSelection }; void QAccessibleTableCell::unselectCell() { QAbstractItemView::SelectionMode selectionMode = view->selectionMode(); if (!m_index.isValid() || (selectionMode & QAbstractItemView::NoSelection)) return; .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V616 CWE-480 'QAbstractItemView :: NoSelection' рдХреЛ 0 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдЯрдо рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ред 976
рдирд╛рдорд┐рдд рдирд┐рд░рдВрддрд░
QAbstractItemView :: NoSelection рд╢реВрдиреНрдп рд╣реИред рдЗрд╕рд▓рд┐рдП,
рд╕рдмрдПрдХреНрдкреНрд░реЗрд╢рди (рд╕реЗрд▓реЗрдХреНрд╢рдирдореЛрдб рдФрд░ QAbstractItemView :: NoSelection) рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╣рдореЗрд╢рд╛ 0 рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдпрд╣рд╛рдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
if (!m_index.isValid() || (selectionMode == QAbstractItemView::NoSelection))
рджреЛрд╖ N74рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡рд╣ рдЧрд▓рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V547 CWE-570 рдПрдХреНрд╕рдкреНрд░реЗрд╢рди 'рд╕рдВрджреЗрд╢' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред qwindowscontext.cpp 802
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╢рд╛рдпрдж рдорд╛рдирддрд╛ рд╣реИ рдХрд┐
FormatMessage рдлрд╝рдВрдХреНрд╢рди
рд╕рдВрджреЗрд╢ рд╕реВрдЪрдХ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реИ рдирд╣реАрдВред
FormatMessage рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдорд╛рди рдХреЗ рдкрд╛рд╕ рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ:
DWORD __stdcall FormatMessageW( DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, va_list *Arguments );
рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдореГрддрд┐ рд▓реАрдХ
рджреЛрд╖ N75-N92 struct SourceDependChildren { SourceFile **children; int num_nodes, used_nodes; SourceDependChildren() : children(nullptr), num_nodes(0), used_nodes(0) { } ~SourceDependChildren() { if (children) free(children); children = nullptr; } void addChild(SourceFile *s) { if(num_nodes <= used_nodes) { num_nodes += 200; children = (SourceFile**)realloc(children, sizeof(SourceFile*)*(num_nodes)); } children[used_nodes++] = s; } };
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V701 CWE-401 realloc () рд╕рдВрднрд╛рд╡рд┐рдд рд░рд┐рд╕рд╛рд╡: рдЬрдм realloc () рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдореВрд▓ рдкреЙрдЗрдВрдЯрд░ 'рдмрдЪреНрдЪреЗ' рдЦреЛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдкреЙрдЗрдВрдЯрд░ рдХреЛ realloc () рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред makefiledeps.cpp 103
рдмрдлрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдЦрддрд░рдирд╛рдХ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐
realloc рдлрд╝рдВрдХреНрд╢рди рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣
NULL рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕
NULL рдХреЛ рддреБрд░рдВрдд
рдмрдЪреНрдЪреЛрдВ рдХреЗ рдЪрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдмрдлрд░ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╣реЛрдЧрд╛ред
рдЗрд╕реА рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ:
qt-701.txt ред
рдЕрдиреЗрдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣
рджреЛрд╖ N93 template<class GradientBase, typename BlendType> static inline const BlendType * QT_FASTCALL qt_fetch_linear_gradient_template(....) { .... if (t+inc*length < qreal(INT_MAX >> (FIXPT_BITS + 1)) && t+inc*length > qreal(INT_MIN >> (FIXPT_BITS + 1))) { .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V610 CWE-758 рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ред рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░ '>>' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдмрд╛рдпрд╛рдВ рд╕рдВрдЪрд╛рд▓рдХ '(- 2147483647 - 1)' рдЛрдгрд╛рддреНрдордХ рд╣реИред qdrawhelper.cpp 4015
INT_MIN рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ 0 рдпрд╛ 1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рджреЛрд╖ N94 void QObjectPrivate::addConnection(int signal, Connection *c) { .... if (signal >= connectionLists->count()) connectionLists->resize(signal + 1); ConnectionList &connectionList = (*connectionLists)[signal]; .... if (signal < 0) { .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V781 CWE-129 'рд╕рд┐рдЧреНрдирд▓' рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдЬрд┐рдХ рдореЗрдВ рдХреЛрдИ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреНрд╕: 397, 413. рдХреНрдпреВрдмрдЬреЗрдХреНрдЯ.рдЯреЗрдк 397
рдПрдХ рдЪреЗрдХ
(рд╕рдВрдХреЗрдд <0) рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐
рд╕рд┐рдЧреНрдирд▓ рддрд░реНрдХ рдХрд╛ рдореВрд▓реНрдп рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рддрд░реНрдХ рдкрд╣рд▓реЗ рд╕рд░рдгреА рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЪреЗрдХ рдмрд╣реБрдд рджреЗрд░ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд╣рд▓реЗ рд╣реА рдмрд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рджреЛрд╖ N95 bool QXmlStreamWriterPrivate::finishStartElement(bool contents) { .... if (inEmptyElement) { write("/>"); QXmlStreamWriterPrivate::Tag &tag = tagStack_pop(); lastNamespaceDeclaration = tag.namespaceDeclarationsSize; lastWasStartElement = false; } else { write(">"); } inStartElement = inEmptyElement = false; lastNamespaceDeclaration = namespaceDeclarations.size(); return hadSomethingWritten; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V519 CWE-563 'lastNamespaceDeclaration' рдЪрд░ рдХреЛ рджреЛ рдмрд╛рд░ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 3188, 3194ред qxmlstream.cpp 3194
рдореИрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реВрдВрдЧрд╛:
if (inEmptyElement) { lastNamespaceDeclaration = tag.namespaceDeclarationsSize; } lastNamespaceDeclaration = namespaceDeclarations.size();
рджреЛрд╖ N96 void QRollEffect::scroll() { .... if (currentHeight != totalHeight) { currentHeight = totalHeight * (elapsed/duration) + (2 * totalHeight * (elapsed%duration) + duration) / (2 * duration);
V519 CWE-563 'рдХрд┐рдпрд╛' рдЪрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: 509, 511
рдкрд┐рдЫрд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реИред
рдХрд┐рдП рдЧрдП рдЪрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рд╕рддрд╣реА рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдкрд░, рдореИрдВрдиреЗ рд▓рдЧрднрдЧ 100 рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд▓рд┐рдЦреАрдВред рдореИрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реВрдВред
рдмреЗрд╢рдХ, рдРрд╕реЗ рджреБрд░реНрд▓рдн рдХреЛрдб рдЪреЗрдХ рдХрд╛ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рд╡реЗ рдХреЗрд╡рд▓ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдХреАрдбрд╝реЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдорд╛рд░реЗ рдирдП рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдПрдХ рдЪреИрдирд▓ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:
- VK.com: pvsstudio_rus
- "рдУрд▓реНрдб рд╕реНрдХреВрд▓" RSS: viva64-blog-ru
- рдЯреНрд╡рд┐рдЯрд░: @pvsstudio_rus
- рдЗрдВрд╕реНрдЯрд╛рдЧреНрд░рд╛рдо: @pvsstudio_rus
- рдЯреЗрд▓реАрдЧреНрд░рд╛рдо: @pvsstudio_rus

рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдВрдбреНрд░реЗ рдХрд╛рд░рдкреЛрд╡ред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдХреНрдпреВрдЯреА 5 рдХрд╛ рддреАрд╕рд░рд╛ рдЪреЗрдХ