рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХреЗрдВ

рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдФрд░ рдЬрд╛рджреВ

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

рдкрд░рд┐рдЪрдп


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

рддреНрд░реБрдЯрд┐ 10-20 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реБрдИред рдЙрдкрдХрд░рдг рдХреЗ рдХрд╛рдо рдЕрдХреНрд╕рд░ рдХреЛрдб рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЦрддрд░рдирд╛рдХ рдкреИрдЯрд░реНрди рдЬреИрд╕реЗ рд╕реНрдЯреНрд░реИрдкреА , рд╕реНрдЯреНрд░реИрдХрдЯ , рдЖрджрд┐ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ RATS рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕реЗ рдЙрдкрдХрд░рдг, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдо рддреМрд░ рдкрд░ рдмреЗрд╡рдХреВрдл рдФрд░ рдЕрдкреНрд░рднрд╛рд╡реА рдереЗред рдпрд╣ рдЙрди рд╕рдордп рд╕реЗ рд╣реИ рдХрд┐ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдпрд╛рджреЗрдВ рд╣реИрдВ рдХрд┐ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрд╣реБрдд рдмреЗрдХрд╛рд░ рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ рдорджрдж рд╕реЗ рдХрд╛рдо рдореЗрдВ рдЕрдзрд┐рдХ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреЗ рд╣реИрдВред

рд╕рдордп рдмреАрддрдиреЗ рд▓рдЧрд╛, рдФрд░ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЬрдЯрд┐рд▓ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЧрдарди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЬреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЪреМрдХрд╕ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдмрд╛рдж рднреА рдХреЛрдб рдореЗрдВ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкрд┐рдЫрд▓реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдЕрдиреБрднрд╡ рдХреЗ рдХрд╛рд░рдг, рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрднреА рднреА рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрджреНрдзрддрд┐ рдХреЛ рдмреЗрдХрд╛рд░ рдорд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЬрд▓реНрджреА рдирд╣реАрдВ рд╣реИред

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

рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


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

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

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

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

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

PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджреЛ рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

  • V547 / CWE-571 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'time.month <= kDaysInMonth [time.month] + 1' рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИред рд╕рдордп .cc 83
  • V547 / CWE-571 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'time.month <= kDaysInMonth [time.month]' рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддреА рд╣реИред рд╕рдордп .cc 85

рдЙрдкрдкреНрд░рдХрд╛рд░ рдзреНрдпрд╛рди рджреЗрдВ "time.month <1 || рд╕рдордпред рдорд╣реАрдиреЗ> 12 "ред рдпрджрд┐ рдорд╣реАрдиреЗ рдХрд╛ рдореВрд▓реНрдп рд╕реАрдорд╛ рдХреЗ рдмрд╛рд╣рд░ рд╣реИ [рез.рез.резреи], рддреЛ рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рджреВрд╕рд░рд╛ рдпрджрд┐ рдХрдерди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдорд╣реАрдиреЗ рдХрд╛ рдореВрд▓реНрдп рд╕реАрдорд╛ [1..12] рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд┐рд╣рд┐рдд рд╣реИред рдЗрд╕реА рддрд░рд╣, рд╡рд╣ рдЕрдиреНрдп рдЪрд░ (рд╡рд░реНрд╖, рджрд┐рди, рдЖрджрд┐) рдХреА рд╕реАрдорд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдм рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВред

рдЕрдм рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╕рдорд╛рди рдСрдкрд░реЗрдЯрд░реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ: kDaysInMonth [time.month] ред

рд╕рд░рдгреА рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдкрдиреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ:

 static const int kDaysInMonth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 

рдЪреВрдВрдХрд┐ рдорд╣реАрдиреЗ 1 рд╕реЗ рдЧрд┐рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рд░рдгреА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ 0 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд░реЗрдВрдЬ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп [28..31] рдХреЛ рд╕рд░рдгреА рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрд╖ рдПрдХ рд▓реАрдк рд╡рд░реНрд╖ рд╣реИ рдпрд╛ рдирд╣реАрдВ, 1 рдХреЛ рджрд┐рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рддреБрд▓рдирд╛ рд╕реНрд╡рдпрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ:

 time.month <= kDaysInMonth[time.month] + 1; time.month <= kDaysInMonth[time.month]; 

рд░реЗрдВрдЬ [1..12] (рдорд╣реАрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛) рдорд╣реАрдиреЗ рдореЗрдВ рджрд┐рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╣реАрдирд╛ рд╣рдореЗрд╢рд╛ рдлрд░рд╡рд░реА ( time.month == 2 ) рдХрд╛ рд╣реЛрддрд╛ рд╣реИ, рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реЗрдВрдЬреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ:

  • 2 <= 29
  • [1..12] <= [28..31]

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

рд╕рд╣реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 if (time.month == 2 && IsLeapYear(time.year)) { return time.day <= kDaysInMonth[time.month] + 1; } else { return time.day <= kDaysInMonth[time.month]; } 

рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрд╣рд▓реЗ " 31 рдлрд░рд╡рд░реА " рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред

рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдирд┐рд╖реНрдкрд╛рджрди


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

рдореБрдЭреЗ рд╣рдорд╛рд░реЗ рддреНрд░реБрдЯрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдбреЗрдореЛ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

 int Foo(int A, int B) { if (A == B) return 10 / (A - B); return 1; } 

PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╢реВрдиреНрдп рд╕реЗ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА V609 / CWE-369 рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдбреЗрдиреЛрдорд┐рдиреЗрдЯрд░ 'рдП - рдмреА' == 0. test.cpp 12

рдЪрд░ рдП рдФрд░ рдмреА рдХреЗ рдорд╛рди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рд╣реИрдВ ред рд▓реЗрдХрд┐рди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 10 / (рдП - рдмреА) рдХреА рдЧрдгрдирд╛ рдХреЗ рд╕рдордп , рдЪрд░ рдП рдФрд░ рдмреА рдмрд░рд╛рдмрд░ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, 0 рд╕реЗ рд╡рд┐рднрд╛рдЬрди рдШрдЯрд┐рдд рд╣реЛрдЧрд╛ред

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

 int Div(int X) { return 10 / X; } void Foo() { for (int i = 0; i < 5; ++i) Div(i); } 

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╢реВрдиреНрдп рд╕реЗ рд╡рд┐рднрд╛рдЬрди рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ: V609 CWE-628 рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред Denominator 'X' == 0. 'Div' рдлрдВрдХреНрд╢рди рдкреНрд░реЛрд╕реЗрд╕ рдХреА рд╡реИрд▓реНрдпреВ '[0..4] рд╣реИред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 106, 110. consoleapplication2017.cpp 106

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг рдпрд╣рд╛рдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рдзрд┐ рдПрдиреЛрдЯреЗрд╢рди (рд╣рдо рдЕрдЧрд▓реЗ рдЦрдВрдб рдореЗрдВ рдЗрд╕ рддрдХрдиреАрдХ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ)ред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ Div рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЪрд░ X рдХреЛ рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдбрд┐рд╡ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдиреЛрдЯреЗрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реАрдорд╛ [0..4] рдПрдХ рддрд░реНрдХ X рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреА рдЬрд╛рддреА рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реИ рдХрд┐ 0 рд╕реЗ рд╡рд┐рднрд╛рдЬрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рдзрд┐ рдПрдиреЛрдЯреЗрд╢рди


рд╣рдорд╛рд░реА рдЯреАрдо рдиреЗ рд╣рдЬрд╛рд░реЛрдВ рдХрд╛рд░реНрдп рдФрд░ рд╡рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд┐рдП рд╣реИрдВ:

  • WinAPI
  • C рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп
  • рдорд╛рдирдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (STL),
  • glibc (GNU C рд▓рд╛рдЗрдмреНрд░реЗрд░реА)
  • рдХреНрдпреВрдЯреА
  • MFC
  • zlib
  • libpng
  • OpenSSL
  • рдФрд░ рдЗрд╕реА рддрд░рд╣

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

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ: рдлрдВрдХреНрд╢рди рдорд╛рд░реНрдХрдЕрдк

рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдирд┐рдореНрди рдХреЛрдб, рдЬреЛ рдлрд╝реНрд░реЗрдб рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреБрд░рдВрдд рджреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░реЗрдЧрд╛ред

 void Foo(FILE *f) { char buf[100]; size_t i = fread(buf, sizeof(char), 1000, f); buf[i] = 1; .... } 

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:
  • V512 CWE-119 'рдлреНрд░реЗрдб' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЙрд▓ рд╕реЗ рдмрдлрд░ 'buf' рдХрд╛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрдЧрд╛ред test.cpp 116
  • V557 CWE-787 рдРрд░реЗ рдУрд╡рд░рд░рди рд╕рдВрднрд╡ рд╣реИред 'I' рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдорд╛рди 1000 рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред test.cpp 117

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ 2 рдФрд░ 3 рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдХреЛ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдФрд░ рдЧрдгрдирд╛ рдХреА рдХрд┐ рдлрд╝рдВрдХреНрд╢рди 1000 рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛ рддрдХ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмрдлрд╝рд░ рдЖрдХрд╛рд░ рдХреЗрд╡рд▓ 100 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ, рдФрд░ рдпрд╣ рдУрд╡рд░рдлрд╝реНрд▓реЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░реЗ, рдЪреВрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди 1000 рдмрд╛рдЗрдЯреНрд╕ рддрдХ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдЪрд░ I рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдиреЛрдВ рдХреА рд╕реАрдорд╛ [0..1000] рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╕рд░рдгреА рддрдХ рдкрд╣реБрдВрдЪ рдЧрд▓рдд рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЖрдЗрдП рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдПрдХ рдФрд░ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛, рдореЗрдорд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдБ CryEngine V. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реИред

 void EnableFloatExceptions(....) { .... CONTEXT ctx; memset(&ctx, sizeof(ctx), 0); .... } 

PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдХ рдЯрд╛рдЗрдкреЛ рдкрд╛рдпрд╛: V575 'рдореЗрдорд╕реЗрдЯ' рдлрдВрдХреНрд╢рди рдкреНрд░реЛрд╕реЗрд╕ '0' рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ред рддреАрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред crythreadutil_win32.h 294

рд╕рдорд╛рд░реЛрд╣ рдХреЗ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЛ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ред рдирддреАрдЬрддрди, рдлрд╝рдВрдХреНрд╢рди 0 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕ рд╡рд┐рд╕рдВрдЧрддрд┐ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ " рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд CryEngine V Validation " рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдерд╛ред

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

 int GlobalInt; int *Get() { return (rand() % 2) ? nullptr : &GlobalInt; } void Use() { *Get() = 1; } 

рдЪреЗрддрд╛рд╡рдиреА: V522 CWE-690 рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдирд▓ рдкреЙрдЗрдВрдЯрд░ 'рдЧреЗрдЯ ()' рдХреА рдбреАрдлреНрд░реЗрдВрд╕рд┐рдВрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред test.cpp 129

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

рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди


рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреЗ рд╣реБрдП рддрдХрдиреАрдХ, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдЦреЛрдЬ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛ , рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЖрдо рддреМрд░ рдкрд░ рдмреЗрдХрд╛рд░ рд╣реИрдВред рджреВрд╕рд░реЗ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЯреЗрдХреНрд╕реНрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде, рдЬреЛ рдХрд┐рд╕реА рдХреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдПрдХ рд╕рд░рд▓ рдФрд░ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ред рдкрд╣рд▓реА рддреНрд░реБрдЯрд┐ рдореБрдЭреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╕рдордп рдорд┐рд▓реАред

 void TagMonitor::parseTagsToMonitor(String8 tagNames) { std::lock_guard<std::mutex> lock(mMonitorMutex); if (ssize_t idx = tagNames.find("3a") != -1) { ssize_t end = tagNames.find(",", idx); char* start = tagNames.lockBuffer(tagNames.size()); start[idx] = '\0'; .... } .... } 

PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реА ++ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдЧрд▓рдд рдзрд╛рд░рдгрд╛ рд╕реЗ рдЬреБрдбрд╝реА рдХреНрд▓рд╛рд╕рд┐рдХ рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ: V593 / CWE-783 'рдП = рдмреА! = рд╕реА' рдкреНрд░рдХрд╛рд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ: 'рдП = (рдмреА! = рд╕реА)'ред TagMonitor.cpp 50

рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 if (ssize_t idx = tagNames.find("3a") != -1) { 

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА -1 рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рддреБрд▓рдирд╛ рдкрд╣рд▓реЗ рдЖрддреА рд╣реИред рдХреНрд▓рд╛рд╕рд┐рдХред рдпрд╣ рддреНрд░реБрдЯрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд▓реЗрдЦ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ ("рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ" рдЕрдзреНрдпрд╛рдп рджреЗрдЦреЗрдВ)ред

рдЕрдм рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

 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

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрдорд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдмрдлрд░ рднрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рдмрдлрд░ рдХрд╛ рдХрд╣реАрдВ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреБрдХреВрд▓рди рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдХрдВрдкрд╛рдЗрд▓рд░ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдирд┐рд░рд░реНрдердХ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рдЙрд╕реЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ C ++ рднрд╛рд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд░ рдХреЛрдИ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред ChunkBuffer рдмрдлрд░ рдореЗрдВ рднрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, sha1ProcessChunk рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдмрдлрд░ рд╕реНрдЯреИрдХ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╕рдВрдХрд▓рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕реЗ рд╢реВрдиреНрдп рд╕реЗ рднрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рдирддреАрдЬрддрди, рд╕реНрдЯреИрдХ рдкрд░ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдирд┐рдЬреА рдбреЗрдЯрд╛ рд░рд╣реЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ " рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдлрд╛рдИ " рд▓реЗрдЦ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред

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

рджреВрд╕рд░реЗ, рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЦреЛрдЬрдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рд╕реНрдЯреИрдХ рдкрд░ рдмрдлрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдореЗрдорд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд╣реАрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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


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

рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ рдЖрдкрдХреА рдХрдВрдкрдиреА рдХреЛ рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреА рдФрд░ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмреЗрд╣рддрд░, рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред



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

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


All Articles