
рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрджреНрдзрддрд┐ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛ рдмрдбрд╝реА рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдЕрд╕рдВрднрд╡ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рд╕рдХреНрд╖рдо рдХреЛрдбрд┐рдВрдЧ рдорд╛рдирдХ, рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛, рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг, рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИред рдпрд╣ рд╕рдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдХреЛрдб рдореЗрдВ рджреЛрд╖реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд▓реЗрдЦ рдПрдВрдбреНрд░реЙрдЗрдб рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рдкрд╛рдардХреЛрдВ рдХреЛ рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреА рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╡реЗ рдЗрд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдкрд░рд┐рдЪрдп
Tizen рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ
рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрди рдореЗрдВ рдПрдХ рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдХреБрдЫ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЪреБрдирд╛рд╡ Android рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ред
рдПрдВрдбреНрд░реЙрдЗрдб рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рд╣реИ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрд╡рд░реЗрдЬ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рдкрддреНрд░ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк, рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдвреВрдВрдврдирд╛ рд╣рдорд╛рд░реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреБрдиреМрддреА рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд▓реЗрдЦ рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗ рдкрд╛рдардХ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рджреЛрд╖ рдкрд╛рдП рдЧрдПред
рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрдмрд▓рддрд╛
рд▓реЗрдЦ рдореЗрдВ рдЖрдкрдХреЛ
рдХреЙрдорди рд╡реАрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди (CWE) рдХреЗ рд╕рдВрджрд░реНрдн рдорд┐рд▓реЗрдВрдЧреЗред рдЖрдЗрдП рд╣рдо рдЗрд╕ рд╕реВрдЪреА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрддрд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдЕрдХреНрд╕рд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рднреЗрджреНрдпрддрд╛ рдХрд╛ рдХрд╛рд░рдг рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдХреБрдЫ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рддреНрд░реБрдЯрд┐ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдЙрджреНрдзрд░рдг
prqa.com рд╕реЗ рдЙрджреНрдзреГрдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛:
рдиреЗрд╢рдирд▓ рдЗрдВрд╕реНрдЯреАрдЯреНрдпреВрдЯ рдСрдл рд╕реНрдЯреИрдВрдбрд░реНрдб рдПрдВрдб рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреА (рдПрдирдЖрдИрдПрд╕рдЯреА) рдХреА рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ рдХрд┐ 64% рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рднреЗрджреНрдпрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЙрдкрдЬреА рд╣реИ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдХрдореА рдирд╣реАрдВ рд╣реИред
рдЖрдк рд▓реЗрдЦ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ "
рдХреИрд╕реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? " рд╕рд░рд▓ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛ MySQL, iOS, NAS, рдЗрд▓реНрдпреВрдореЛрд╕-рдЧреЗрдЯ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗред
рддрджрдиреБрд╕рд╛рд░, рдХрдИ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рд╕рдордп рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдХрд░ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рдХреЙрдорди рд╡реЗрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред
рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЕрд▓рдЧ рд╣реИрдВ, рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рд╕рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЦрддрд░рдирд╛рдХ рдирд╣реАрдВ рд╣реИрдВред рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрдордЬреЛрд░рд┐рдпрд╛рдБ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рджреБрд░реНрдмрд▓рддрд╛ рдореЗрдВ рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рд╕реВрдЪреА рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдФрд░ рд╕рдВрднрд╡рддрдГ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрднреА рддрдХ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рддреНрд░реБрдЯрд┐ рдХреЛ CWE рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рднреЗрджреНрдпрддрд╛ (
CVE ) рдХреЗ рд░реВрдк рдореЗрдВ рд╢реЛрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдВ, рдЗрд╕ рдмрд╛рдд рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реА рд╣реИред рдмрд╣реБрдд рдХрдо рд╣реА, рд╕реАрдбрдмреНрд▓реНрдпреВрдИ рд╕реАрд╡реАрдИ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рд╕реЗ рдмрдЪрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, CWE рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрдИ рдмрдЧреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ, рддреНрд░реБрдЯрд┐рдпреЛрдВ, рд╕реАрдбрдмреНрд▓реНрдпреВрдИ рдФрд░ рд╕реАрд╡реАрдИ рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдВрдмрдВрдз рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ CWE рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред PVS-Studio рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рджреЛрд╖реЛрдВ рдХреЛ рднреЗрджреНрдпрддрд╛ (CVE) рдмрдирдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХ рд╕реНрдереИрддрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг (
рдПрд╕рдПрдПрд╕рдЯреА ) рд╣реИред
рдЕрдм, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордЭрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ CWE рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреИрд╕реЗ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЬреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред
Android рдЪреЗрдХ
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рдВрд╕реНрдХрд░рдг 6.24 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рд╖рд╛рдУрдВ рдФрд░ рд╕рдВрдХрд▓рдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
- рд╡рд┐рдВрдбреЛрдЬред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010-2017 C, C ++, C ++ / CLI, C ++ / CX (WinRT), C #
- рд╡рд┐рдВрдбреЛрдЬред рдЖрдИрдПрдЖрд░ рдПрдВрдмреЗрдбреЗрдб рд╡рд░реНрдХрдмреЗрдВрдЪ, рдПрдЖрд░ / рд╕реА рдХреЗ рд▓рд┐рдП рд╕реА / рд╕реА ++ рдХрдВрдкрд╛рдЗрд▓рд░, рд╕реА ++
- рд╡рд┐рдВрдбреЛрдЬ / рд▓рд┐рдирдХреНрд╕ рдХреЗрдПрд▓ ilрд╡рд┐рдЬрд╝рди, рдбреАрдПрд╕-рдПрдордбреАрдХреЗ, рдПрдЖрд░рдПрдо рдХрдВрдкрд╛рдЗрд▓рд░ 5/6 рд╕реА, рд╕реА ++
- рд╡рд┐рдВрдбреЛрдЬ / рд▓рд┐рдирдХреНрд╕ рдЯреЗрдХреНрд╕рд╛рд╕ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреНрд╕ рдХреЛрдб рдХрдореНрдкреЛрдЬрд╝рд░ рд╕реНрдЯреВрдбрд┐рдпреЛ, рдПрдЖрд░рдПрдо рдХреЛрдб рдЬреЗрдирд░реЗрд╢рди рдЯреВрд▓реНрд╕ рд╕реА, рд╕реА ++
- рд╡рд┐рдВрдбреЛрдЬ / рд▓рд┐рдирдХреНрд╕ / рдореИрдХрдУрдПрд╕ред рдХреНрд▓реЗрдВрдЧ рд╕реА, рд╕реА ++
- рд▓рд┐рдирдХреНрд╕ / macOSред рдЬреАрд╕реАрд╕реА рд╕реА, рд╕реА ++
- рд╡рд┐рдВрдбреЛрдЬред MinGW C, C ++
рдиреЛрдЯред рд╢рд╛рдпрдж рд╣рдорд╛рд░реЗ рдХреБрдЫ рдкрд╛рдардХреЛрдВ рдиреЗ рдЗрд╕ рдЦрдмрд░ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ macOS рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╡реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрдВрдЧреЗ: "
macOS рдХреЗ рд▓рд┐рдП PVS-Studio рд░рд┐рд▓реАрдЬрд╝: Apple XNU рдХрд░реНрдиреЗрд▓ рдореЗрдВ 64 рдХрдордЬреЛрд░рд┐рдпрд╛рдБ "ред
рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рд╕рдорд╕реНрдпрд╛, рдмрд▓реНрдХрд┐, рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╡реНрдпрд╕реНрддрддрд╛ рдереА, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдКрд░реНрдЬрд╛ рдирд╣реАрдВ рдорд┐рд▓реА рдЬрд┐рддрдиреА рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рднреА рдПрдХ рдареЛрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрдбрд╝реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рдерд╛ред
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд: рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рди рдХреЗрд╡рд▓ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рди рд╕реНрд╡рддрдВрддреНрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рд╕рддрд╣реА рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдФрд░ рдмрд╣реБрдд рд╕реА рдЧрдВрднреАрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрд╣реБрдд рд╕рд╛рд░реА рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди
рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ ред рд╣рдорд╛рд░реА рдЯреАрдо рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╣рдо рдПрдХ рдорд╣реАрдиреЗ рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреБрдВрдЬреА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рддреИрдпрд╛рд░ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░,
рд╣рдореЗрдВ рд▓рд┐рдЦреЗрдВ , рд╣рдо рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдХрд┐рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЪреНрдЫрд╛ рдкрдврд╝рд╛ рд╣реИред
рдЕрд░реНрдерд╣реАрди рддреБрд▓рдирд╛
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рднрд╛рд╡реЛрдВ рдХреЛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирддрд╛ рд╣реИ рдпрджрд┐ рд╡реЗ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ, рд╕рд╛рдорд╛рдиреНрдп рдХрдордЬреЛрд░реА рдЧрдгрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдЧреАрдХреГрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ:
- CWE-570 : рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИ
- CWE-571 : рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реИ
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдРрд╕реА рдХрдИ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ, рдФрд░, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЭреВрдареЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рджреЛрд╖ рдирд╣реАрдВ рджреЗрдирд╛ рд╣реИред рдмрд╕ рдХреЛрдб рдЬреИрд╕рд╛ рд▓рд┐рдЦрд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред
#if GENERIC_TARGET const char alternative_config_path[] = "/data/nfc/"; #else const char alternative_config_path[] = ""; #endif CNxpNfcConfig& CNxpNfcConfig::GetInstance() { .... if (alternative_config_path[0] != '\0') { .... }
рдпрд╣рд╛рдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ: V547 CWE-570 рдПрдХреНрд╕рдкреНрд░реЗрд╢рди 'рд╡реИрдХрд▓реНрдкрд┐рдХ_рдХреЙрдиреНрдлрд╝рд┐рдЧ_рдкрд╛рде [0]! =' \ 0 '' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред phNxpConfig.cpp 401
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐
GENERIC_TARGET рдореИрдХреНрд░реЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
const char alternative_config_path[] = ""; .... if (alternative_config_path[0] != '\0') {
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрд╕ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓рд╛рдЗрди рдЦрд╛рд▓реА рд╣реИ, рдФрд░ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рд╢реВрдиреНрдп рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп рдСрдлрд╕реЗрдЯ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рдиреЗ рдореЗрдВ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдРрд╕реА рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрдЧреА рдФрд░ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдм рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рд╕рдВрджреЗрд╢ рдЬрд╛рд░реА рди рдХрд░реЗрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рд╡реНрдпрд░реНрде рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреЛрд╖ рдкрд╛рдП рдЬрд╛рдПрдВрдЧреЗред
рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрдиреЗ рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рдереА, рдФрд░ рдореИрдВ рдЙрди рдкрд░ рд╕рддрд╣реА рддреМрд░ рдкрд░ рдЪрдврд╝ рдЧрдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ рдХрд┐ рдРрд╕реЗ рдирд┐рджрд╛рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИрдВ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рддреЗ рд╣реИрдВред
рдореИрдВ рдЙрд╕ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрдм рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНтАНрдпреЛрдВ рдХреНрд▓рд╛рд╕рд┐рдХ? рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рд╣реИ рдЬреЛ рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕рдХреА рдШрдЯрдирд╛ рдХреЗ рддреАрди рдХрд╛рд░рдг рд╣реИрдВ:
- рддреБрд▓рдирд╛ рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реИрдВ рдФрд░ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ" рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЕрд╕рд╛рд╡рдзрд╛рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рдЯрд╛рдЗрдкреЛрд╕ рдмрдирд╛рддрд╛ рд╣реИред
- рдЖрдорддреМрд░ рдкрд░, рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб-рд╕рдореАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд░рд▓ рдФрд░ рдЙрдмрд╛рдК рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИред
- рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдЖрдорддреМрд░ рдкрд░ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдЖрд▓рд╕реНрдпред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рдВрдХреНрд╢рди рд╕рд░рд▓ рд╣реИрдВ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдВрднрд╡ рд╣реИрдВред
рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ "
рдИрд╡рд┐рд▓ рддреБрд▓рдирд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ " рд▓реЗрдЦ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
static inline bool isAudioPlaybackRateEqual( const AudioPlaybackRate &pr1, const AudioPlaybackRate &pr2) { return fabs(pr1.mSpeed - pr2.mSpeed) < AUDIO_TIMESTRETCH_SPEED_MIN_DELTA && fabs(pr1.mPitch - pr2.mPitch) < AUDIO_TIMESTRETCH_PITCH_MIN_DELTA && pr2.mStretchMode == pr2.mStretchMode && pr2.mFallbackMode == pr2.mFallbackMode; }
рддреЛ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ
AudioPlaybackRate рдХреА рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рдХрд╛рд░реНрдпред рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдкрд╛рдардХ рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реИред PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреЛ рдЯрд╛рдЗрдкреЛ рдХреЛ рддреБрд░рдВрдд рдиреЛрдЯрд┐рд╕ рдХрд░рддрд╛ рд╣реИ:
- V501 CWE-571 рдмрд╛рдИрдВ рдФрд░ '==' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ: pr2.mStretchMode == pr2.mStretchMode AudioResamplerPublic.b 107
- V501 CWE-571 рдмрд╛рдИрдВ рдФрд░ '==' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ: pr2.mFallbackMode == pr2.mFallbackMode AudioResamplerPublic.b 108
Pr2.mStretchMode рдлрд╝реАрд▓реНрдб рдФрд░
pr2.mFallbackMode рдлрд╝реАрд▓реНрдб
рдХреА рддреБрд▓рдирд╛ рд╕реНрд╡рдпрдВ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдирд┐рдореНрди рд╡реНрдпрд░реНрде рдХреА рддреБрд▓рдирд╛ рдПрдХ рдлрдВрдХреНрд╢рди рдореЗрдВ рд░рд╣рддреА рд╣реИ рдЬреЛ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
static void saveFingerprint(worker_thread_t* listener, int idx) { .... int ns = fwrite(&listener->secureid[idx], sizeof(uint64_t), 1, fp); .... int nf = fwrite(&listener->fingerid[idx], sizeof(uint64_t), 1, fp); if (ns != 1 || ns !=1)
рдПрдХ рдмрд╛рд░ рдореЗрдВ рджреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- V501 CWE-570 рдмрд╛рдИрдВ рдФрд░ 'рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ' || рд╕рдВрдЪрд╛рд▓рдХ: ns! = 1 || ns! = 1 рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ.c 126
- V560 CWE-570 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ: ns! = 1. рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рд╕реАред 126
рдЙрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдЬрдм
рдлрд╛рдЗрдЯрд╛рдЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рдХреЙрд▓ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЪрд░
nf рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рд╕рд╣реА рдЬрд╛рдБрдЪ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:
if (ns != 1 || nf != 1)
рд╣рдо
& рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реА рдЕрдЧрд▓реА рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
#define O_RDONLY 00000000 #define O_WRONLY 00000001 #define O_RDWR 00000002 static ssize_t verity_read(fec_handle *f, ....) { .... if (f->mode & O_RDONLY && expect_zeros) { memset(data, 0, FEC_BLOCKSIZE); goto valid; } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V560 CWE-570 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ: f-> рдореЛрдб рдФрд░ 00000000. fec_read.cpp 322
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдерд┐рд░
O_RDONLY рд╢реВрдиреНрдп рд╣реИред рдЗрд╕рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
f-> рдореЛрдб рдФрд░ O_RDONLY рд╡реНрдпрд░реНрде рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ 0. рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐
рдпрджрд┐ рдХрдерди рдХреА рд╕реНрдерд┐рддрд┐ рдХрднреА рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрдерди-рд╕рддреНрдп рдореГрдд рдХреЛрдб рд╣реИред
рд╕рд╣реА рдЬрд╛рдБрдЪ рдЗрд╕ рддрд░рд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
if (f->mode == O_RDONLY && expect_zeros) {
рдЕрдм рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЯрд╛рдЗрдкреЛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрдм рд╣рдо рд╣рд╛рд▓рдд рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓рд┐рдЦрдирд╛ рднреВрд▓ рдЧрдПред
enum { .... CHANGE_DISPLAY_INFO = 1 << 2, .... }; void RotaryEncoderInputMapper::configure(nsecs_t when, const InputReaderConfiguration* config, uint32_t changes) { .... if (!changes || (InputReaderConfiguration::CHANGE_DISPLAY_INFO)) { .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V768 CWE-571 рдЧрдгрдирд╛ рдирд┐рд░рдВрддрд░ 'CHANGE_DISPLAY_INFO' рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреВрд▓рд┐рдпрди-рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред InputReader.cpp 3016
рдпрд╣ рд╢рд░реНрдд рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдСрдкрд░реЗрдВрдб
InputReaderConfiguration :: CHANGE_DISPLAY_INFO рд▓рдЧрд╛рддрд╛рд░ 4 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
рдпрджрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкрдбрд╝реЛрд╕ рдореЗрдВ рдХреЛрдб рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
if (!changes || (changes & InputReaderConfiguration::CHANGE_DISPLAY_INFO)) {
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреБрд▓рдирд╛, рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд▓реВрдк рдСрдкрд░реЗрдЯрд░ рдореЗрдВ рдорд┐рд▓рд╛ред
void parse_printerAttributes(....) { .... ipp_t *collection = ippGetCollection(attrptr, i); for (j = 0, attrptr = ippFirstAttribute(collection); (j < 4) && (attrptr != NULL); attrptr = ippNextAttribute(collection)) { if (strcmp("....", ippGetName(attrptr)) == 0) { ....TopMargin = ippGetInteger(attrptr, 0); } else if (strcmp("....", ippGetName(attrptr)) == 0) { ....BottomMargin = ippGetInteger(attrptr, 0); } else if (strcmp("....", ippGetName(attrptr)) == 0) { ....LeftMargin = ippGetInteger(attrptr, 0); } else if (strcmp("....", ippGetName(attrptr)) == 0) { ....RightMargin = ippGetInteger(attrptr, 0); } } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V560 CWE-571 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: (j <4)ред ipphelper.c 926
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЪрд░
j рдХрд╛ рдорд╛рди рдХрд╣реАрдВ рднреА рдмрдврд╝рд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрд╕рд░реНрдЧ
(j <4) рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИред
рд╣рдореЗрд╢рд╛ рд╕рд╣реА / рдЧрд▓рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдЙрдкрдпреЛрдЧреА рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдЙрд╕ рдХреЛрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ рдЬрд╣рд╛рдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо
рдирдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ:
T *p = new T; if (p == nullptr) return ERROR;
рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд╛рдБрдЪ рд╡реНрдпрд░реНрде рд╣реИред рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рддреЛ
std :: bad_alloc рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЕрдкрд╡рд╛рдж
рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкреЙрдЗрдВрдЯрд░ рдорд╛рди рдХреЗ рдЪреЗрдХ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ред
рдиреЛрдЯред
рдирдпрд╛ рдСрдкрд░реЗрдЯрд░
рдирдпрд╛ (std :: nothrow) T рд▓рд┐рдЦрдХрд░
рдЕрд╢рдХреНрдд рд▓реМрдЯ рд╕рдХрддрд╛ рд╣реИ
ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ
(std :: nothrow) рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИрдВред рдареАрдХ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЛ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рдЬреЛ рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд╡реИрд╕реЗ рднреА, рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ-рдЗрдл-рд╕рдЪ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ
рдпрджрд┐ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдПрдХреНрд╢рди рдЬреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрджрд┐ рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореЗрдореЛрд░реА рд▓реАрдХ рдФрд░ рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред
рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдореЗрдВ рджреЗрдЦрд╛ рдерд╛ред
int parse_apk(const char *path, const char *target_package_name) { .... FileMap *dataMap = zip->createEntryFileMap(entry); if (dataMap == NULL) { ALOGW("%s: failed to create FileMap\n", __FUNCTION__); return -1; } char *buf = new char[uncompLen]; if (NULL == buf) { ALOGW("%s: failed to allocate %" PRIu32 " byte\n", __FUNCTION__, uncompLen); delete dataMap; return -1; } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V668 CWE-570 'рдмреВрдлрд╝' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЕрд╢рдХреНрдд рдХрд░рдиреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдореГрддрд┐ рдХреЛ 'рдирдП' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред рд╕реНрдХреИрди 21pp 21pp
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рджреВрд╕рд░рд╛ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкрд╣рд▓реЗ рдмреНрд▓реЙрдХ рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ:
delete dataMap;
рдЗрд╕ рдХреЛрдб рдХреЛ рдХрднреА рднреА рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рдпрд╣ рдореГрдд рдХреЛрдб рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдРрд╕рд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП
рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛
рдЧрдпрд╛ рдерд╛ред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдореЗрдВ
176 рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╣рд╛рдВ
рдирдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕реВрдЪрдХ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдЗрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рддрдирд╛ рдЦрддрд░рдирд╛рдХ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЗрди рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ
Android_V668.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдиреНрдп рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛
рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕реЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рд╛рдорд╛рдиреНрдп рдХрдордЬреЛрд░реА рдЧрдгрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- CWE-119 : рдореЗрдореЛрд░реА рдмрдлрд╝рд░ рдХреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЕрдиреБрдЪрд┐рдд рдкреНрд░рддрд┐рдмрдВрдз
- CWE-476 : NULL Pointer Dereference
- CWE-628 : рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓
- рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -690 : рдЕрдирд▓рд┐рдорд┐рдЯреЗрдб рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдЯреВ рдирд╛рдЙрд▓ рдкреЙрдЗрдВрдЯрд░ рдбреЗрд░реЗрдлреЗрд░реЗрдВрд╕
рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдЧреИрд░-рдорд╛рдирдХ рдпрд╛ рдЧрд▓рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдореЗрдВ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред рдХреЛрдИ рднреА рдРрд╕реЗ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕рдореЗрдВ рд░рд╣ рд╕рдХрддреА рд╣реИред рдмрд╕ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдкрд░ рдЕрдм рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
bool parseEffect(....) { .... if (xmlProxyLib == nullptr) { ALOGE("effectProxy must contain a <%s>: %s", tag, dump(*xmlProxyLib)); return false; } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V522 CWE-476 рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ 'xmlProxyLib' рдХреА рдбреЗрд░реЗрдлреЗрд░рд┐рдВрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред EffectConfig.cpp 205
рдпрджрд┐
xmlProxyLib рдкреЙрдЗрдВрдЯрд░
nullptr рд╣реИ , рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдХ рдбрд┐рдмрдЧ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреЙрдЗрдВрдЯрд░ рдХреЛ
рдбреАрд░реЗрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрдлрд╝ ...
рдЕрдм рддреНрд░реБрдЯрд┐ рдХреЗ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
static void soinfo_unload_impl(soinfo* root) { .... soinfo* needed = find_library(si->get_primary_namespace(), library_name, RTLD_NOLOAD, nullptr, nullptr); if (needed != nullptr) {
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V522 CWE-476 рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ 'рдЬрдЧрд╣ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ'ред linker.cpp 1847
рдпрджрд┐ рдкреЙрдЗрдВрдЯрд░ рдХреА
рдЬрд░реВрд░рдд рд╣реИ! = Nullptr , рддреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдВрджрд┐рдЧреНрдз рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдпрд╣ рдЕрдВрдд рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ рдпрджрд┐ рдЖрдк рдиреАрдЪреЗ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐
рдЬрд░реВрд░рдд рдХреЗ рд╕рд╛рде
== nullptr , null рд╕реВрдЪрдХ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ dereferenced
рдЬрд╛рдПрдЧрд╛-> is_linked () ред
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдСрдкрд░реЗрдЯрд░реЛрдВ! = рдФрд░ == рдмрд╕ рдпрд╣рд╛рдБ рдЙрд▓рдЭрди рдореЗрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЕрд╢рдХреНрдд рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдбреЗрд░реЗрдлреЗрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдлреЙрд░реНрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ:
T *p = (T *) malloc (N); *p = x;
рдпрджрд┐
рдореИрд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
, рддреЛ рдХрд╛рд░реНрдп рдЬреИрд╕реЗ рдХрд┐
рдореЙрд▓реЙрдХ ,
рд╕реНрдЯреНрд░реИрдбрдЕрдк, рдФрд░
NULL рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЪреЗрдХ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдХрдИ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рджреЛ рд╕рд░рд▓ рдХреЛрдб рдЯреБрдХрдбрд╝реЗ рджреВрдВрдЧрд╛: рдкрд╣рд▓рд╛ рд╡рд╛рд▓рд╛
рдорд╛рд▓реНрдбреЛрдХ рдФрд░
рд╕реНрдЯреНрд░реИрдкрдЕрдк рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ред
DownmixerBufferProvider::DownmixerBufferProvider(....) { .... effect_param_t * const param = (effect_param_t *) malloc(downmixParamSize); param->psize = sizeof(downmix_params_t); .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V522 CWE-690 рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдирд▓ рдкреЙрдЗрдВрдЯрд░ 'рдкрд░рдо' рдХреА рдбреНрд░реАрдлрд░рд┐рдВрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 245, 244. рдмрдлрд╝рд░рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реНрд╕.рд╕реАрдкреА 245
static char* descriptorClassToDot(const char* str) { .... newStr = strdup(lastSlash); newStr[strlen(lastSlash)-1] = '\0'; .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V522 CWE-690 рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдирд▓ рдкреЙрдЗрдВрдЯрд░ 'рдиреНрдпреВрд╕реНрдЯреНрд░реАрдо' рдХреА dereferencing рд╣реЛ рд╕рдХрддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 203, 202. DexDump.cpp 203
рдХреЛрдИ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдорд╛рдореВрд▓реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдпрджрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реИ, рддреЛ рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдбреЗрд░реЗрдлреЗрд░ рдХрд░рдиреЗ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрд╕ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдЪреВрдВрдХрд┐ рдХреЛрдИ рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рдЧрд▓рдд рд╣реИред рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рдЬрд╛рдБрдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП! рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░
рд╕реЗ рдЬрд╛рдВрдЪ рдХреА "
рдорд╛рд▓реЙрдХ рдлрд╝рдВрдХреНрд╢рди рдХреНрдпрд╛ рд▓реМрдЯрд╛ рд╣реИ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ "ред рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЙрди рд╕рднреА рдХреЛ рдкрдврд╝реЗрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЦрддрд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдореГрддрд┐ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╢реВрдиреНрдп рдкрддреЗ рдХреЗ рдкрд╛рд╕ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рдмрд╣реБрдд рджреВрд░ рдХрд╣реАрдВ рдПрдХ рдореЗрдореЛрд░реА рдкреЗрдЬ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рд░рд╛рдЗрдЯ-рдкреНрд░реЛрдЯреЗрдХреНрдЯреЗрдб рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдПрдХ рдорд╛рдпрд╛рд╡реА рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреЗрджреНрдпрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐
check_size рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред
int check_size(radio_metadata_buffer_t **metadata_ptr, const uint32_t size_int) { .... metadata = realloc(metadata, new_size_int * sizeof(uint32_t)); memmove( (uint32_t *)metadata + new_size_int - (metadata->count + 1), (uint32_t *)metadata + metadata->size_int - (metadata->count + 1), (metadata->count + 1) * sizeof(uint32_t)); .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V769 CWE-119 рдж '(uint32_t *) рдореЗрдЯрд╛рдбреЗрдЯрд╛' рдкреЙрдЗрдВрдЯрд░ рдЗрди '(uint32_t *) рдореЗрдЯрд╛рдбреЗрдЯрд╛ + new_size_int' рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддреА рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореВрд▓реНрдп рд╕рдВрд╡реЗрджрдирд╣реАрди рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 91, 89. Radio_metadata.c 91
рдореИрдВрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирдпрд╛ рдмрдлрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рд╡рд╣рд╛рдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐
realloc рдлрд╝рдВрдХреНрд╢рди
NULL рджреЗрддрд╛
рд╣реИ , рддреЛ рдбреЗрдЯрд╛ рдХреЛ рдкрддрд╛ ((uint32_t *) NULL + рдореЗрдЯрд╛рдбреЗрдЯрд╛-> size_int - (рдореЗрдЯрд╛рдбреЗрдЯрд╛-> рдХрд╛рдЙрдВрдЯ + 1)) рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐
рдореЗрдЯрд╛рдбреЗрдЯрд╛-> size_int рдорд╛рди рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо
рдкрдЫрддрд╛рд╡рд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд╕реНрдореГрддрд┐ рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рд╡реИрд╕реЗ, рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдбрдлрд░рд┐рдВрдЧ рд╣реИ, рдЬрд┐рд╕реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -690 рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -628 (рдЕрдорд╛рдиреНрдп рддрд░реНрдХ) рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
static void parse_tcp_ports(const char *portstring, uint16_t *ports) { char *buffer; char *cp; buffer = strdup(portstring); if ((cp = strchr(buffer, ':')) == NULL) .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V575 CWE-628 рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ 'strchr' рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 47, 46. libxt_tcp.c 47
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐
рд╕реНрдЯреНрд░реИрдЪрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ
рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░
рдкреЙрдЗрдВрдЯрд░ рдбреЗрд░реЗрдлрд╝рд░рд┐рдВрдЧ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЧрд▓рдд рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╢реЗрд╖
194 рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдореИрдВ
Android_V522_V575.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛
рд╣реВрдБ ред
рд╡реИрд╕реЗ,
рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреЙрдЗрдВрдЯрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрди рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд╡рд┐рддреНрд░рддрд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐
рдореЙрд▓реЛрдХ /
рд░рд┐рдпрд▓рд▓реЙрдХ /
рд╕реНрдЯреНрд░реИрдбрдЕрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП 195 рдХреЙрд▓ рд╣реИрдВ
, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЬрдм рд╕реВрдЪрдХ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди 176 рдРрд╕реЗ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдВ рдкрд░
рдирдП рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╣рдордд рд╣реВрдБ, рдПрдХ рдЕрдЬреАрдм рджреГрд╖реНрдЯрд┐рдХреЛрдг!
рдЕрдВрдд рдореЗрдВ, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА V595 рдФрд░ V1004 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрд╢рдХреНрдд рд▓реЛрдЧреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рднреА рдЬреБрдбрд╝реА рд╣реИрдВред
V595 рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдбрд┐рдлрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЙрджрд╛рд╣рд░рдг:
p->foo(); if (!p) Error();
V1004 рд░рд┐рд╡рд░реНрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдЬрдм рд╕реВрдЪрдХ рдХреЛ рдкрд╣рд▓реЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЙрджрд╛рд╣рд░рдг:
if (p) p->foo(); p->doo();
рдЖрдЗрдП рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдХреЗ рдХреБрдЫ рдЕрдВрд╢реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рдЬрд╣рд╛рдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдереАрдВред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдордЭрд╛рдПрдВ рдХрд┐ рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред PV_STATUS RC_UpdateBuffer(VideoEncData *video, Int currLayer, Int num_skip) { rateControl *rc = video->rc[currLayer]; MultiPass *pMP = video->pMP[currLayer]; if (video == NULL || rc == NULL || pMP == NULL) return PV_FAIL; .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 CWE-476 'рд╡реАрдбрд┐рдпреЛ' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 385, 388. rate_control.cpp 385 static void resampler_reset(struct resampler_itfe *resampler) { struct resampler *rsmp = (struct resampler *)resampler; rsmp->frames_in = 0; rsmp->frames_rq = 0; if (rsmp != NULL && rsmp->speex_resampler != NULL) { speex_resampler_reset_mem(rsmp->speex_resampler); } }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 CWE-476 'rsmp' рдкреЙрдЗрдВрдЯрд░ рдХреЛ nullrr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 54, 57. resampler.c 54 void bta_gattc_disc_cmpl(tBTA_GATTC_CLCB* p_clcb, UNUSED_ATTR tBTA_GATTC_DATA* p_data) { .... if (p_clcb->status != GATT_SUCCESS) { if (p_clcb->p_srcb) { std::vector<tBTA_GATTC_SERVICE>().swap( p_clcb->p_srcb->srvc_cache); } bta_gattc_cache_reset(p_clcb->p_srcb->server_bda); } .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V1004 CWE-476 'p_clcb-> p_srcb' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╢рдХреНрдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 695, 701. bta_gattc_act.cc 701рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреНрдп рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдЙрдирдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдЧрд▓рдд рдЪреЗрддрд╛рд╡рдиреА рджреЛрдиреЛрдВ рд╣реИрдВ рдЬреЛ рдЦрд░рд╛рдм рдпрд╛ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВредрдореИрдВрдиреЗ рдПрдХ рджрд░реНрдЬрди рдЙрдкрдпреЛрдЧреА рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рд▓рд┐рдЦреА рд╣реИрдВ:- V1004 CWE-476 The 'ain' pointer was used unsafely after it was verified against nullptr. Check lines: 101, 105. rsCpuIntrinsicBLAS.cpp 105
- V595 CWE-476 The 'outError' pointer was utilized before it was verified against nullptr. Check lines: 437, 450. Command.cpp 437
- V595 CWE-476 The 'out_last_reference' pointer was utilized before it was verified against nullptr. Check lines: 432, 436. AssetManager2.cpp 432
- V595 CWE-476 The 'set' pointer was utilized before it was verified against nullptr. Check lines: 4524, 4529. ResourceTypes.cpp 4524
- V595 CWE-476 The 'reply' pointer was utilized before it was verified against nullptr. Check lines: 126, 133. Binder.cpp 126
- V595 CWE-476 The 'video' pointer was utilized before it was verified against nullptr. Check lines: 532, 540. rate_control.cpp 532
- V595 CWE-476 The 'video' pointer was utilized before it was verified against nullptr. Check lines: 702, 711. rate_control.cpp 702
- V595 CWE-476 The 'pInfo' pointer was utilized before it was verified against nullptr. Check lines: 251, 254. ResolveInfo.cpp 251
- V595 CWE-476 The 'address' pointer was utilized before it was verified against nullptr. Check lines: 53, 55. DeviceHalHidl.cpp 53
- V595 CWE-476 The 'halAddress' pointer was utilized before it was verified against nullptr. Check lines: 55, 82. DeviceHalHidl.cpp 55
рдФрд░ рдлрд┐рд░ рдореИрдВ рдКрдм рдЧрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдХрд┐рддрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИред рдпреЗ рдЪреЗрддрд╛рд╡рдиреА рдЙрдирдХреЗ рдирд╛рдпрдХ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЙрдирдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗредрдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирдП рдкрд╛рдардХреЛрдВ рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: NJ_EXTERN NJ_INT16 njx_search_word(NJ_CLASS *iwnn, ....) { .... NJ_PREVIOUS_SELECTION_INFO *prev_info = &(iwnn->previous_selection); if (iwnn == NULL) { return NJ_SET_ERR_VAL(NJ_FUNC_NJ_SEARCH_WORD, NJ_ERR_PARAM_ENV_NULL); } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 CWE-476 'iwnn' рдкреЙрдЗрдВрдЯрд░ рдХреЛ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 686, 689. ndapi.c 686рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред" рдПрдХ рдирд╣реАрдВ рдЪрд░ рдХрд╛ рдкрддрд╛ рдмрд╕ рдЧрдгрдирд╛ рдХреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╕реВрдЪрдХ iwnn рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдп рдХреЗ рдкрддреЗ рдХреА рдЧрд▓рдд рдЧрдгрдирд╛ рдХреА рдереАредрдирд╣реАрдВ, рдЖрдк рдРрд╕реА рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рдХреЛрдб рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд▓рд┐рдЦрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрд╡рдпрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░:- рдХрдВрдкрд╛рдЗрд▓рд░ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдбрд┐рд░реЗрд▓реНрдб рдХрд░рддрд╛ рд╣реИ: iwnn-> past_selection
- рдЖрдк рдПрдХ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ
- рд╕рдВрдХрд▓рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╡рди рд╕реВрдЪрдХ рд╣рдореЗрд╢рд╛ рдЧреИрд░-рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ
- рд╕рдВрдХрд▓рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдБрдЪ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ: рдпрджрд┐ (iwnn == NULL)
- рдпрд╣реА рд╣реИ, рдЕрдм рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рджрд╕реНрдп рдХреЛ рдЧрд▓рдд рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рдХрд╛рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдореЗрд░реЗ рд▓реЗрдЦ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ " рдПрдХ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИ ред"рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдорд┐рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ
рдПрдХ рдЧрдВрднреАрд░ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рднреЗрджреНрдпрддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ CWE-14 рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдорди рд╡реЗрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ : рдХреНрд▓реАрдпрд░ рдмрдлрд╝рд░реНрд╕ рдХреЛ рдХреЛрдб рдХрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рд░рд┐рдореВрд╡рд▓редрд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ: рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдореЗрдорд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ рдпрджрд┐ рдЙрд╕рдХреЗ рдмрд╛рдж рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЬрдм рдореИрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рднреЗрджреНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдВрдХрд▓рдХ рдореЗрдВ рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд╣реАрдВ, рдпрд╣ рдХреЛрдИ рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЖрдкрддреНрддрд┐ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдкрдврд╝реЗрдВ:рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдЧрдВрднреАрд░ рд╣реИред рдХреНрдпрд╛ Android рдореЗрдВ рдРрд╕реА рдХреЛрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ? рдЬрд░реВрд░ рд╣реИред рд╡реЗ рдЖрдо рддреМрд░ рдкрд░ рдХрдИ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкреНрд░рдорд╛рдг рд╣реИрдВ: рдкреНрд░рдорд╛рдг :)редрдЖрдЗрдП рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ FwdLockGlue_InitializeRoundKeys рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рджреЗрдЦреЗрдВ , рдХреНрдпреЛрдВрдХрд┐ рдордзреНрдп рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред static void FwdLockGlue_InitializeRoundKeys() { unsigned char keyEncryptionKey[KEY_SIZE]; .... memset(keyEncryptionKey, 0, KEY_SIZE);
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V597 CWE-14 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'keyEncryptionKey' рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП memset_s () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред FwdLockGlue.c 102 keyEnc рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рдиKeyрд╕рд░рдгреА рдвреЗрд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдФрд░ рдирд┐рдЬреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╡реЗ рдЗрд╕ рд╕рд░рдгреА рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рднрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдЧрд▓рддреА рд╕реЗ рди рд╣реЛ рдЬрд╛рдП рдЬрд╣рд╛рдВ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдЦ " рд╕реНрдореГрддрд┐ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░реЗрдВ - рдХреНрдпреЛрдВ? " рдмрддрд╛рдПрдЧрд╛ ред рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде рдирд┐рдЬреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрдорд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЯрд┐рдкреНрдкрдгреА "рд╢реВрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛" рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВредрдкрд░реЗрд╢рд╛рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдХрдВрдкрд╛рдЗрд▓рд░ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рддреЗ рд╕рдордп рдореЗрдорд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ ред рдЪреВрдВрдХрд┐ рдореЗрдорд╕реЗрдЯ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдореЗрдорд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЙрд▓ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╢рд╛рдирджрд╛рд░ рд╣реИредрдЕрдзрд┐рдХ 10 рдЪреЗрддрд╛рд╡рдиреА рдореИрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ Android_V597.txt редрдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдереА рдЬрд╣рд╛рдВ рдореЗрдореЛрд░реА рдУрд╡рд░рд░рд╛рдЗрдЯ рдирд╣реАрдВ рдХреА рдЧрдИ рдереА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрдорд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЗрд╕рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред void SHA1Transform(uint32_t state[5], const uint8_t buffer[64]) { uint32_t a, b, c, d, e; .... a = b = c = d = e = 0; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V1001 CWE-563 'a' рд╡реЗрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рддрдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред sha1.c 213PVS-Studio рдиреЗ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдЪрд░ рдХреЛ рдорд╛рди рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЗрд╕ рджреЛрд╖ рдХреЛ CWE-563 рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ : рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛ рдЪрд░ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯред рдФрд░, рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд╣ рд╕рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣рд╛рдВ рд╣рдо рдлрд┐рд░ рд╕реЗ рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -14 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдВрдХрд▓рдХ рдЗрди рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реА рдФрд░ рд╕реА ++ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╡реЗ рдмрд╣реБрдд рд╣реА рдХрдо рд╣реИрдВред рдирддреАрдЬрддрди, рд╕реНрдЯреИрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдП , рдмреА , рд╕реА , рдбреА рдФрд░ рдИ рдХреЗ рдкреБрд░рд╛рдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ , рдЬреЛ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВредрдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ / рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░
рдЬрдм рдЖрдк рдердХреЗ рд╣реБрдП рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЧрд╣рди рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред typedef int32_t GGLfixed; GGLfixed gglFastDivx(GGLfixed n, GGLfixed d) { if ((d>>24) && ((d>>24)+1)) { n >>= 8; d >>= 8; } return gglMulx(n, gglRecip(d)); }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V793 рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ '(d >> 24) + 1' рдХрдерди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╢рд╛рдпрдж, рдЗрд╕ рдХрдерди рдХреА рддреБрд▓рдирд╛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рд╕реЗ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдереАред рдлрд┐рдХреНрд╕реНрдбред рд╕реАрдкреАрд╕реА 75 рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╡реЗрд░рд┐рдПрдмрд▓ рдбреА рдХреЗ 8 рд╣рд╛рдИ-рдСрд░реНрдбрд░ рдмрд┐рдЯреНрд╕ рдореЗрдВ рдпреВрдирд┐рдЯреНрд╕ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдмрд┐рдЯреНрд╕ рдПрдХ рд╕рд╛рде рдирд╣реАрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ 0x00 рдФрд░ 0xFF рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рднреА рдореВрд▓реНрдп рдЙрдЪреНрдЪ рдмрд╛рдЗрдЯ рдореЗрдВ рд╣реИредрдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рдЦрдХрд░ рдиреЙрдирдЬрд░реЛ рд╣реИрдВ (рдбреА >> 24)ред рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рджрд╛рд╡реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ: ((рдбреА >> 24) +1)ред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЙрдЪреНрдЪ рдЖрда рдмрд┐рдЯреНрд╕ рдХреЛ рдирд┐рдореНрди рдмрд╛рдЗрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдпрд╣ рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╛рдЗрди рдмрд┐рдЯ рдЕрдиреНрдп рд╕рднреА рдмрд┐рдЯреНрд╕ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИред рдпрд╛рдиреА
рдЕрдЧрд░ рд╡реИрд░рд┐рдПрдмрд▓ d 0b11111111'00000000'00000000'00000000 рд╣реИ, рддреЛ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ 0b11111111'11111111'11111111'11111111 рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯ рдХреЗ 0xFFFFFFFF рдХреЗ рдорд╛рди рдореЗрдВ 1 рдЬреЛрдбрд╝рдХрд░ , рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ 0 рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рдпрд╣ рд╣реИ: -1 + 1 = 0ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП ((рдбреА >> 24) +1), рд╡рд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЙрдЪреНрдЪ рдЖрда рдмрд┐рдЯреНрд╕ 1 рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИрдВред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдХрдард┐рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЬрд▓реНрджреА рдордд рдХрд░реЛ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдХреИрд╕реЗ рдФрд░ рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)редрдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИредрд╢рд┐рдлреНрдЯ рдХрд░рддреЗ рд╕рдордп, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдХреЗрдд рдмрд┐рдЯ "рд╕реНрдорд┐рдпрд░" рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рдорд╛рдирдХ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ: тАЬE1 >> E2 рдХрд╛ рдореВрд▓реНрдп E1 рд╕рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд E2 рд╕рд╛ рд╕реНрдерд╛рди рд╣реИред рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ рдпрд╛ рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдорд╛рди E1 / 2 ^ E2 рдХреЗ рднрд╛рдЧрдлрд▓ рдХрд╛ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИред рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред "рдирд╡реАрдирддрдо рдкреНрд░рд╕реНрддрд╛рд╡ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдорд┐рд▓реЗред рдпрд╣ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдпрд╣ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдкрд╛рд░реА рдХреЗ рдмрд╛рдж, рд╢реВрдиреНрдп рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ((рдбреА >> 24) +1) рд╣рдореЗрд╢рд╛ 0 рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧреА, рдЕрд░реНрдерд╛рддред рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдореВрд▓реНрдп рд╣реЛрдЧрд╛редрдЗрд╕рд▓рд┐рдП рдирд┐рд╖реНрдХрд░реНрд╖: рдмреБрджреНрдзрд┐рдорд╛рди рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрди рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: GGLfixed gglFastDivx(GGLfixed n, GGLfixed d) { uint32_t hibits = static_cast<uint32_t>(d) >> 24; if (hibits != 0x00 && hibits != 0xFF) { n >>= 8; d >>= 8; } return gglMulx(n, gglRecip(d)); }
рд╢рд╛рдпрдж, рдореИрдВрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдЖрджрд░реНрд╢ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛрдИ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИредрдЖрдк рдПрдХ рдХрдк рдХреЙрдлреА рдпрд╛ рдЪрд╛рдп рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВред рд╡рд┐рдЪрд▓рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдЬрд╛рд░реА рд░рдЦреЗрдВ: рд╣рдо рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓реЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВредрд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ, рдЖрд╡реЗрджрдХ рдХреЛ рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреВрдЫрддрд╛ рд╣реВрдВ: " рдкреНрд░рд┐рдВрдЯрдл рдлрд╝рдВрдХреНрд╢рди рдХреНрдпрд╛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреНрдпреЛрдВ?" int i = 5; printf("%d,%d", i++, i++)
рд╕рд╣реА рдЙрддреНрддрд░: рдпрд╣ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрднреА-рдХрднреА, рдореИрдВ рдпрд╣ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реА ++ рдХреА рдорджрдж рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдпрд╣ рдХреЛрдб рд╕реНрдХреНрд░реАрди рдкрд░ "6.5" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЬреНрдЮрд╛рди рдФрд░ рдЖрддреНрдорд╛ рдореЗрдВ рдкреВрд░реНрдг рдард╣рд░рд╛рд╡ рдХреЗ рд▓рд┐рдП рдХрдордЬреЛрд░ рд╣реИрдВ :)редрдпрд╣ рдПрдХ рджреВрд░рдЧрд╛рдореА рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдирд╣реАрдВ, рдпрд╣ рдХреЛрдб рдЧрдВрднреАрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдореЗрдВред bool ComposerClient::CommandReader::parseSetLayerCursorPosition( uint16_t length) { if (length != CommandWriterBase::kSetLayerCursorPositionLength) { return false; } auto err = mHal.setLayerCursorPosition(mDisplay, mLayer, readSigned(), readSigned()); if (err != Error::NONE) { mWriter.setError(getCommandLoc(), err); } return true; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V681 CWE-758 рднрд╛рд╖рд╛ рдорд╛рдирдХ рдПрдХ рдЖрджреЗрд╢ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рджреМрд░рд╛рди 'рд░реАрдбрд╕рд╛рдЗрдирдб' рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред ComposerClient.cpp 836рд╣рдо рдХреЛрдб рдХреА рдЗрд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ: mHal.setLayerCursorPosition(...., readSigned(), readSigned());
рд░реАрдб рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ, рджреЛ рдорд╛рди рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдорд╛рдорд▓рд╛ рд╣реИредрдПрдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдн
рдпрд╣ рдкреВрд░рд╛ рд▓реЗрдЦ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреВрд▓ рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдЧреИрд░-рдердХрд╛ рд╣реБрдЖ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдиреЛрдЯрд┐рд╕ рдХрд░рддрд╛ рд╣реИред рдРрд╕реЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред const std::map<std::string, int32_t> kBootReasonMap = { .... {"watchdog_sdi_apps_reset", 106}, {"smpl", 107}, {"oem_modem_failed_to_powerup", 108}, {"reboot_normal", 109}, {"oem_lpass_cfg", 110},
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:- V766 CWE-462 рдПрдХ рд╣реА рдХреБрдВрдЬреА '"oem_lpass_cfg" рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдЗрдЯрдо рдкрд╣рд▓реЗ рд╣реА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред bootstat.cpp 264
- V766 CWE-462 рдПрдХ рд╣реА рдХреБрдВрдЬреА '"oem_xpu_ns_error" рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдЗрдЯрдо рдкрд╣рд▓реЗ рд╣реА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред bootstat.cpp 265
рд╕рдорд╛рди рдХреБрдВрдЬрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдиреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рд╕рд╛рд╣рдЪрд░реНрдп рдХрдВрдЯреЗрдирд░ ( std :: map ) рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрдорди рд╡реАрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ CWE-462 : рдПрд╕реЛрд╕рд┐рдПрдЯрд┐рд╡ рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреА рд╣реИредрдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд╛рда рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИредрдХреЛрдб рдХреЗ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдФрд░ рдирд┐рд░реНрдмрд╛рдз рд╣реИред MtpResponseCode MyMtpDatabase::getDevicePropertyValue(....) { .... switch (type) { case MTP_TYPE_INT8: packet.putInt8(longValue); break; case MTP_TYPE_UINT8: packet.putUInt8(longValue); break; case MTP_TYPE_INT16: packet.putInt16(longValue); break; case MTP_TYPE_UINT16: packet.putUInt16(longValue); break; case MTP_TYPE_INT32: packet.putInt32(longValue); break; case MTP_TYPE_UINT32: packet.putUInt32(longValue); break; case MTP_TYPE_INT64: packet.putInt64(longValue); break; case MTP_TYPE_UINT64: packet.putUInt64(longValue); break; case MTP_TYPE_INT128: packet.putInt128(longValue); break; case MTP_TYPE_UINT128: packet.putInt128(longValue);
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V525 CWE-682 рдХреЛрдб рдореЗрдВ рд╕рдорд╛рди рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдЖрдЗрдЯрдо 'putInt8', 'putUInt8', 'putInt16', 'putUInt16', 'putInt32', 'putUInt32', 'putInt64', 'putUInt64', 'putInt128', 'putInt128' рдХреЛ рд▓рд╛рдЗрдиреЛрдВ 620, 623, 626, 629, 629 , 632, 635, 638, 641, 644, 647 android_mtp_MtpDatabase.cpp 620рддреЛ MTP_TYPE_UINT128 рд╕рдорд╛рд░реЛрд╣ рдХреА рд╡рдЬрд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ putUInt128 , рдирд╣реАрдВ putInt128 редрдФрд░ рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдЕрдВрддрд┐рдо рдЕрд╕рдлрд▓ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред static void btif_rc_upstreams_evt(....) { .... case AVRC_PDU_REQUEST_CONTINUATION_RSP: { BTIF_TRACE_EVENT( "%s() REQUEST CONTINUATION: target_pdu: 0x%02d", __func__, pavrc_cmd->continu.target_pdu); tAVRC_RESPONSE avrc_rsp; if (p_dev->rc_connected == TRUE) { memset(&(avrc_rsp.continu), 0, sizeof(tAVRC_NEXT_RSP)); avrc_rsp.continu.opcode = opcode_from_pdu(AVRC_PDU_REQUEST_CONTINUATION_RSP); avrc_rsp.continu.pdu = AVRC_PDU_REQUEST_CONTINUATION_RSP; avrc_rsp.continu.status = AVRC_STS_NO_ERROR; avrc_rsp.continu.target_pdu = pavrc_cmd->continu.target_pdu; send_metamsg_rsp(p_dev, -1, label, ctype, &avrc_rsp); } } break; case AVRC_PDU_ABORT_CONTINUATION_RSP: { BTIF_TRACE_EVENT( "%s() ABORT CONTINUATION: target_pdu: 0x%02d", __func__, pavrc_cmd->abort.target_pdu); tAVRC_RESPONSE avrc_rsp; if (p_dev->rc_connected == TRUE) { memset(&(avrc_rsp.abort), 0, sizeof(tAVRC_NEXT_RSP)); avrc_rsp.abort.opcode = opcode_from_pdu(AVRC_PDU_ABORT_CONTINUATION_RSP); avrc_rsp.abort.pdu = AVRC_PDU_ABORT_CONTINUATION_RSP; avrc_rsp.abort.status = AVRC_STS_NO_ERROR; avrc_rsp.abort.target_pdu = pavrc_cmd->continu.target_pdu; send_metamsg_rsp(p_dev, -1, label, ctype, &avrc_rsp); } } break; .... }
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рдЖрдЧреЗ рдХреЗ рдкрд╛рда рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрд╡рдпрдВ рддреНрд░реБрдЯрд┐ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВредрддрд╛рдХрд┐ рдЖрдк рдЧрд▓рддреА рд╕реЗ рдЬрд╡рд╛рдм рдХреЛ рддреБрд░рдВрдд рди рдкрдврд╝ рд▓реЗрдВ, рдпрд╣рд╛рдБ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рддрд╕реНрд╡реАрд░ рд╣реИред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдВрдбрд╛ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдЖрдк рд╣реИрдВ редрдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЯрд╛рдЗрдкреЛрд╕ рдХреА рдЦреЛрдЬ рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛ рд╣реИред рдЕрдм рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: V778 CWE-682 рджреЛ рд╕рдорд╛рди рдХреЛрдб рдЯреБрдХрдбрд╝реЗ рдкрд╛рдП рдЧрдПред рд╢рд╛рдпрдж, рдпрд╣ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ рдФрд░ 'рдирд┐рд░рдВрддрд░' рдХреЗ рдмрдЬрд╛рдп 'рдЧрд░реНрднрдкрд╛рдд' рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред btif_rc.cc 1554рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЪреМрдХрд╕ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рдерд╛ред рдирддреАрдЬрддрди, рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ " рдирд┐рд░рдВрддрд░ " рдХреЛ " рдЧрд░реНрднрдкрд╛рдд " рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ редрдпрд╛рдиреА
рджреВрд╕рд░реЗ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: avrc_rsp.abort.target_pdu = pavrc_cmd->abort.target_pdu;
рдпрд╣ рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ " рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдкреНрд░рднрд╛рд╡ " рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рддрд╣рдд рдЖрддреА рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдирд╛рдореЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЧрд▓рддреА рдЕрдВрдд рдореЗрдВ рдХреА рдЧрдИ рдереАредfacepalm
рдПрдХ рдмрд╣реБрдд рд╣реА рдордЬреЗрджрд╛рд░ рдмрдЧ рдЫреЛрдЯреЗ-рдПрдВрдбрд┐рдпрди рдФрд░ рдмрдбрд╝реЗ-рдПрдВрдбрд┐рдпрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рдмреАрдЪ рд░реВрдкрд╛рдВрддрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ ( рдмрд╛рдЗрдЯ рдХреНрд░рдо рджреЗрдЦреЗрдВ )ред inline uint32_t bswap32(uint32_t pData) { return (((pData & 0xFF000000) >> 24) | ((pData & 0x00FF0000) >> 8) | ((pData & 0x0000FF00) << 8) | ((pData & 0x000000FF) << 24)); } bool ELFAttribute::merge(....) { .... uint32_t subsection_length = *reinterpret_cast<const uint32_t*>(subsection_data); if (llvm::sys::IsLittleEndianHost != m_Config.targets().isLittleEndian()) bswap32(subsection_length); .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V530 CWE-252 рдлрд╝рдВрдХреНрд╢рди 'bswap32' рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред ELFAttribute.cpp 84 bswap32рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рд╣реИ ред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: bswap32(subsection_length);
рд▓реЗрдЦрдХ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдЪрд░ рдХреЛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирддреАрдЬрддрди, рдХреЛрдИ рдбреЗрдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИредрд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ CWE-252 : рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ ред рд▓реЗрдХрд┐рди, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -198 : рдЧрд▓рдд рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХреЙрд▓ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдмрд┐рдВрджреБ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЙрд╕реЗ рдХреЛрдб рдореЗрдВ рдЗрд╕ рдЧрдВрднреАрд░ рджреЛрд╖ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИредрд╕рд╣реА рдХреЛрдб рд╣реИ: subsection_length = bswap32(subsection_length);
рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рддреАрди рдФрд░ рд╕реНрдерд╛рди рд╣реИрдВ:- V530 CWE-252 'bswap32' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред ELFAttribute.cpp 218
- V530 CWE-252 'bswap32' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред ELFAttribute.cpp 346
- V530 CWE-252 'bswap32' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред ELFAttribute.cpp 352
рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, [[рдиреЛрдбреЛрдбрдХрд╛рд░реНрдб]] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ ред рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ: [[nodiscard]] inline uint32_t bswap32(uint32_t pData) { ... }
рддрдм рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рднреА рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдХреЗ рд▓реЗрдЦ " C ++ 17 " рд╕реЗ рдХреБрдЫ рдирдИ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ редрдЕрдЧрдореНрдп рдХреЛрдб
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ, рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдХреЛрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЧреНрд░рд╛рдл рдореЗрдВ рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИредрдХреЙрдорди рд╡реАрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ CWE-561 : рдбреЗрдб рдХреЛрдб рд╣реИред virtual sp<IEffect> createEffect(....) { .... if (pDesc == NULL) { return effect; if (status != NULL) { *status = BAD_VALUE; } } .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V779 CWE-561 рдЕрдиреБрдкрдпреЛрдЧреА рдХреЛрдб рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдореМрдЬреВрдж рд╣реЛред IAudioFlinger.cpp 733рдСрдкрд░реЗрдЯрд░ рд╡рд╛рдкрд╕реА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдиреАрдЪреЗ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредрдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ:- V779 CWE-561 рдЕрдиреБрдкрдпреЛрдЧреА рдХреЛрдб рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдореМрдЬреВрдж рд╣реЛред bta_hf_client_main.cc 612
- V779 CWE-561 рдЕрдиреБрдкрдпреЛрдЧреА рдХреЛрдб рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдореМрдЬреВрдж рд╣реЛред android_media_ImageReader.cpp 468
- V779 CWE-561 рдЕрдиреБрдкрдпреЛрдЧреА рдХреЛрдб рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдореМрдЬреВрдж рд╣реЛред AMPEG4AudioAssembler.cpp 187
рдмреНрд░реЗрдХ
рд╕реНрд╡рд┐рдЪ рдХреЗ рдЕрдВрджрд░ рднреВрд▓ рдЧрдП рдмреНрд░реЗрдХ рд╕реА рдФрд░ рд╕реА ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЧрд▓рддреА рд╣реИред рдЗрд╕рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, C ++ 17 рдореЗрдВ [[рдкрд░рд┐рддреНрдпрд╛рдЧ]] рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рдПрдиреЛрдЯреЗрд╢рди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ ред рдЖрдк рдЗрд╕ рддреНрд░реБрдЯрд┐ рдФрд░ [[рдЧрд┐рд░рд╛рд╡рдЯ]] рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд▓реЗрдЦ " рдмреНрд░реЗрдХ рдПрдВрдб рдЗрд░реНрд░рд┐рде " рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред рд▓реЗрдХрд┐рди рдЬрдм рджреБрдирд┐рдпрд╛ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рд╕реЗ рднрд░реА рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ [[рдкрд░рддреА]] рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред Android рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдмрдЧреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХреЙрдорди рд╡реАрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ CWE-484 : рдУрдХреЗрдб рдмреНрд░реЗрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЗрди рд╕реНрд╡рд┐рдЪ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред bool A2dpCodecConfigLdac::setCodecConfig(....) { .... case BTAV_A2DP_CODEC_SAMPLE_RATE_192000: if (sampleRate & A2DP_LDAC_SAMPLING_FREQ_192000) { result_config_cie.sampleRate = A2DP_LDAC_SAMPLING_FREQ_192000; codec_capability_.sample_rate = codec_user_config_.sample_rate; codec_config_.sample_rate = codec_user_config_.sample_rate; } case BTAV_A2DP_CODEC_SAMPLE_RATE_16000: case BTAV_A2DP_CODEC_SAMPLE_RATE_24000: case BTAV_A2DP_CODEC_SAMPLE_RATE_NONE: codec_capability_.sample_rate = BTAV_A2DP_CODEC_SAMPLE_RATE_NONE; codec_config_.sample_rate = BTAV_A2DP_CODEC_SAMPLE_RATE_NONE; break; .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V796 CWE-484 рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ 'рдмреНрд░реЗрдХ' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЧрд╛рдпрдм рд╣реИред a2dp_vendor_ldac.cc 912рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдХреНрд╕рд░ рдХреЛрдб рдореЗрдВ рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрд░реАрдХреЛрдВ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, V519 рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:- V519 CWE-563 'codec_capability_.sample_rate' рдЪрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 910, 916. a2dp_vendor_ldac.cc 916
- V519 CWE-563 'codec_config_.sample_rate' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 911, 917. a2dp_vendor_ldac.cc 917
рдФрд░ рдХреБрдЫ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ: Return<void> EffectsFactory::getAllDescriptors(....) { .... switch (status) { case -ENOSYS: {
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V796 CWE-484 рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ 'рдмреНрд░реЗрдХ' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЧрд╛рдпрдм рд╣реИред EffectFactory.cpp 118 int Reverb_getParameter(....) { .... case REVERB_PARAM_REFLECTIONS_LEVEL: *(uint16_t *)pValue = 0; case REVERB_PARAM_REFLECTIONS_DELAY: *(uint32_t *)pValue = 0; case REVERB_PARAM_REVERB_DELAY: *(uint32_t *)pValue = 0; break; .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V796 CWE-484 рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ 'рдмреНрд░реЗрдХ' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЧрд╛рдпрдм рд╣реИред EffectReverb.cpp 1847 static SLresult IAndroidConfiguration_GetConfiguration(....) { .... switch (IObjectToObjectID((thiz)->mThis)) { case SL_OBJECTID_AUDIORECORDER: result = android_audioRecorder_getConfig( (CAudioRecorder *) thiz->mThis, configKey, pValueSize, pConfigValue); break; case SL_OBJECTID_AUDIOPLAYER: result = android_audioPlayer_getConfig( (CAudioPlayer *) thiz->mThis, configKey, pValueSize, pConfigValue); default: result = SL_RESULT_FEATURE_UNSUPPORTED; break; } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V796 CWE-484 рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ 'рдмреНрд░реЗрдХ' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЧрд╛рдпрдм рд╣реИред IAndroidConfiguration.cpp 90рдЧрд▓рдд рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди
рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдЧрд▓рдд рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ, рд╕рд╛рдорд╛рдиреНрдп рдХрдордЬреЛрд░реА рдЧрдгрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдЧреАрдХреГрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ:- CWE-401 : рдЕрдВрддрд┐рдо рд╕рдВрджрд░реНрдн рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЗрдореЛрд░реА рдХреА рдЕрдиреБрдЪрд┐рдд рд░рд┐рд▓реАрдЬ ('рдореЗрдореЛрд░реА рд▓реАрдХ')
- CWE-562 : рд░рд┐рдЯрд░реНрди рдСрдл рд╕реНрдЯреИрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдПрдбреНрд░реЗрд╕
- CWE-762 : рдмреЗрдореЗрд▓ рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рд░реВрдЯреАрди
рдЖрдЗрдП рдЙрди рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╖реНрдЯ рд╣реЛ рдЪреБрдХреЗ рдЪрд░ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВред TransformIterator& operator++(int) { TransformIterator tmp(*this); ++*this; return tmp; } TransformIterator& operator--(int) { TransformIterator tmp(*this); --*this; return tmp; }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:- V558 CWE-562 рдлрд╝рдВрдХреНрд╢рди рдЕрд╕реНрдерд╛рдпреА рд╕реНрдерд╛рдиреАрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ: tmpред transform_iterator.h 77
- V558 CWE-562 рдлрд╝рдВрдХреНрд╢рди рдЕрд╕реНрдерд╛рдпреА рд╕реНрдерд╛рдиреАрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ: tmpред transform_iterator.h 92
рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ tmp рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдЯреИрдХ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирддреАрдЬрддрди, рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╖реНрдЯ рд╣реЛ рдЪреБрдХреЗ (рдиреЙрдирдЯреЗрдиреНрд╕реЗрдиреНрдЯ) рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВредрдЗрд╕рдХрд╛ рд╕рд╣реА рдорд╛рди рд▓реМрдЯрдирд╛ рд╣реЛрдЧрд╛: TransformIterator operator++(int) { TransformIterator tmp(*this); ++*this; return tmp; } TransformIterator operator--(int) { TransformIterator tmp(*this); --*this; return tmp; }
рдФрд░ рднреА рдЕрдзрд┐рдХ рджреБрдЦрдж рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдШрдирд┐рд╖реНрда рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛред int register_socket_transport( int s, const char* serial, int port, int local) { atransport* t = new atransport(); if (!serial) { char buf[32]; snprintf(buf, sizeof(buf), "T-%p", t); serial = buf; } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V507 CWE-562 рд╕реВрдЪрдХ рд╕реНрдерд╛рдиреАрдп рд╕рд░рдгреА 'buf' рдХреЛ рдЗрд╕ рд╕рд░рдгреА рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдкреЙрдЗрдВрдЯрд░ рдЕрд╡реИрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред transport.cpp 1030рдпрд╣ рдПрдХ рдЦрддрд░рдирд╛рдХ рдХреЛрдб рд╣реИред рдпрджрд┐ рд╕реАрд░рд┐рдпрд▓ рддрд░реНрдХ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп NULL рд╣реИ, рддреЛ рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рдЗрдл рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдмрдлрд╝ рдПрд░реЗ рдореМрдЬреВрдж рд░рд╣рддрд╛ рд╣реИред рдЬрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рдмрдлрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯреИрдХ рдкрд░ рдмрдирд╛рдП рдЧрдП рдЕрдиреНрдп рдЪрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдореЗрдВ рдПрдХ рдирд╛рд░рдХреАрдп рдЧрдбрд╝рдмрдбрд╝реА рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧреА, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдЬрд╛рддреА рд╣реИредрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рдВрдЧрдд рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред void SensorService::SensorEventConnection::reAllocateCacheLocked(....) { sensors_event_t *eventCache_new; const int new_cache_size = computeMaxCacheSizeLocked(); eventCache_new = new sensors_event_t[new_cache_size]; .... delete mEventCache; mEventCache = eventCache_new; mCacheSize += count; mMaxCacheSize = new_cache_size; }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: рд╡реА 611 рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -762 'рдирдИ рдЯреА []' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди 'рдбрд┐рд▓реАрдЯ' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдХреЛрдб рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╢рд╛рдпрдж 'рдбрд┐рд▓реАрдЯ [] mEventCache?' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 391, 384. SensorEventConnection.cpp 391рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред MEventCache рд╡рд░реНрдЧ рдХреЗ рдПрдХ рд╕рджрд╕реНрдп рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдмрдлрд░ рдХреЛ рдирдП [] рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдФрд░ рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдореЗрдореЛрд░реА рдХреЛ рдлреНрд░реА рдХрд░реЗрдВ ред рдпрд╣ рдЧрд▓рдд рд╣реИ рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИредрдЗрд╕реА рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐: aaudio_result_t AAudioServiceEndpointCapture::open(....) { .... delete mDistributionBuffer; int distributionBufferSizeBytes = getStreamInternal()->getFramesPerBurst() * getStreamInternal()->getBytesPerFrame(); mDistributionBuffer = new uint8_t[distributionBufferSizeBytes]; .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: рд╡реА 611 рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -762 'рдирдИ рдЯреА []' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди 'рдбрд┐рд▓реАрдЯ' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдХреЛрдб рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╢рд╛рдпрдж 'рдбрд┐рд▓реАрдЯ [] mDistributionBuffer;' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред AAudioServiceEndpointCapture.cpp 50рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИредрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓рд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╣реИред struct HeifFrameInfo { .... void set(....) { .... mIccData.reset(new uint8_t[iccSize]); .... } .... std::unique_ptr<uint8_t> mIccData; };
V554 CWE-762 unique_ptr рдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧред 'рдирдИ []' рдХреЗ рд╕рд╛рде рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ 'рдбрд┐рд▓реАрдЯ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
HeifDecoderAPI.h 62рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░ рдХреНрд▓рд╛рд╕ std :: unique_ptr рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдирдП [] рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ редрд╕рд╣реА рд╡рд┐рдХрд▓реНрдк:
std::unique_ptr<uint8_t[]> mIccData;
рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ:
- V554 CWE-762 unique_ptr рдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧред 'рдирдИ []' рдХреЗ рд╕рд╛рде рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ 'рдбрд┐рд▓реАрдЯ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред atrace.cpp 949
- V554 CWE-762 unique_ptr рдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧред 'рдирдИ []' рдХреЗ рд╕рд╛рде рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ 'рдбрд┐рд▓реАрдЯ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред atrace.cpp 950
- V554 CWE-762 unique_ptr рдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧред 'рдирдИ []' рдХреЗ рд╕рд╛рде рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ 'рдбрд┐рд▓реАрдЯ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред HeifDecoderImpl.cpp 102
- V554 CWE-762 unique_ptr рдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧред 'рдирдИ []' рдХреЗ рд╕рд╛рде рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ 'рдбрд┐рд▓реАрдЯ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред HeifDecoderImpl.cpp 166
- V554 CWE-762 unique_ptr рдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧред 'рдирдИ []' рдХреЗ рд╕рд╛рде рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ 'рдбрд┐рд▓реАрдЯ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред ColorSpace.cpp 360
рдореЗрдореЛрд░реА рд▓реАрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреАред рдПрдХ рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕реА 20 рд╕реЗ рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдереАрдВред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рджреЛрд╖ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд┐рд░рдВрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдореБрдХреНрдд рд╕реНрдореГрддрд┐ рдореЗрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрдореА рд╣реЛ рд╕рдХрддреА рд╣реИред Asset* Asset::createFromUncompressedMap(FileMap* dataMap, AccessMode mode) { _FileAsset* pAsset; status_t result; pAsset = new _FileAsset; result = pAsset->openChunk(dataMap); if (result != NO_ERROR) return NULL; pAsset->mAccessMode = mode; return pAsset; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V773 CWE-401 рд╕рдорд╛рд░реЛрд╣ 'рдкреЗрд╕рд╕реЗрдЯ' рдкреЙрдЗрдВрдЯрд░ рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред
Asset.cpp 296рдпрджрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╣рд┐рд╕реНрд╕рд╛ рдЦреЛрд▓рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рдкреЙрдЗрдВрдЯрд░рд╕реЗрдЯ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ ред рдирддреАрдЬрддрди, рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╣реЛ рдЬрд╛рдПрдЧрд╛редрдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓реЗрдЦ рдореЗрдВ рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдиреНрдп рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: Android_V773.txt редрдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╡рд┐рджреЗрд╢ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ
рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧрд▓рдд рдкреИрдЯрд░реНрди рд╣реИрдВ рдЬреЛ рд╕рд░рдгреА рдХреЗ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред Android рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛: if (i < 0 || i > MAX) return; A[i] = x;
рд╕реА рдФрд░ рд╕реА ++ рдореЗрдВ, рд╕рд░рдгреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ 0 рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд░рдгреА рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХрд╛ рдЕрдзрд┐рдХрддрдо рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрд╡рдпрдВ рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдХрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╣реА рдЬрд╛рдБрдЪ рдЗрд╕ рддрд░рд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП: if (i < 0 || i >= MAX) return; A[i] = x;
рдЖрдо рдХрдордЬреЛрд░реА рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рд╕рд░рдгреА рдХреЛ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рддреЗ рд╣реБрдП , рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -119 : рдПрдХ рдореЗрдореЛрд░реА рдмрдлрд╝рд░ рдХреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЕрдиреБрдЪрд┐рдд рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ редрдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдореЗрдВ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦреЗрдВ, рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред static btif_hf_cb_t btif_hf_cb[BTA_AG_MAX_NUM_CLIENTS]; static bool IsSlcConnected(RawAddress* bd_addr) { if (!bd_addr) { LOG(WARNING) << __func__ << ": bd_addr is null"; return false; } int idx = btif_hf_idx_by_bdaddr(bd_addr); if (idx < 0 || idx > BTA_AG_MAX_NUM_CLIENTS) { LOG(WARNING) << __func__ << ": invalid index " << idx << " for " << *bd_addr; return false; } return btif_hf_cb[idx].state == BTHF_CONNECTION_STATE_SLC_CONNECTED; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V557 CWE-119 рдРрд░реЗ рдУрд╡рд░рд░рди рд╕рдВрднрд╡ рд╣реИред 'Idx' рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдорд╛рди 6. btif_hf.cc рдкрд░ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ 277рд╕рд╣реА рдЪреЗрдХ рд╡рд┐рдХрд▓реНрдк: if (idx < 0 || idx >= BTA_AG_MAX_NUM_CLIENTS) {
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рджреЛ рдФрд░ рдЪреАрдЬреЗрдВ рдкрд╛рдИ рдЧрдИрдВ:- V557 CWE-119 рдРрд░реЗ рдУрд╡рд░рд░рди рд╕рдВрднрд╡ рд╣реИред 'Idx' рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдорд╛рди 6. btif_hf.cc 869 рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ
- V557 CWE-119 рдРрд░реЗ рдУрд╡рд░рд░рди рд╕рдВрднрд╡ рд╣реИред 'рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛' рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдорд╛рди 6. btif_rc.cc 374 рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ
рдЯреВрдЯреЗ рд╣реБрдП рдЪрдХреНрд░
рдПрдХ рдЦрд░рд╛рдмреА рдЪрдХреНрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдореЗрдВ, рдореИрдВрдиреЗ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрдордЬреЛрд░реА рдЧрдгрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд░реНрдЧреАрдХреГрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:- CWE-20 : рдЕрдиреБрдЪрд┐рдд рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди
- CWE-670 : рд╣рдореЗрд╢рд╛-рдЧрд▓рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
- CWE-691 : рдЕрдкрд░реНрдпрд╛рдкреНрдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдкреНрд░рдмрдВрдзрди
- CWE-834 : рдЕрддреНрдпрдзрд┐рдХ Iteration
рдЙрд╕реА рд╕рдордп, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рд╛рдЗрдХрд┐рд▓ рд▓рд┐рдЦрддреЗ рд╕рдордп "рдЕрдкрдиреЗ рдкреИрд░ рдХреЛ рдЧреЛрд▓реА рдорд╛рд░" рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╡реЗ рдореБрдЭрд╕реЗ рдирд╣реАрдВ рдорд┐рд▓реЗред int main(int argc, char **argv) { .... char c; printf("%s is already in *.base_fs format, just ..... ", ....); rewind(blk_alloc_file); while ((c = fgetc(blk_alloc_file)) != EOF) { fputc(c, base_fs_file); } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V739 CWE-20 EOF рдХреА рддреБрд▓рдирд╛ 'рдЪрд╛рд░' рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рд╕реЗ рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред '(C = fgetc (blk_alloc_file))' 'int' рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред 61 blk_alloc_to_base_fs.cрд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд▓рдЧрд╛рддрд╛рд░ EOF рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣реИ рдЪрд╛рд░ ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреЛрдб рдЧрд▓рдд рдХреНрдпреЛрдВ рд╣реИредрд╕рдорд╛рд░реЛрд╣ fgetc рд░рд┐рдЯрд░реНрди рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ , рдЕрд░реНрдерд╛рддреН, рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ 0 рд╕реЗ 255 рдпрд╛ EOF (-1) рдкрд░ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВред рдкреБрд░рд╛рдирд╛ рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ рдЪрд╛рд░ ред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, 0xFF (255) рдХреЗ рдорд╛рди рд╡рд╛рд▓рд╛ рд╡рд░реНрдг -1 рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЙрд╕реА рддрд░рд╣ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреИрд╕реЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ (EOF) рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реЛрддреА рд╣реИредрдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрднреА-рдХрднреА рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЙрдирдХреА рд╡рд░реНрдгрдорд╛рд▓рд╛ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Windows-1251 рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдП рдЧрдП рд░реВрд╕реА рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдЕрдВрддрд┐рдо рдЕрдХреНрд╖рд░ рдореЗрдВ рдХреЛрдб 0xFF рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдлрд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИредрд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрдХреНрд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рд╢рд░реНрдд рдЧрд▓рдд рд▓рд┐рдЦреА рдЧрдИ рд╣реИред рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░ c рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП редрд╣рдо рдЬрд╛рд░реА рд░рдЦрдиреЗ рдФрд░ рдмрдпрд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ ред status_t AudioPolicyManager::registerPolicyMixes(....) { .... for (size_t i = 0; i < mixes.size(); i++) { .... for (size_t j = 0; i < mHwModules.size(); j++) {
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V534 CWE-691 рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ 'рдХреЗ рд▓рд┐рдП' рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЧрд▓рдд рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред 'I' рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AudioPolicyManager.cpp 2489рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рдореЗрдВ рдЯрд╛рдЗрдкреЛ рдХреЗ рдХрд╛рд░рдг, рд╕реНрдерд┐рддрд┐ рдЪрд░ i рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЛ рдЪрд░ j рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред рдирддреАрдЬрддрди, рдЪрд░ рдЬрдореНрдореВ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд░реВрдк рд╕реЗ рдмрдврд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде mHwModules рд╕рд░рдгреА рдХреЛ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ ред рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЗрд╕рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛редрд╡реИрд╕реЗ, рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд╛рд▓рд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдпрд╣рд╛рдВ рдареАрдХ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА: AudioPolicyManager.cpp 2586ред3 рдФрд░ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реИрдВ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдВрджрд┐рдЧреНрдз рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдб рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдБ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕ рдХреЛрдб рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд▓реЗрдЦрдХ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗредрдкрд╣рд▓рд╛ рдЯреБрдХрдбрд╝рд╛: void ce_t3t_handle_check_cmd(....) { .... for (i = 0; i < p_cb->cur_cmd.num_blocks; i++) { .... for (i = 0; i < T3T_MSG_NDEF_ATTR_INFO_SIZE; i++) { checksum += p_temp[i]; } .... } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V535 CWE-691 рдЪрд░ 'i' рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдФрд░ рдмрд╛рд╣рд░реА рд▓реВрдк рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 398, 452. Ce_t3t.cc 452рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдмрд╛рд╣рд░реА рдФрд░ рдЖрдВрддрд░рд┐рдХ рджреЛрдиреЛрдВ рдЪрдХреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрджреЛ рдФрд░ рд╕рдорд╛рди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЯреНрд░рд┐рдЧрд░:- V535 CWE-691 рдЪрд░ 'xx' рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдФрд░ рдмрд╛рд╣рд░реА рд▓реВрдк рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 801, 807. sdp_db.cc 807
- V535 CWE-691 рдЪрд░ 'xx' рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдФрд░ рдмрд╛рд╣рд░реА рд▓реВрдк рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 424, 438. nfa_hci_act.cc 438
рдХреНрдпрд╛ рддреБрдо рдЕрднреА рддрдХ рдирд╣реАрдВ рдердХреЗ рд╣реЛ? рдореИрдВ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ редрдЕрдм рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред #define NFA_HCI_LAST_PROP_GATE 0xFF tNFA_HCI_DYN_GATE* nfa_hciu_alloc_gate(uint8_t gate_id, tNFA_HANDLE app_handle) { .... for (gate_id = NFA_HCI_FIRST_HOST_SPECIFIC_GENERIC_GATE; gate_id <= NFA_HCI_LAST_PROP_GATE; gate_id++) { if (gate_id == NFA_HCI_CONNECTIVITY_GATE) gate_id++; if (nfa_hciu_find_gate_by_gid(gate_id) == NULL) break; } if (gate_id > NFA_HCI_LAST_PROP_GATE) { LOG(ERROR) << StringPrintf( "nfa_hci_alloc_gate - no free Gate ID: %u " "App Handle: 0x%04x", gate_id, app_handle); return (NULL); } .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V654 CWE-834 рд▓реВрдк рдХреА рд╕реНрдерд┐рддрд┐ 'рдЧреЗрдЯ_рд┐рдб <= 0xFF' рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддреА рд╣реИред nfa_hci_utils.cc 248рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:- рдирд┐рд░рдВрддрд░ NFA_HCI_LAST_PROP_GATE 0xFF рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
- рдкреНрд░рдХрд╛рд░ uint8_t рдХреЗ рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реВрдк рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдЪрд░ рдХрд╛ рдорд╛рди рд╕реАрдорд╛ [0..0xFF] рд╣реИред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рдд рдЧреЗрдЯ_рдЖрдИрдбреА <= NFA_HCI_LAST_PROP_GATE рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реИ рдФрд░ рд▓реВрдк рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддреА рд╣реИредрд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ CWE-834 рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ CWE-571 рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ: рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддреА рд╣реИредрд▓реВрдк рдореЗрдВ рдЕрдЧрд▓реА рддреНрд░реБрдЯрд┐ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред status_t SimpleDecodingSource::doRead(....) { .... for (int retries = 0; ++retries; ) { .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V654 CWE-834 рд▓реВрдк рдХреА рд╕реНрдерд┐рддрд┐ '++ рд░рд┐рдЯреНрд░реАрдЬрд╝' рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддреА рд╣реИред SimpleDecodingSource.cpp 226рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдЪрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдкреБрдирд░реНрдкреНрд░рдпрд╛рд╕ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрднрд╡ рдореВрд▓реНрдпреЛрдВ рд▓реЗ рд▓рд┐рдпрд╛ рд╣реИ рдкреВрд░реНрдгрд╛рдВрдХ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЪрдХреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИредрд▓реВрдк рдмрдВрдж рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ++ рд░реАрдЯреНрд░реАрдЬрд╝ 0. рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╕рдВрднрд╡ рд╣реИ рдЬрдм рд╡реЗрд░рд┐рдПрдмрд▓ рдУрд╡рд░рдлреНрд▓реЛ рд╣реЛрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЪрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдХреЛрдб рдЧрд▓рдд рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЪреЗрдХ рд╣рдЯрд╛рдиреЗ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдирд┐рд░реНрджреЗрд╢ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдкреВрд░рд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИредрдФрд░ рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдЖрдЦрд┐рд░реА рдЧрд▓рддреАред status_t Check(const std::string& source) { .... int pass = 1; .... do { .... switch(rc) { case 0: SLOGI("Filesystem check completed OK"); return 0; case 2: SLOGE("Filesystem check failed (not a FAT filesystem)"); errno = ENODATA; return -1; case 4: if (pass++ <= 3) { SLOGW("Filesystem modified - rechecking (pass %d)", pass); continue;
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V696 CWE-670 'рдЬрд╛рд░реА рд░рдЦреЗрдВ' рдСрдкрд░реЗрдЯрд░ 'do {...} рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдЧрд╛ (рдЬрдмрдХрд┐ FALSE) рд▓реВрдк рдХреНрдпреЛрдВрдХрд┐ рд╣рд╛рд▓рдд рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реИред рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: 105, 121. Vfat.cpp 105рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рдкреНрд░рдкрддреНрд░ рдХрд╛ рдПрдХ рд▓реВрдк рд╣реИ: do { .... if (x) continue; .... } while (0)
рджреЛрд╣рд░рд╛рдпрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрд╛рд░реА рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рдЧрд▓рдд рд╣реИред
рдЬрд╛рд░реА рдмрдпрд╛рди рддреБрд░рдВрдд рд▓реВрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИ, рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрдХреНрд░ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣: for (;;) { .... if (x) continue; .... break; }
рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдкреБрди: рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ
рдкрд┐рдЫрд▓реА рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЪрд░ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░, рдЯрд╛рдЗрдкреЛ рдпрд╛ рдЕрд╕рдлрд▓ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЗ рдХрд╛рд░рдг рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред рдХреЙрдорди рд╡реАрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ CWE-563 : рд╡рд░реНрдЬрди рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВред status_t XMLNode::flatten_node(....) const { .... memset(&namespaceExt, 0, sizeof(namespaceExt)); if (mNamespacePrefix.size() > 0) { namespaceExt.prefix.index = htodl(strings.offsetForString(mNamespacePrefix)); } else { namespaceExt.prefix.index = htodl((uint32_t)-1); } namespaceExt.prefix.index = htodl(strings.offsetForString(mNamespacePrefix)); namespaceExt.uri.index = htodl(strings.offsetForString(mNamespaceUri)); .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V519 CWE-563 'namespaceExt.prefix.index' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 1535, 1539. XMLNode.cpp 1539рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЫрджреНрдо рдХреЛрдб рд▓рд┐рдЦреВрдВрдЧрд╛: if (a > 0) X = 1; else X = 2; X = 1;
рд╢рд░реНрдд рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЪрд░ X (рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдореЗрдВ рдпрд╣ namepaceExt.prefix.index рд╣реИ ) рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред bool AudioFlinger::RecordThread::threadLoop() { .... size_t framesToRead = mBufferSize / mFrameSize; framesToRead = min(mRsmpInFramesOA - rear, mRsmpInFramesP2 / 2); .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V519 CWE-563 'рдлреНрд░реЗрдордЯрд╛рдЙрдбрд░' рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 6341, 6342ред рдереНрд░реЗрдбреНрд╕ред рд╕реАрдкреАрд╕реА 6342рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдпрджрд┐ рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдФрд░ рдореВрд▓реНрдп рддреБрд░рдВрдд рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред void SchedulingLatencyVisitorARM::VisitArrayGet(....) { .... if (index->IsConstant()) { last_visited_latency_ = kArmMemoryLoadLatency; } else { if (has_intermediate_address) { } else { last_visited_internal_latency_ += kArmIntegerOpLatency; } last_visited_internal_latency_ = kArmMemoryLoadLatency; } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V519 CWE-563 'last_visited_internal_latency_' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 680, 682. рдЕрдиреБрд╕реВрдЪрдХ_рдЖрд░реНрдоред 682рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм, рдЕрд░реНрдерд╣реАрди рдХреЛрдбред рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: last_visited_internal_latency_ += kArmMemoryLoadLatency;
рдФрд░ рдЕрдВрддрд┐рдо рддреНрд░реБрдЯрд┐, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдердХрд╛рдК рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рднреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЫреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред void multiprecision_fast_mod(uint32_t* c, uint32_t* a) { uint32_t U; uint32_t V; .... c[0] += U; V = c[0] < U; c[1] += V; V = c[1] < V; c[2] += V;
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V519 CWE-563 'V' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 307, 309. p_256_multpreaches.cc 309рдХреЛрдб рдЗрддрдирд╛ "рдЕрдкрдиреА рдЖрдБрдЦреЗрдВ рдлрд╛рдбрд╝ рджреЛ" рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ: рдХреЛрдб рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рд╣реИредрдЕрдиреНрдп рдХреАрдбрд╝реЗ
рдмрд┐рдЦрд░реА рд╣реБрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдзреНрдпрд╛рдп рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдХрдкрдЯреА рд╣реИрдВредрдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рдВрдЪрд╛рд▓рди void TagMonitor::parseTagsToMonitor(String8 tagNames) { std::lock_guard<std::mutex> lock(mMonitorMutex);
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V593 CWE-783 'рдП = рдмреА! = рд╕реА' рдкреНрд░рдХрд╛рд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ: 'рдП = (рдмреА! = рд╕реА)'ред TagMonitor.cpp 50рдЖрдо рдХрдордЬреЛрд░реА рдПрдиреНрдпреВрдорд░реЗрд╢рди: CWE-783 : рдСрдкрд░реЗрдЯрд░ рдХреА рд╡рд░реАрдпрддрд╛ рддрд░реНрдХ рддреНрд░реБрдЯрд┐редрдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд▓реНрдкрдирд╛ рдХреАред "3 рдП" рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЖрдЗрдбрд┐рдпрд▓ рдЪрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (idx! = -1), рддреЛ рдХреЛрдб рдЪрд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ idx рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ редрджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЪреЗрдХ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: if (ssize_t idx = (tagNames.find("3a") != -1))
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк "3a" рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЧрд▓рдд / рд╕рддреНрдп рдЖрдЗрдбрд┐рдпрд▓ рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ ред рдирддреАрдЬрддрди, idx рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди 0 рдпрд╛ 1. рд╣реЛрддрд╛ рд╣реИредрдпрджрд┐ рд╕реНрдерд┐рддрд┐ рд╕рд╣реА рд╣реИ ( idx рд╡реЗрд░рд┐рдПрдмрд▓ 1 рд╣реИ), рддреЛ id рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ ред рд╣рдореЗрд╢рд╛ 1 рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рдЪрд░ рдЧрд▓рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛редрдпрджрд┐ рдЖрдк рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЪрд░ рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: ssize_t idx = tagNames.find("3a"); if (idx != -1)
C ++ 17 рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рднреА рдЖрдкрдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: if (ssize_t idx = tagNames.find("3a"); idx != -1)
рдЕрд╡реИрдз рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ struct HearingDevice { .... HearingDevice() { HearingDevice(RawAddress::kEmpty, false); } .... };
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V603 CWE-665 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'this-> HearingDevice :: HearingDevice (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред Hear_aid.cc 176рдЖрдо рдХрдордЬреЛрд░реА рдЧрдгрдирд╛: CWE-665 : рдЕрдиреБрдЪрд┐рдд рд╢реБрд░реБрдЖрдд редрдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЕрдХреНрд╕рд░ рдЧрд▓рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдХреНрд▓рд╛рд╕ рдореЗрдВ рджреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИрдВред рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИредрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИред HearingDevice рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирдпрд╛ рдЕрдирд╛рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░ рдЕрд╕рд┐рдВрдЪрд┐рдд рд░рд╣рддреЗ рд╣реИрдВредрддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ C ++ 11 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА)ред рд╕рд╣реА рдХреЛрдб рд╣реИ: HearingDevice() : HearingDevice(RawAddress::kEmpty, false) { }
рдлрд╝рдВрдХреНрд╢рди рдорд╛рди рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen) { socklen_t socklen = *fromlen; BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, &socklen) ); *fromlen = socklen; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V591 CWE-393 рдЧреИрд░-рд╢реВрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред linux_close.cpp 139рдЖрдо рдХрдордЬреЛрд░реА рдЧрдгрдирд╛: CWE-393 : рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреА рд╡рд╛рдкрд╕реАредрдлрд╝рдВрдХреНрд╢рди рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐: V591 CWE-393 рдЧреИрд░-рд╢реВрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред linux_close.cpp 158рдЧрд▓рдд рд╕рдВрд░рдЪрдирд╛ рдЖрдХрд╛рд░ рдЧрдгрдирд╛ int MtpFfsHandle::handleControlRequest(....) { .... struct mtp_device_status *st = reinterpret_cast<struct mtp_device_status*>(buf.data()); st->wLength = htole16(sizeof(st)); .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V568 рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ 'sizeof ()' рдСрдкрд░реЗрдЯрд░ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 'st' рд╡рд░реНрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдирд╣реАрдВред MtpFfsHandle.cpp 251рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡реЗ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рди рдХрд┐ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ, рд╡реЗрд╡рд▓реЗрдВрде рдХреЗ рд╕рджрд╕реНрдп рдЪрд░ рдореЗрдВ ред рдлрд┐рд░ рд╕рд╣реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: st->wLength = htole16(sizeof(*st));
рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ:- V568 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ 'sizeof ()' рдСрдкрд░реЗрдЯрд░ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 'cacheinfo' рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдирд╣реАрдВред NetlinkEvent.cpp 220
- V568 рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ 'sizeof ()' рдСрдкрд░реЗрдЯрд░ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 'рдкреГрд╖реНрда-> рдЕрдЧрд▓реЗ' рд╡рд░реНрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдирд╣реАрдВред linker_block_allocator.cpp 146
- V568 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ sizeof () рдСрдкрд░реЗрдЯрд░ рдХрд╛ рддрд░реНрдХ 'рдФрд░ session_id' рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рд╕рдВрджрд░реНрдн- ril.c 1775
рдЕрд░реНрдерд╣реАрди рд╕рд╛ рдСрдкрд░реЗрд╢рди #define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 #define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002 #define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004 EGLContext eglCreateContext(....) { .... case EGL_CONTEXT_FLAGS_KHR: if ((attrib_val | EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR) || (attrib_val | EGL_CONTEXT_OPENGL_FORWARD_C....) || (attrib_val | EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR)) { context_flags = attrib_val; } else { RETURN_ERROR(EGL_NO_CONTEXT,EGL_BAD_ATTRIBUTE); } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V617 CWE-480 рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред '0x00000001' рдХрд╛ рддрд░реНрдХ '|' рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдорд╛рди рд╣реЛрддрд╛ рд╣реИред egl.cpp 1329рдЖрдо рдХрдордЬреЛрд░реА рдЧрдгрдирд╛: CWE-480 : рдЧрд▓рдд рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧредрд░реВрдк рдХреА рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (рдП | рез) || (рдП | 2) || (рдП | 4) рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдкрдХреЛ & рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдФрд░ рдлрд┐рд░ рдХреЛрдб рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: if ((attrib_val & EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR) || (attrib_val & EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR) || (attrib_val & EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR))
рдЗрд╕реА рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐: V617 CWE-480 рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред '0x00000001' рдХрд╛ рддрд░реНрдХ '|' рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдорд╛рди рд╣реЛрддрд╛ рд╣реИред egl.cpp 1338рдЧрд▓рдд рдмрд┐рдЯ рд╢рд┐рдлреНрдЯ template <typename AddressType> struct RegsInfo { .... uint64_t saved_reg_map = 0; AddressType saved_regs[64]; .... inline AddressType* Save(uint32_t reg) { if (reg > sizeof(saved_regs) / sizeof(AddressType)) { abort(); } saved_reg_map |= 1 << reg; saved_regs[reg] = (*regs)[reg]; return &(*regs)[reg]; } .... }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V629 CWE-190 '1 << reg' рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред 64-рдмрд┐рдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде 32-рдмрд┐рдЯ рдореВрд▓реНрдп рдХрд╛ рдмрд┐рдЯ рд╢рд┐рдлреНрдЯрд┐рдВрдЧред RegsInfo.h 47рдХреЙрдорди рд╡реЗрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди: CWE-190 : рдЗрдВрдЯреЗрдЧрд░ рдУрд╡рд░рдлреНрд▓реЛ рдпрд╛ рд░реИрдкрд░рд╛рдЙрдВрдбред 1 << regрдХреА рдкрд╛рд░реА рдХреЗ рд╕рд╛рде , рдЪрд░ reg рдХрд╛ рдореВрд▓реНрдп рд╕реАрдорд╛ [0..63] рдореЗрдВ рд╣реИред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 2 рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ, 2 ^ 0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ 2 ^ 63 рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИредрдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╢рд╛рдмреНрджрд┐рдХ 1 рдореЗрдВ 32-рдмрд┐рдЯ рдЗрдВрдЯ рдкреНрд░рдХрд╛рд░ рд╣реИ ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ 1 ^ 31 рд╕реЗ рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдПрдХ рдмрдбрд╝реЗ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛рд╡ рд╕реЗ рдЪрд░ рдХрд╛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрджреНрднрд╡ рд╣реЛрддрд╛ рд╣реИредрд╕рд╣реА рдХреЛрдб рд╣реИ: saved_reg_map |= static_cast<uint64_t>(1) << reg;
рдпрд╛: saved_reg_map |= 1ULL << reg;
рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рдирдХрд▓ рдЦреБрдж рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред void PCLmGenerator::writeJobTicket() {
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:- V549 CWE-688 'strcpy' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред genPCLm.cpp 1181
- V549 CWE-688 'strcpy' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред genPCLm.cpp 1182
рдХреЙрдорди рд╡реАрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди: рд╕реАрдбрдмреНрд▓реНрдпреВрдИ -688: рдХреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрдВрдХреНрд╢рди рдХреЙрд▓ рд╡рд┐рде рдЕрдпреЛрдЧреНрдп рд╡рд░реНрдЬрди рдпрд╛ рд░реЗрдЧреБрд▓реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднредрд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдХреЙрдкреА рдХреА рдЬрд╛рддреА рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣рд╛рдВ рдХреБрдЫ рдЯрд╛рдЗрдкреЛ рд╣реИрдВредрдПрдХ uninitialized рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ void mca_set_cfg_by_tbl(....) { tMCA_DCB* p_dcb; const tL2CAP_FCR_OPTS* p_opt; tMCA_FCS_OPT fcs = MCA_FCS_NONE; if (p_tbl->tcid == MCA_CTRL_TCID) { p_opt = &mca_l2c_fcr_opts_def; } else { p_dcb = mca_dcb_by_hdl(p_tbl->cb_idx); if (p_dcb) { p_opt = &p_dcb->p_chnl_cfg->fcr_opt; fcs = p_dcb->p_chnl_cfg->fcs; } } memset(p_cfg, 0, sizeof(tL2CAP_CFG_INFO)); p_cfg->mtu_present = true; p_cfg->mtu = p_tbl->my_mtu; p_cfg->fcr_present = true; memcpy(&p_cfg->fcr, p_opt, sizeof(tL2CAP_FCR_OPTS));
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V614 CWE-824 рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХрддрд░рдлрд╛ рд╕реВрдЪрдХ 'p_opt' рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред 'рдореЗрдорд╕реАрдкреА' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджреВрд╕рд░реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред mca_main.cc 252рдХреЙрдорди рд╡реЗрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди: CWE-824 : Uninitialized Pointer рдХрд╛ рдПрдХреНрд╕реЗрд╕редрдпрджрд┐ p_tbl-> tcid! = MCA_CTRL_TCID рдФрд░ p_dcb == nullptr , рддреЛ рдкреЙрдЗрдВрдЯрд░ p_opt рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рд░рд╣реЗрдЧрд╛редрдЕрд╕рд┐рдВрдЪрд┐рдд рдЪрд░ рдХрд╛ рдЕрдЬреАрдм рдЙрдкрдпреЛрдЧ struct timespec { __time_t tv_sec; long int tv_nsec; }; static inline timespec NsToTimespec(int64_t ns) { timespec t; int32_t remainder; t.tv_sec = ns / kNanosPerSecond; remainder = ns % kNanosPerSecond; if (remainder < 0) { t.tv_nsec--; remainder += kNanosPerSecond; } t.tv_nsec = remainder; return t; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V614 CWE-457 Uninitialized рдЪрд░ 't.tv_nsec' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ред clock_ns.h 55рдХреЙрдорди рд╡реАрдХрдиреЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди: CWE-457 : рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓рд┐рдЬреНрдб рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧредрдЪрд░ t.tv_nsec рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд╕рдордп , рдпрд╣ рдЕрд╕рд┐рдВрдЪрд┐рдд рд╣реИред рдЪрд░ рдХреЛ рдмрд╛рдж рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: t.tv_nsec = рд╢реЗрд╖; ред
рдпрд╣рд╛рдБ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рд╣реИредрдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░ void bta_dm_co_ble_io_req(....) { .... *p_auth_req = bte_appl_cfg.ble_auth_req | (bte_appl_cfg.ble_auth_req & 0x04) | ((*p_auth_req) & 0x04); .... }
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V578 рдПрдХ рдЕрдЬреАрдм рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред bta_dm_co.cc 259рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд┐рд░рд░реНрдердХ рд╣реИред рдпрджрд┐ рдЖрдк рд╕рдмрдкреНрд░реЗрдкреНрд░реЗрд╢рди (bte_appl_cfg.ble_auth_req & 0x04) рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ , рддреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред рд╢рд╛рдпрдж рдпрд╣рд╛рдБ рдХреБрдЫ рдЯрд╛рдЗрдкреЛ рд╣реИредрд╣реИрдВрдбрд▓ рд▓реАрдХ bool RSReflectionCpp::genEncodedBitCode() { FILE *pfin = fopen(mBitCodeFilePath.c_str(), "rb"); if (pfin == nullptr) { fprintf(stderr, "Error: could not read file %s\n", mBitCodeFilePath.c_str()); return false; } unsigned char buf[16]; int read_length; mOut.indent() << "static const unsigned char __txt[] ="; mOut.startBlock(); while ((read_length = fread(buf, 1, sizeof(buf), pfin)) > 0) { mOut.indent(); for (int i = 0; i < read_length; i++) { char buf2[16]; snprintf(buf2, sizeof(buf2), "0x%02x,", buf[i]); mOut << buf2; } mOut << "\n"; } mOut.endBlock(true); mOut << "\n"; return true; }
PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V773 CWE-401 рд╕рдорд╛рд░реЛрд╣ 'pfin' рд╣реИрдВрдбрд▓ рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕рдВрд╕рд╛рдзрди рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред
slang_rs_reflection_cpp.cpp 448рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рдЧрдгрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛: CWE-401 : рд▓рд╛рд╕реНрдЯ рд░реЗрдлрд░реЗрдВрд╕ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЗрдореЛрд░реА рдХреА рдЕрдиреБрдЪрд┐рдд рд░рд┐рд▓реАрдЬрд╝ ('рдореЗрдореЛрд░реА рд▓реАрдХ')ред рд╣рд╛рд▓рд╛рдБрдХрд┐, CWE-775 : рдорд┐рд╕рд┐рдВрдЧ рд░рд┐рд▓реАрдЬрд╝ рдСрдлрд╝ рдлрд╝рд╛рдЗрд▓ рдбреЗрд╕рд┐рдкреНрдЯрд░ рдпрд╛ рд╣реИрдВрдбрд▓ рдХреЛ рдкреНрд░рднрд╛рд╡реА рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдХреЗ рдмрд╛рдж рдЬрд╛рд░реА рдХрд░рдирд╛ рдпрд╣рд╛рдБ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛ ред рдореИрдВ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЗрд╕ рджреЛрд╖ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреВрдВрдЧрд╛редрдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ pfin рдХрднреА рдирд╣реАрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ред рдмрд╕ рдЕрдВрдд рдореЗрдВ fclose рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ ред рдПрдХ рдЕрдкреНрд░рд┐рдп рдЧрд▓рддреА рдЬреЛ рдЙрдкрд▓рдмреНрдз рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рдкреВрд░реА рдЖрдкреВрд░реНрддрд┐ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдирдИ рдлрд╛рдЗрд▓реЗрдВ рдЦреЛрд▓рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛редрдирд┐рд╖реНрдХрд░реНрд╖
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХрдордЬреЛрд░рд┐рдпрд╛рдБ (рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпрд╛рдБ) рдкрд╛рдИ рдЧрдИрдВ:- CWE-14: рдХреНрд▓реАрдпрд░ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣рдЯрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрдВрдкрд╛рдЗрд▓рд░
- CWE-20: рдЕрдиреБрдЪрд┐рдд рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди
- CWE-119: рдореЗрдореЛрд░реА рдмрдлрд╝рд░ рдХреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЕрдиреБрдЪрд┐рдд рдкреНрд░рддрд┐рдмрдВрдз
- CWE-190: рдЗрдВрдЯреЗрдЧрд░ рдУрд╡рд░рдлреНрд▓реЛ рдпрд╛ рд░реИрдкрд░рд╛рдЙрдВрдб
- CWE-198: рдЧрд▓рдд рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ
- CWE-393: рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреА рд╡рд╛рдкрд╕реА
- CWE-401: рдЕрдВрддрд┐рдо рд╕рдВрджрд░реНрдн рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЗрдореЛрд░реА рдХреА рдЕрдиреБрдЪрд┐рдд рд░рд┐рд▓реАрдЬ ('рдореЗрдореЛрд░реА рд▓реАрдХ')
- CWE-457: Uninitialized Variable рдХрд╛ рдЙрдкрдпреЛрдЧ
- CWE-462: рдПрд╕реЛрд╕рд┐рдПрдЯрд┐рд╡ рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреА
- CWE-480: рдЧрд▓рдд рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ
- CWE-484: рд╕реНрд╡реАрдЪ рдореЗрдВ рдмреНрд░реЗрдХрдбрд╛рдЙрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ
- CWE-561: рдбреЗрдб рдХреЛрдб
- CWE-562: рд░рд┐рдЯрд░реНрди рдСрдл рд╕реНрдЯреИрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдПрдбреНрд░реЗрд╕
- CWE-563: Assignment to Variable without Use
- CWE-570: Expression is Always False
- CWE-571: Expression is Always True
- CWE-476: NULL Pointer Dereference
- CWE-628: Function Call with Incorrectly Specified Arguments
- CWE-665: Improper Initialization
- CWE-670: Always-Incorrect Control Flow Implementation
- CWE-682: Incorrect Calculation
- CWE-688: Function Call With Incorrect Variable or Reference as Argument
- CWE-690: Unchecked Return Value to NULL Pointer Dereference
- CWE-691: Insufficient Control Flow Management
- CWE-758: Reliance on Undefined, Unspecified, or Implementation-Defined Behavior
- CWE-762: Mismatched Memory Management Routines
- CWE-775: Missing Release of File Descriptor or Handle after Effective Lifetime
- CWE-783: Operator Precedence Logic Error
- CWE-824: Access of Uninitialized Pointer
- CWE-834: Excessive Iteration
рдХреБрд▓ рдореЗрдВ, рдореИрдВрдиреЗ рд▓реЗрдЦ рдореЗрдВ 490 рд╕рдВрднрд╛рд╡рд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рдореБрдЭреЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рддрд╛рдХрдд рдирд╣реАрдВ рдорд┐рд▓реАредрдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдХреЛрдб рдЖрдзрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ C рдФрд░ C ++ рдореЗрдВ рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 2,168,000 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ 14.4% рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдореЗрдВ рд▓рдЧрднрдЧ 1,855,000 рд╕реНрд╡рдЪреНрдЫ рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВредрдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдб рдХреЗ 1,855,000 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП 490 CWE рд╣реИрдВредрдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдб рдХреА рдкреНрд░рддреНрдпреЗрдХ 4000 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП 1 рд╕реЗ рдЕрдзрд┐рдХ рдХрдордЬреЛрд░реА (рд╕рдВрднрд╛рд╡рд┐рдд рднреЗрджреНрдпрддрд╛) рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдПрдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИредрдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореИрдВ рд╕рднреА рдХреЛ рдПрдХ рдХреЛрдбрд▓реЗрд╕ рдХреЛрдб рдХреА рдЗрдЪреНрдЫрд╛ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:- рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХрд╛рдо рдХреЗ рдорд╕реМрджреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред
- : : .
- , : twitter , RSS , vk.com .

рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдВрдбреНрд░реЗ рдХрд╛рд░рдкреЛрд╡ред
We Checked the Android Source Codes by PVS-Studio or Nothing is Perfect