рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд░рд┐рдВрдЧ рд▓реЗрдЦ

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рдУрдкрдирд╕реЗрд▓

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







рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреЛ рдорд╛рдиреНрдп рдХрд░реЗрдВ



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



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



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



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



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



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



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



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



рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо



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



рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рддреБрд▓рдирд╛



typedef struct ok_struct { .... size_t buf_len_save; size_t buf_off_save; .... } BIO_OK_CTX; static int ok_read(BIO *b, char *out, int outl) { .... BIO_OK_CTX *ctx; .... /* copy start of the next block into proper place */ if(ctx->buf_len_save - ctx->buf_off_save > 0) .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V555 'A - B> 0' рддрд░рд╣ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'A! = B' рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧреАред рдмрд╛рдпреЛ_рдУрдХ 243



рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (ctx-> buf_len_save - ctx-> buf_off_save> 0) рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред



рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╡реЗ рд╕реНрдерд┐рддрд┐ (ctx-> buf_len_save> ctx-> buf_off_save) рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рддреБрд▓рдирд╛ рдХрд┐рдП рдЧрдП рдЪрд░ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВред рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ рдХреЛ рджреВрд╕рд░реЗ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ рд╕реЗ рдШрдЯрд╛рдХрд░ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред



рд╕реНрдерд┐рддрд┐ (ctx-> buf_len_save - ctx-> buf_off_save> 0) рд╣рдореЗрд╢рд╛ рд╕рдВрддреБрд╖реНрдЯ рд░рд╣рддреА рд╣реИ рдпрджрд┐ рдЪрд░ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рднрд╛рд╡ рд╕рдорддреБрд▓реНрдп рд╣реИрдВ:

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЬреЛ рд╕реА рднрд╛рд╖рд╛ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрдврд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред



рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ 32-рдмрд┐рдЯ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ рд╣реИрдВ:



рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдП = 10;



рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд B = 20;



рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ (рдП - рдмреА> 0) рд╕рдВрддреБрд╖реНрдЯ рд╣реИред



рдШрдЯрд╛рд╡ (рдП - рдмреА) рдХрд╛ рдкрд░рд┐рдгрд╛рдо 10u - 20u = 0xFFFFFFF6u = 4294967287u рд╣реИред



рдЕрдЧрд▓рд╛, рд╣рдо рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ 4294967286u рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╢реВрдиреНрдп рдХреЛ рднреА рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред



рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (4294967286u> 0u) рд╕рддреНрдп рд╣реИред



рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (рдП - рдмреА> 0) рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдЭреВрдареА рд╣реЛрдЧреА, рдЬрдм рдП == рдмреАред



рдХреНрдпрд╛ рдпрд╣ рддреБрд▓рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реИ? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред



рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИред рдЪрд░ 'buf_len_save' рдЖрдорддреМрд░ рдкрд░ рдЪрд░ 'buf_off_save' рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдХрднреА-рдХрднреА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ 'buf_off_save' рдХрд╛ рдорд╛рди 'buf_len_save' рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдорд╛рди рддрдХ рдкрд╣реБрдБрдЪ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рдЪрд░ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдЪреЗрдХ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред рдорд╛рдорд▓рд╛ рдЬрдм (buf_len_save <buf_off_save) рд╢рд╛рдпрдж рдЕрд╕рдВрднрд╡ рд╣реИред



рдПрдХ uninitialized рдЪрд░ рдЬреЛ рдкрд░реЗрд╢рд╛рдиреА рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ



рдПрдХ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдЕрд╕рд┐рдВрдЪрд┐рдд рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рднреА рдмреБрд░реЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдУрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдБ рдпрд╣ рдХреЛрдб рд╣реИ:

 int PEM_do_header(....) { int i,j,o,klen; .... if (o) o = EVP_DecryptUpdate(&ctx,data,&i,data,j); if (o) o = EVP_DecryptFinal_ex(&ctx,&(data[i]),&j); .... j+=i; if (!o) { PEMerr(PEM_F_PEM_DO_HEADER,PEM_R_BAD_DECRYPT); return(0); } .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V614 рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рдВрдЧрдард┐рдд рдЪрд░ 'i' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред pem_lib.c 480



рдЪрд░ (i) рдпрджрд┐ (рдУ == рдЕрд╕рддреНрдп) рд╣реИ, рддреЛ рдЕрд╕рдВрдЧрдард┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ 'рдЬреЗ' рдореЗрдВ рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ (рдУ == рдЧрд▓рдд), рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдЖрдЧ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдирд╛ рдХрд╛рдо рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред



рдХреЛрдб рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИред рдЪрд░ 'рдУ' рдХреЛ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА 'рдЖрдИ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 if (!o) { PEMerr(PEM_F_PEM_DO_HEADER,PEM_R_BAD_DECRYPT); return(0); } j+=i;
      
      





рдЕрдЬреАрдм рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ



 #define SSL_TLSEXT_ERR_ALERT_FATAL 2 int ssl3_accept(SSL *s) { .... if (ret != SSL_ERROR_NONE) { ssl3_send_alert(s,SSL3_AL_FATAL,al); if (al != TLS1_AD_UNKNOWN_PSK_IDENTITY) SSLerr(SSL_F_SSL3_ACCEPT,SSL_R_CLIENTHELLO_TLSEXT); ret = SSL_TLSEXT_ERR_ALERT_FATAL; ret= -1; goto end; } .... }
      
      





рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V519 'рд░реЗрдЯ' рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 376, 377. s3_srvr.c 377



рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЪрд░ 'рд░рд┐рдЯ' рдХреЛ рдорд╛рди 2 рдФрд░ рдлрд┐рд░ -1 рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ, рдкрд╣рд▓рд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдмрд╣реБрдд рдХрдо рд╣реИ рдФрд░ рджреБрд░реНрдШрдЯрдирд╛ рд╕реЗ рдХреЛрдб рдореЗрдВ рдмрдирд╛ рд╣реБрдЖ рд╣реИред



рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛:

 int dtls1_retransmit_message(....) { .... /* save current state */ saved_state.enc_write_ctx = s->enc_write_ctx; saved_state.write_hash = s->write_hash; saved_state.compress = s->compress; saved_state.session = s->session; saved_state.epoch = s->d1->w_epoch; saved_state.epoch = s->d1->w_epoch; .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V519 'save_state.epoch' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 1277, 1278. d1_both.c 1278



рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ



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



рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдореЗрдВ рдРрд╕реА рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реИрдВ:

 int SSL_shutdown(SSL *s) { if (s->handshake_func == 0) { SSLerr(SSL_F_SSL_SHUTDOWN, SSL_R_UNINITIALIZED); return -1; } if ((s != NULL) && !SSL_in_init(s)) return(s->method->ssl_shutdown(s)); else return(1); } .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 рдХреЗ 'n' рд╕реВрдЪрдХ рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 1013, 1019. ssl_lib.c 1013



рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╕реВрдЪрдХ 's' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: (s-> рд╣реИрдВрдбрд╢реЗрдХ_рдлрдВрдХ == 0)ред



рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ: (s! = NULL)ред



рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓рд╛:

 #define bn_wexpand(a,words) \ (((words) <= (a)->dmax)?(a):bn_expand2((a),(words))) static int ubsec_dh_generate_key(DH *dh) { .... if(bn_wexpand(pub_key, dh->p->top) == NULL) goto err; if(pub_key == NULL) goto err; .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 'pub_key' рдкреЙрдЗрдВрдЯрд░ рдХреЛ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 951, 952. e_ubsec.c 951



рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рддреНрд░реБрдЯрд┐ рдХрд╣рд╛рдБ рд╣реИ, рдЖрдкрдХреЛ рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВ:

 if((((dh->p->top) <= (pub_key)->dmax)? (pub_key):bn_expand2((pub_key), (dh->p->top))) == ((void *)0)) goto err; if(pub_key == ((void *)0)) goto err;
      
      





рд╕реВрдЪрдХ 'pub_key' рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ dereferenced рд╣реИ: (pub_key) -> dmaxред



рдиреАрдЪреЗ рдпрд╣ рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ: (pub_key == ((рд╢реВрдиреНрдп *) 0))ред



рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ



рдХреЛрдб рдХреЗ рдХрдИ рдЯреБрдХрдбрд╝реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рдЪрд░ рдХреА рдПрдХ рд╣реА рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рджреЛ рдмрд╛рд░ рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд░реНрдл рджреВрд╕рд░рд╛ рдЪреЗрдХ рджреБрд░реНрдШрдЯрдирд╛ рдФрд░ рд╕рд┐рд░реНрдл рд╕реБрдкрд░рдлреНрд▓рд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдБрдЪ N рез

 int ASN1_PRINTABLE_type(const unsigned char *s, int len) { .... if (!( ((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')) || (c == ' ') || <<<<==== ((c >= '0') && (c <= '9')) || (c == ' ') || (c == '\'') || <<<<==== (c == '(') || (c == ')') || (c == '+') || (c == ',') || (c == '-') || (c == '.') || (c == '/') || (c == ':') || (c == '=') || (c == '?'))) ia5=1; .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V501 рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ (c == '') 'рдмрд╛рдИрдВ рдУрд░' рдФрд░ 'рдХреЗ рджрд╛рдИрдВ рдУрд░' || рдСрдкрд░реЗрдЯрд░ред a_print.c 76



рдореИрдВрдиреЗ "<<<< ====" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рди рдЪреЗрдХ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЪреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ , рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреЛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред



рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рдПрди 2, рдПрди 3

 int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) { .... if ((type && (type != SSL3_RT_APPLICATION_DATA) && (type != SSL3_RT_HANDSHAKE) && type) || (peek && (type != SSL3_RT_APPLICATION_DATA))) .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V501 рдмрд╛рдИрдВ рдФрд░ 'рдСрдкрд░реЗрдЯрд░' рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ 'рдкреНрд░рдХрд╛рд░' рд╣реИрдВред s3_pkt.c 952



рдпрд╣ рджреЛ рдмрд╛рд░ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЪрд░ 'рдкреНрд░рдХрд╛рд░' рдХрд╛ рдПрдХ рдЧреИрд░-рдЕрдХреНрд╖реАрдп рдорд╛рди рд╣реИред



рдорд╛рдирд╛ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рджреВрд╕рд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдВ рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рддреБрд▓рдирд╛ рднреА рд╣реИ: d1_pkt.c 760ред



рдЕрдорд╛рдиреНрдп рдкрдВрдХреНрддрд┐ рд▓рдВрдмрд╛рдИ



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



рдкрд╣рд▓рд╛ рдЕрд╕рдлрд▓ рдореИрдЬрд┐рдХ рдирдВрдмрд░



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



рдФрд░ рдЕрдм, рдЧрд▓рдд рдХреЛрдб:

 static int asn1_parse2(....) { .... if (BIO_write(bp,"BAD ENUMERATED",11) <= 0) goto end; .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V666 'BIO_write' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдорд╛рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред asn1_par.c 378



рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдмреАрдПрдб рдПрдиреБрдорд░реЗрдЯреЗрдб" рдХреА рд▓рдВрдмрд╛рдИ 11 рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ 14 рдЕрдХреНрд╖рд░ рд╣реИрдВред



рджреВрд╕рд░рд╛ рдЕрд╕рдлрд▓ рдореИрдЬрд┐рдХ рдирдВрдмрд░

 static int www_body(char *hostname, int s, unsigned char *context) { .... if ( ((www == 1) && (strncmp("GET ",buf,4) == 0)) || ((www == 2) && (strncmp("GET /stats ",buf,10) == 0))) .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V666 'strncmp' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдорд╛рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред s_server.c 2703



рд╕реНрдЯреНрд░рд┐рдВрдЧ "GET / рдЖрдБрдХрдбрд╝реЗ" рдХреА рд▓рдВрдмрд╛рдИ 10 рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ 11 рд╡рд░реНрдг рд╣реИрдВред рдЕрдВрддрд┐рдо рдЕрдВрддрд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЫреЛрдЯреА рд╕реА рджреЛрд╖, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдПрдХ рджреЛрд╖ рд╣реИред



рддреАрд╕рд░рд╛ рдЕрд╕рдлрд▓ рдореИрдЬрд┐рдХ рдирдВрдмрд░

 static int asn1_cb(const char *elem, int len, void *bitstr) { .... if (!strncmp(vstart, "ASCII", 5)) arg->format = ASN1_GEN_FORMAT_ASCII; else if (!strncmp(vstart, "UTF8", 4)) arg->format = ASN1_GEN_FORMAT_UTF8; else if (!strncmp(vstart, "HEX", 3)) arg->format = ASN1_GEN_FORMAT_HEX; else if (!strncmp(vstart, "BITLIST", 3)) arg->format = ASN1_GEN_FORMAT_BITLIST; else .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V666 'strncmp' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдорд╛рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред asn1_gen.c 371



рдореБрд╕реАрдмрдд рдпрд╣рд╛рдБ рд╣реИ:

 if (!strncmp(vstart, "BITLIST", 3))
      
      





"BITLIST" рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ 7 рд╡рд░реНрдг рд╣реИред



рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд▓рд┐рдд рд╣реБрдЖред рдкрд╛рдардХ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдвреВрдВрдврддрд╛ рд╣реИред рдореИрдВ рд╕рдордЭрд╛ рджреВрдВрдЧрд╛ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ strncmp (), рдФрд░ рдбреЗрдЯрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИ: рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реНрдХ рдФрд░ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдПрдХ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИред рддреЛ рдпрд╣ рддрд░реНрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ V666 рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред



рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ



"% 08lX" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЙрдЗрдВрдЯрд░ рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП "% p" рд╣реИред

 typedef struct mem_st { void *addr; .... } MEM; static void print_leak_doall_arg(const MEM *m, MEM_LEAK *l) { .... BIO_snprintf(bufp, BUF_REMAIN, "number=%d, address=%08lX\n", m->num,(unsigned long)m->addr); .... }
      
      





рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди (рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд▓рдВрдмрд╛)ред рдЗрд╕рд▓рд┐рдП, рд╕рдВрдХрд▓рдХ рдФрд░ рдХреБрдЫ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреБрдк рд░рд╣реЗрдВрдЧреЗред



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



рд╕рд╣реА рдФрд░ рдЫреЛрдЯрд╛ рдХреЛрдб рд╣реИ:

 BIO_snprintf(bufp, BUF_REMAIN, "number=%d, address=%p\n", m->num, m->addr);
      
      





рдРрд╕реЗ рддреАрди рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдБ рдкреЙрдЗрдВрдЯрд░ рдорд╛рди рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдЫрд╛рдкрд╛ рдЧрдпрд╛ рд╣реИ:

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



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



рд╣рдорд╛рд░реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред



рдпрд╣ рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╣реИред



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



рдХреНрдпрд╛ рдЖрдкрдиреЗ рд▓реЗрдЦ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ?
рдЕрдХреНрд╕рд░ рд╣рдорд╛рд░реЗ рд▓реЗрдЦреЛрдВ рд╕реЗ рд╡рд╣реА рдкреНрд░рд╢реНрди рдкреВрдЫреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдпрд╣рд╛рдВ рдЙрдирдХреЗ рдЙрддреНрддрд░ рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВ: рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рдХреИрдкреНрдкрдХреИрдЯ, рд╕рдВрд╕реНрдХрд░рдг 2014 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм ред рдХреГрдкрдпрд╛ рд╕реВрдЪреА рджреЗрдЦреЗрдВред




All Articles