PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде FreeRDP рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛

рдЪрд┐рддреНрд░ 2

FreeRDP рд░рд┐рдореЛрдЯ рдбреЗрд╕реНрдХрдЯреЙрдк рдкреНрд░реЛрдЯреЛрдХреЙрд▓ (RDP) рдХрд╛ рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЬреЛ Microsoft рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рджреВрд░рд╕реНрде рдХрдВрдкреНрдпреВрдЯрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕, рдореИрдХрдУрдПрд╕ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдИрдУрдПрд╕ рд╕рд╣рд┐рдд рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░рдбреАрдкреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкрд╣рд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред

рдереЛрдбрд╝рд╛ рд╕рд╛ рдЗрддрд┐рд╣рд╛рд╕


рдлреНрд░реАрдЖрд░рдбреАрдкреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдЖрд░рдбреАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЕрдирд╛рд╡рд░рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдИред рдЙрд╕ рд╕рдордп, рдПрдХ rdesktop рдХреНрд▓рд╛рдЗрдВрдЯ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рддрддреНрдХрд╛рд▓реАрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдХрд╛рд░рдг рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ред рдЗрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрдШрд░реНрд╖ рдкреИрджрд╛ рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд░реЗрдХрд╕реНрдХреЛрдк рдХрд╛рдВрдЯрд╛ - рдлреНрд░реАрдЖрд░рдбреАрдкреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реБрдЖред рдЙрддреНрдкрд╛рдж рдХрд╛ рдЖрдЧреЗ рд╡рд┐рддрд░рдг GPLv2 рд▓рд╛рдЗрд╕реЗрдВрд╕ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдерд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк Apache рд▓рд╛рдЗрд╕реЗрдВрд╕ v2 рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдб рдЖрдзрд╛рд░ рдХрд╛ рдЖрдзреБрдирд┐рдХ рд░реВрдк рд╣реИред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреНрд▓реЙрдЧ рдиреЛрдЯ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: "рдлреНрд░реАрдбреНрд░реЙрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕"ред

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдпрд╣ рд╕реА, рд╕реА ++, рд╕реА #, рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИ, рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

рд▓реЗрдЦ рдХреЗрд╡рд▓ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддреЗ рдереЗред

рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡


V773 'cwd' рдкреЙрдЗрдВрдЯрд░ рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред рдкрд░реНрдпрд╛рд╡рд░рдгред 84рек

DWORD GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer) { char* cwd; .... cwd = getcwd(NULL, 0); .... if (lpBuffer == NULL) { free(cwd); return 0; } if ((length + 1) > nBufferLength) { free(cwd); return (DWORD) (length + 1); } memcpy(lpBuffer, cwd, length + 1); return length; .... } 

рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рд╡рд┐рдЬреЗрддрд╛ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП WINAPI рдЖрд╡рд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдпрд╣ рд╡рд╛рдЗрди рдХрд╛ рдПрдХ рд╣рд▓реНрдХрд╛ рдкреНрд░рддрд┐рд░реВрдк рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рд░рд┐рд╕рд╛рд╡ рд╣реИ: рдЧреЗрдЯрдХреЙрд╡ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЛ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЗ рджреМрд░рд╛рди рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, memcpy рдХреЗ рдмрд╛рдж рдореБрдлреНрдд рдореЗрдВ рдХреЙрд▓ рдЬреЛрдбрд╝реЗрдВред

рдХрд┐рд╕реА рд╡реНрдпреВрд╣ рдХреА рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдЬрд╛рдирд╛


V557 рдРрд░реЗ рдУрд╡рд░рд░рди рд╕рдВрднрд╡ рд╣реИред 'рдЗрд╡реЗрдВрдЯ-> EventHandlerCount' рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдорд╛рди 32 рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддрд╛ рд╣реИред PubSub.c 117

 #define MAX_EVENT_HANDLERS 32 struct _wEventType { .... int EventHandlerCount; pEventHandler EventHandlers[MAX_EVENT_HANDLERS]; }; int PubSub_Subscribe(wPubSub* pubSub, const char* EventName, pEventHandler EventHandler) { .... if (event->EventHandlerCount <= MAX_EVENT_HANDLERS) { event->EventHandlers[event->EventHandlerCount] = EventHandler; event->EventHandlerCount++; } .... } 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдирдпрд╛ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХрддрдо рддрдХ рдкрд╣реБрдВрдЪ рдЧрдИ рд╣реЛред рдпрд╣ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ = = рдХреЗ рд╕рд╛рде рддрд╛рдХрд┐ рд╕рд░рдгреА рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рди рдЬрд╛рдПред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдкрд╛рдИ рдЧрдИ:

  • V557 рдРрд░реЗ рдУрд╡рд░рд░рди рд╕рдВрднрд╡ рд╣реИред 'IBitmapFormat' рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдорд╛рди 8. рдЖрджреЗрд╢реЛрдВ 2623 рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддрд╛ рд╣реИ

рд╢реБрджреНрдзрд┐рдкрддреНрд░


рдЯреБрдХрдбрд╝рд╛ рдХрд░рдирд╛ рез


V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдкрд╛рдЗрдк!> рдореЗрдВ' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИред 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; .... } 

рдпрд╣рд╛рдВ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдЯрд╛рдЗрдкреЛ рджреЗрдЦрддреЗ рд╣реИрдВ: рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЙрд╕реА рдЪрд░ рдХреЛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдХреЛрдб рдХреА рдЕрд╕рдлрд▓ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреАред

рдЯреБрдХрдбрд╝рд╛ рдХрд░рдирд╛ реи


V760 рдкрд╛рда рдХреЗ рджреЛ рд╕рдорд╛рди рдЦрдВрдб рдкрд╛рдП рдЧрдПред рджреВрд╕рд░рд╛ рдмреНрд▓реЙрдХ рд▓рд╛рдЗрди 771 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред tsg.c 770

 typedef struct _TSG_PACKET_VERSIONCAPS { .... UINT16 majorVersion; UINT16 minorVersion; .... } TSG_PACKET_VERSIONCAPS, *PTSG_PACKET_VERSIONCAPS; static BOOL TsProxyCreateTunnelReadResponse(....) { .... PTSG_PACKET_VERSIONCAPS versionCaps = NULL; .... /* MajorVersion (2 bytes) */ Stream_Read_UINT16(pdu->s, versionCaps->majorVersion); /* MinorVersion (2 bytes) */ Stream_Read_UINT16(pdu->s, versionCaps->majorVersion); .... } 

рдПрдХ рдЕрдиреНрдп рдЯрд╛рдЗрдкреЛ: рдХреЛрдб рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдорд╛рдореВрд▓реА рд╡рд┐рдЪрд▓рди рдзрд╛рд░рд╛ рд╕реЗ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрдарди рдХреЛ рд╡реЗрд░рд┐рдПрд╢рди рдирд╛рдордХ рдПрдХ рдЪрд░ рдореЗрдВ рдЬрдЧрд╣ рдорд┐рд▓рддреА рд╣реИ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдзрд╛рд░рдгрд╛ рд╣реИред

рдЯреБрдХрдбрд╝реЗ рдХрд░рдирд╛ рей


V524 рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ 'trio_index_last' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢рд░реАрд░ 'trio_index' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордХрдХреНрд╖ рд╣реИред triostr.c 933

 /** Find first occurrence of a character in a string. .... */ TRIO_PUBLIC_STRING char * trio_index TRIO_ARGS2((string, character), TRIO_CONST char *string, int character) { assert(string); return strchr(string, character); } /** Find last occurrence of a character in a string. .... */ TRIO_PUBLIC_STRING char * trio_index_last TRIO_ARGS2((string, character), TRIO_CONST char *string, int character) { assert(string); return strchr(string, character); } 

рдЯрд┐рдкреНрдкрдгреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, trio_index_last рдЕрдВрддрд┐рдо рд╣реИ рдЬрдм trio_index рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдкрд╣рд▓рд╛ рдореИрдЪ рдкрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╢рд░реАрд░ рд╕рдорд╛рди рд╣реИрдВ! рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ, рдФрд░ trio_index_last рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЖрдкрдХреЛ strrr рдХреЗ рдмрдЬрд╛рдп strrchr рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рддрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ред

рдЯреБрдХрдбрд╝реЗ рдХрд░рдирд╛ рек


V769 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ 'рдбреЗрдЯрд╛' рд╕реВрдЪрдХ nullptr рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕ рд╕реВрдЪрдХ рдкрд░ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдп рд╕рдВрд╡реЗрджрдирд╣реАрди рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред nsc_encode.c 124

 static BOOL nsc_encode_argb_to_aycocg(NSC_CONTEXT* context, const BYTE* data, UINT32 scanline) { .... if (!context || data || (scanline == 0)) return FALSE; .... src = data + (context->height - 1 - y) * scanline; .... } 

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЧрд▓рддреА рд╕реЗ рдирдХрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ ! рдбреЗрдЯрд╛ рдХреЗ рдмрдЧрд▓ рдореЗрдВред рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рдЧрдпрд╛ред

рдЯреБрдХрдбрд╝рд╛ рел


V517 'if (A) {...} рдХрд╛ рдЙрдкрдпреЛрдЧ if (A) {...}' рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрди: 213, 222. rdpei_common.c 213

 BOOL rdpei_write_4byte_unsigned(wStream* s, UINT32 value) { BYTE byte; if (value <= 0x3F) { .... } else if (value <= 0x3FFF) { .... } else if (value <= 0x3FFFFF) { byte = (value >> 16) & 0x3F; Stream_Write_UINT8(s, byte | 0x80); byte = (value >> 8) & 0xFF; Stream_Write_UINT8(s, byte); byte = (value & 0xFF); Stream_Write_UINT8(s, byte); } else if (value <= 0x3FFFFF) { byte = (value >> 24) & 0x3F; Stream_Write_UINT8(s, byte | 0xC0); byte = (value >> 16) & 0xFF; Stream_Write_UINT8(s, byte); byte = (value >> 8) & 0xFF; Stream_Write_UINT8(s, byte); byte = (value & 0xFF); Stream_Write_UINT8(s, byte); } .... } 

рдЕрдВрддрд┐рдо рджреЛ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╕рдорд╛рди рд╣реИрдВ: рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдХреЛрдИ рдирдХрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдЬрд╛рдВрдЪрдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдХреЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдЪрд╛рд░-рдмрд╛рдЗрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдХрд╛ рдореВрд▓реНрдп <= 0x3FFFFFFF рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдкрд╛рдИ рдЧрдИ:

  • V517 'if (A) {...} рдХрд╛ рдЙрдкрдпреЛрдЧ if (A) {...}' рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 169, 173. file.c 169

рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди


рдЯреБрдХрдбрд╝рд╛ рдХрд░рдирд╛ рез


V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рд╕реНрдЯреНрд░реИрдЯ (рд▓рдХреНрд╖реНрдп, рд╕реНрд░реЛрдд)! = NULL' рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИред 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); } 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЧрд▓рдд рд╣реИред рд╕реНрдЯреНрд░реИрдХрдЯ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд▓рдХреНрд╖реНрдп рд╣реИ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рдпрд╣ NULL рд╣реИ , рддреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдореЗрдВ рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ strcat function рдореЗрдВ рдЗрд╕реЗ dereferenced рдЬрд╛рдПрдЧрд╛ред

рдЯреБрдХрдбрд╝рд╛ рдХрд░рдирд╛ реи


V547 рдПрдХреНрд╕рдкреНрд░реЗрд╢рди 'рдХреИрд╢' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред 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) { .... } .... } 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреИрд╢ рдЪрд░ рдХреЛ рд╕реНрдерд┐рд░ рд╕рд░рдгреА рдЧреНрд▓рд┐рдлрд╝рдХреИрдЪ-> рдЧреНрд▓рд┐рдлрд╝рдХреИрдЪ рдХрд╛ рдкрддрд╛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ (рдХреИрд╢) рдЪреЗрдХ рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди рддреНрд░реБрдЯрд┐


V1005 рд╕рдВрд╕рд╛рдзрди 'CreateFileA' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдЕрд╕рдВрдЧрдд 'fclose' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рдорд╛рдг рдкрддреНрд░ред рекрек 44

 BOOL certificate_data_replace(rdpCertificateStore* certificate_store, rdpCertificateData* certificate_data) { HANDLE fp; .... fp = CreateFileA(certificate_store->file, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); .... if (size < 1) { CloseHandle(fp); return FALSE; } .... if (!data) { fclose(fp); return FALSE; } .... } 

CreateFile рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ fp рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдмрдВрдж рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдмрдЬрд╛рдп рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдлрд╝реНрд▓реЗрдХреЛрдЬрд╝ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЧрд▓рддреА рд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╣реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ


V581 рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд 'if' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдХреЗ рд╕рд╢рд░реНрдд рднрд╛рд╡ рд╕рдорд╛рди рд╣реИрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 269, 283. ndr_structure.c 283

 void NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat) { .... if (conformant_array_description) { ULONG size; unsigned char array_type; array_type = conformant_array_description[0]; size = NdrComplexStructMemberSize(pStubMsg, pFormat); WLog_ERR(TAG, "warning: NdrComplexStructBufferSize array_type: " "0x%02X unimplemented", array_type); NdrpComputeConformance(pStubMsg, pMemory + size, conformant_array_description); NdrpComputeVariance(pStubMsg, pMemory + size, conformant_array_description); MaxCount = pStubMsg->MaxCount; ActualCount = pStubMsg->ActualCount; Offset = pStubMsg->Offset; } if (conformant_array_description) { unsigned char array_type; array_type = conformant_array_description[0]; pStubMsg->MaxCount = MaxCount; pStubMsg->ActualCount = ActualCount; pStubMsg->Offset = Offset; WLog_ERR(TAG, "warning: NdrComplexStructBufferSize array_type: " "0x%02X unimplemented", array_type); } .... } 

рд╢рд╛рдпрдж рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рд╕рдВрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрд▓рд┐рдпрд░рд┐рдВрдЧ рдиреНрдпреВрд▓ рдкреЙрдЗрдВрдЯрд░реНрд╕


V575 null рдкреЙрдЗрдВрдЯрд░ рдХреЛ 'рдлреНрд░реА' рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред smartcard_pcsc.c 875

 WINSCARDAPI LONG WINAPI PCSC_SCardListReadersW( SCARDCONTEXT hContext, LPCWSTR mszGroups, LPWSTR mszReaders, LPDWORD pcchReaders) { LPSTR mszGroupsA = NULL; .... mszGroups = NULL; /* mszGroups is not supported by pcsc-lite */ if (mszGroups) ConvertFromUnicode(CP_UTF8,0, mszGroups, -1, (char**) &mszGroupsA, 0, NULL, NULL); status = PCSC_SCardListReaders_Internal(hContext, mszGroupsA, (LPSTR) &mszReadersA, pcchReaders); if (status == SCARD_S_SUCCESS) { .... } free(mszGroupsA); .... } 

рдЖрдк рдирд┐: рд╢реБрд▓реНрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирд▓ рд╕реВрдЪрдХ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп рд╕реЗ рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рдЬрд╛рдПрдЧреАред

MszGroupsA рдкреЙрдЗрдВрдЯрд░ рд╢реБрд░реВ рдореЗрдВ NULL рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдб рдХреА рдПрдХрдорд╛рддреНрд░ рд╢рд╛рдЦрд╛ рдЬрд╣рд╛рдВ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред

рдЗрд╕ рддрд░рд╣ рдЕрдиреНрдп рдкреЛрд╕реНрдЯ рдереЗ:

  • V575 null рдкреЙрдЗрдВрдЯрд░ рдХреЛ 'рдлреНрд░реА' рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рд▓рд╛рдЗрд╕реЗрдВрд╕ред 790
  • V575 null рдкреЙрдЗрдВрдЯрд░ рдХреЛ 'рдлреНрд░реА' рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред rdpsnd_alsa.c 575

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рднреВрд▓ рдЧрдП рдЪрд░ refactoring рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рд╣рдЯрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрднрд╡ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣


V1028 рд╕рдВрднрд╛рд╡рд┐рдд рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ред рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдСрдкрд░реЗрдВрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВред makecert.c 1087

 // openssl/x509.h ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); struct _MAKECERT_CONTEXT { .... int duration_years; int duration_months; }; typedef struct _MAKECERT_CONTEXT MAKECERT_CONTEXT; int makecert_context_process(MAKECERT_CONTEXT* context, ....) { .... if (context->duration_months) X509_gmtime_adj(after, (long)(60 * 60 * 24 * 31 * context->duration_months)); else if (context->duration_years) X509_gmtime_adj(after, (long)(60 * 60 * 24 * 365 * context->duration_years)); .... } 

рдкрд░рд┐рдгрд╛рдо рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓рд╛рдирд╛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧрдгрдирд╛ рд╕реНрд╡рдпрдВ рдЗрдВрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИред

рдЖрд░рдВрднрд┐рдХ рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ рдбрд┐рдлреНрд░реЗрдВрд╕рд┐рдВрдЧ


V595 nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рд╕рдВрджрд░реНрдн' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 746, 748. gfx.c 746

 static UINT gdi_SurfaceCommand(RdpgfxClientContext* context, const RDPGFX_SURFACE_COMMAND* cmd) { .... rdpGdi* gdi = (rdpGdi*) context->custom; if (!context || !cmd) return ERROR_INVALID_PARAMETER; .... } 

рдпрд╣рд╛рдВ, рд╕рдВрджрд░реНрдн рд╕реВрдЪрдХ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рдИ рдЧрдИрдВ:

  • V595 'ntlm' рдкреЙрдЗрдВрдЯрд░ рдХреЛ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 236, 255. ntlm.c 236
  • V595 nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рд╕рдВрджрд░реНрдн' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 1003, 1007. rfx.c 1003
  • V595 ndptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'rdpei' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 176, 180. rdpei_main.c 176
  • V595 nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'gdi' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 121, 123. xf_gfx.c 121

рдЕрд░реНрдерд╣реАрди рд╕реНрдерд┐рддрд┐


V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'rdp-> рд░рд╛рдЬреНрдп> = CONNECTION_STATE_ACTIVE' рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИред рдХрдиреЗрдХреНрд╢рдиред резрек.c реп

 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; } .... } .... } 

рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореВрд▓реНрдп рдХреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдХрд╛рд░рдг рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИред

рдЧрд▓рдд рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд┐рдВрдЧ


V576 рдЧрд▓рдд рдкреНрд░рд╛рд░реВрдкред 'Sscanf' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддреАрд╕рд░реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд int рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдЫрджреНрдо 220

V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: (рдЖрд░рд╕реА> = 0)ред рдЫрджреНрдо 222
 static BOOL check_no_proxy(....) { .... int sub; int rc = sscanf(range, "%u", &sub); if ((rc == 1) && (rc >= 0)) { .... } .... } 

рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рддреБрд░рдВрдд 2 рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред % U рд╕реНрдкреЗрд╕рд┐рдлрд╝рд╛рдпрд░ рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд int рдХреЗ рдПрдХ рдЪрд░ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд░ рдЙрдк рдкреНрд░рдХрд╛рд░ int рдХрд╛ рд╣реИ ред рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рд╕рдВрджрд┐рдЧреНрдз рдЬрд╛рдВрдЪ рджреЗрдЦрддреЗ рд╣реИрдВ: рджрд╛рдИрдВ рдУрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХрддрд╛ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдорди рдореЗрдВ рдХреНрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рдЧрд▓рдд рд╣реИред

рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЪреЗрдХ


V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рд╕реНрдерд┐рддрд┐ == 0x00090314' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред 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; .... } 

рдЪрд┐рд╣реНрдирд┐рдд рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрдВрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗрд╡рд▓ рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рд╕реНрдерд┐рддрд┐ == SEC_E_OK ред рд╕рд╣реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

 if (status == SEC_I_COMPLETE_NEEDED) status = SEC_E_OK; else if (status == SEC_I_COMPLETE_AND_CONTINUE) status = SEC_I_CONTINUE_NEEDED; else if (status != SEC_E_OK) { .... return FALSE; } 

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдореЗрдВ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рд╛рдордиреЗ рдЖрдИрдВ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рднрд╛рдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреБрдВрдЬреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗ рд╕реНрд╡рдпрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рднреА рдереА, рдЬрд┐рд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдлрд┐рд░ рднреА, рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдпрджрд┐ рдЖрдк рди рдХреЗрд╡рд▓ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рднреА рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрд╕рдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



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

Source: https://habr.com/ru/post/hi444242/


All Articles