2018 рдХреЗ рд▓рд┐рдП C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╢реАрд░реНрд╖ 10 рддреНрд░реБрдЯрд┐рдпрд╛рдВ

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



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

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

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

рджрд╕рд╡рд╛рдБ рд╕реНрдерд╛рди


рд╕реНрд░реЛрдд: рдФрд░ рдлрд┐рд░ рд╕реЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ: рдЧреЗрдВрдбрд╛ рддрд╛рд░рд╛рдордВрдбрд▓ рдХрд╛ рджреМрд░рд╛ рдХреИрд╕реЗ рдХрд┐рдпрд╛

рд╕реНрдЯреЗрд▓рд╛рд░рд┐рдпрдо рдЖрднрд╛рд╕реА рддрд╛рд░рд╛рдордВрдбрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рдерд╛ред

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЫреЛрдЯрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдХрдард┐рди рддреНрд░реБрдЯрд┐ рд╕реЗ рднрд░рд╛ рд╣реИ:

Plane::Plane(Vec3f &v1, Vec3f &v2, Vec3f &v3) : distance(0.0f), sDistance(0.0f) { Plane(v1, v2, v3, SPolygon::CCW); } 

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрд╛рдпрд╛ рд╣реИ?

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V603 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 'рдпрд╣-> рдкреНрд▓реЗрди :: рдкреНрд▓реЗрди (....)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдорд╛рдиред 29 29

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

рдиреЗрд╕реНрдЯреЗрдб рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЙрд▓ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ C ++ 11 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 Plane::Plane(Vec3f& v1, Vec3f& v2, Vec3f& v3) : Plane(v1, v2, v3, SPolygon::CCW) { distance = 0.0f; sDistance = 0.0f; } 

рддрдм рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рдЕрджреНрднреБрдд рдирд╣реАрдВ рд╣реИ?

рдиреМрд╡рд╛рдБ рд╕реНрдерд╛рди


рд╕реНрд░реЛрдд: рдкрд░реНрд▓ 5: рдореИрдХреНрд░реЛ рдХреИрд╕реЗ рдЫрд┐рдкрд╛ рд╣реИ

рдиреМрд╡реЗрдВ рд╕реНрдерд╛рди рдкрд░ рдкрд░реНрд▓ 5 рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдореИрдХреНрд░реЛ рджрд┐рдЦрд╛рддреА рд╣реИред

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

 PP(pp_match) { .... MgBYTEPOS_set(mg, TARG, truebase, RXp_OFFS(prog)[0].end); .... } 

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

 (((targ)->sv_flags & 0x00000400) && (!((targ)->sv_flags & 0x00200000) || S_sv_only_taint_gmagic(targ)) ? (mg)->mg_len = ((prog->offs)[0].end), (mg)->mg_flags |= 0x40 : ((mg)->mg_len = (((targ)->sv_flags & 0x20000000) && !__builtin_expect(((((PL_curcop)->cop_hints + 0) & 0x00000008) ? (_Bool)1 :(_Bool)0),(0))) ? (ssize_t)Perl_utf8_length( (U8 *)(truebase), (U8 *)(truebase)+((prog->offs)[0].end)) : (ssize_t)((prog->offs)[0].end), (mg)->mg_flags &= ~0x40)); 

рдЪреЗрддрд╛рд╡рдиреА PVS-Studio: V502 рд╢рд╛рдпрдж '?:' рдСрдкрд░реЗрдЯрд░ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред '?:' рдСрдкрд░реЗрдЯрд░ рдХреА 'рдФрд░&' рдСрдкрд░реЗрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред pp_hot.c 3036

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

рдореИрдХреНрд░реЛрдВ рдХреЛ рдмреБрд░рд╛рдИ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдРрд╕реЗ рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдореИрдХреНрд░реЛ рдХреЛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЖрдард╡рд╛рдБ рд╕реНрдерд╛рди


рд╕реНрд░реЛрдд: рдХреНрд░реЛрдорд┐рдпрдо: рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреНрд░реЛрдорд┐рдпрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕рдиреЗ рдЦреБрдж рдХреЛ WebRTC рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ред

 std::vector<SdpVideoFormat> StereoDecoderFactory::GetSupportedFormats() const { std::vector<SdpVideoFormat> formats = ....; for (const auto& format : formats) { if (cricket::CodecNamesEq(....)) { .... formats.push_back(stereo_format); } } return formats; } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: рд▓реВрдк рдХреЗ рд▓рд┐рдП рд░реЗрдВрдЬ-рдмреЗрд╕реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ 'рдлреЙрд░реНрдореЗрдЯ' рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП V789 CWE-672 Iterators, 'push_back' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЙрд▓ рдкрд░ рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред stereocodecfactory.cc 89

рддреНрд░реБрдЯрд┐ рдпрд╣ рд╣реИ рдХрд┐ рд╕реАрдорд╛-рдЖрдзрд╛рд░рд┐рдд-рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рд╡реЗрдХреНрдЯрд░ рдмрджрд▓рддрд╛ рд╣реИред рд░реЗрдВрдЬ-рдЖрдзрд╛рд░рд┐рдд рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдРрд╕реЗ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ рд╕реЗ рдЗрди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

 for (auto format = begin(formats), __end = end(formats); format != __end; ++format) { if (cricket::CodecNamesEq(....)) { .... formats.push_back(stereo_format); } } 

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

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

рд╕рд╛рддрд╡рд╛рдБ рд╕реНрдерд╛рди


рд╕реНрд░реЛрдд: рдЧреЛрдбреЛрдЯ: рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдХрд╛ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧ

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

 void AnimationNodeBlendSpace1D::add_blend_point( const Ref<AnimationRootNode> &p_node, float p_position, int p_at_index) { ERR_FAIL_COND(blend_points_used >= MAX_BLEND_POINTS); ERR_FAIL_COND(p_node.is_null()); ERR_FAIL_COND(p_at_index < -1 || p_at_index > blend_points_used); if (p_at_index == -1 || p_at_index == blend_points_used) { p_at_index = blend_points_used; } else { for (int i = blend_points_used - 1; i > p_at_index; i++) { blend_points[i] = blend_points[i - 1]; } } .... } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V621 CWE-835 'рдСрдкрд░реЗрдЯрд░' рдХреЗ рд▓рд┐рдП рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд▓реВрдк рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдиреАрдореЗрд╢рди_рдмреНрд▓реЗрдВрдб_рд╕реНрдкреЗрд╕_1 рдбреАред рд╕реАред рдкреАред 113

рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрдХреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХрд╛рдЙрдВрдЯрд░ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЖрд░рдВрдн рдореВрд▓реНтАНрдп рдорд┐рд╢реНрд░рдг_ рдкреЙрдЗрдВрдЯреНрд╕_рдпреВрдиреНтАНрдб - 1 рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдкрд┐рдЫрд▓реЗ рджреЛ рдЪреЗрдХреЛрдВ ( ERR_FAIL_COND рдФрд░ рдЕрдЧрд░ рдореЗрдВ ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╕рдордп рд▓реВрдк рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕ рд╕рдордп рдорд┐рд╢реНрд░рдг_ рдкреЙрдЗрдВрдЯреНрд╕_рдпреВрдб p_at_index рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╛ рддреЛ рд▓реВрдк рдХреА рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрдЧреА, рдпрд╛ рд▓реВрдк рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рдмреНрд▓реЗрдВрдб_ рдкреЙрдЗрдВрдЯреНрд╕_рдпреВрдЬрд╝ 1 == p_at_index рд╣реИ , рддреЛ рд▓реВрдк рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЪреЗрдХ i> p_at_index рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рдЙрдВрдЯрд░ рдореИрдВ рд▓реВрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдмрдврд╝рддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЪрдХреНрд░ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЪрд▓реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪрд░ i рдХрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрдЧрд╛, рдЬреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдореИрдВ рдЯрд╛рдЗрдк рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЗрдВрдЯ рдХрд╛ рдерд╛ , рддреЛ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рдореВрд▓реНрдп рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж, i ++ рдСрдкрд░реЗрдЯрд░ рдЗрд╕реЗ 0 рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ "рдЕрдирд╕рд╛рдЗрдиреНрдб рд░реИрдкрд┐рдВрдЧ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ ред

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

рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ:

  1. рд╕рд░рд▓, рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдХреЛрдб рд▓рд┐рдЦреЗрдВ
  2. рдЕрдзрд┐рдХ рдЧрд╣рди рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рд╣реМрд╕рд▓реЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВ
  3. рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)


рдЫрдард╛ рд╕реНрдерд╛рди


рд╕реНрд░реЛрдд: рдЕрдореЗрдЬрди рд▓рдореНрдмрд░рдмрд╛рд░реНрдб: рдж рдХреНрд░рд╛рдИ рдСрдл рдж рд╕реЛрд▓

Gamedev рдЙрджреНрдпреЛрдЧ рд╕реЗ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг, рдЕрдореЗрдЬрд╝реЕрди рд▓рдореНрдмрд░рдмрд╛рд░реНрдб AAA рдЗрдВрдЬрди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗред

 void TranslateVariableNameByOperandType(....) { // Igor: yet another Qualcomm's special case // GLSL compiler thinks that -2147483648 is // an integer overflow which is not if (*((int*)(&psOperand->afImmediates[0])) == 2147483648) { bformata(glsl, "-2147483647-1"); } else { // Igor: this is expected to fix // paranoid compiler checks such as Qualcomm's if (*((unsigned int*)(&psOperand->afImmediates[0])) >= 2147483648) { bformata(glsl, "%d", *((int*)(&psOperand->afImmediates[0]))); } else { bformata(glsl, "%d", *((int*)(&psOperand->afImmediates[0]))); } } bcatcstr(glsl, ")"); .... } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V523 'рддрддреНрдХрд╛рд▓реАрди' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред toglsloperand.c 700

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

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

рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╕рд┐рд░реНрдл рдХреАрдбрд╝реЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдЕрдореЗрдЬрд╝реЕрди рд▓рдВрдмрд░рдЧрд╛рд░реНрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╕рдлрд▓рддрд╛ рдХреА рдХрд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрдЧреЛрд░ рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВ!

рдкрд╛рдВрдЪрд╡рд╛ рд╕реНрдерд╛рди


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

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

 QWindowsCursor::CursorState QWindowsCursor::cursorState() { enum { cursorShowing = 0x1, cursorSuppressed = 0x2 }; CURSORINFO cursorInfo; cursorInfo.cbSize = sizeof(CURSORINFO); if (GetCursorInfo(&cursorInfo)) { if (cursorInfo.flags & CursorShowing) // <= V616 .... } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V616 CWE-480 'CursorShowing' рдХрд╛ рдирд╛рдо 0 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред qwindowscursor.cpp 669

рдпрд╣реА рд╣реИ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреЗ рдПрдХ рдРрд╕реА рдЬрдЧрд╣ рдкрд░ рд╢рдкрде рд▓реА, рдЬрд╣рд╛рдВ рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдереА! рдпрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ CursorShowing рд╕реНрдерд┐рд░ 0 рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдКрдкрд░ рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ 1 рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддреА рд╣реИрдВред

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

рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдлрд┐рд░ рд╕реЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЪреМрдХрд╕ рдерд╛ред рдорд╛рди 0x1 рдХреЛ рдирд╛рдорд┐рдд рдирд┐рд░рдВрддрд░ рдХрд░реНрд╕рд░ рдХреЗ рдирд╛рдо рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдмрд┐рдЯ рдирд┐рд░рдВрддрд░ рд╕рдВрдЪрд╛рд▓рди "рдФрд░" рдореЗрдВ рдирд╛рдорд┐рдд рдирд┐рд░рдВрддрд░ рдХрд░реНрд╕рд░ рд╢рд╛рдорд┐рд▓ рд╣реИ ред рдпреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓рд╛ рд▓реЛрдЕрд░рдХреЗрд╕ рдЕрдХреНрд╖рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдХреИрдкрд┐рдЯрд▓ рд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рдеред

рдХреЛрдб рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ QWindowsCursor рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЙрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ:

 class QWindowsCursor : public QPlatformCursor { public: enum CursorState { CursorShowing, CursorHidden, CursorSuppressed }; .... } 

рдпрджрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╛рдорд┐рдд рдПрдирдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ CursorShowing рдПрдХ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ 0 рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдЪреМрдерд╛ рд╕реНрдерд╛рди


рд╕реНрд░реЛрдд: рд╣рдо рдкреИрд░ рдореЗрдВ рдЧреЛрд▓реА рдорд╛рд░рддреЗ рд╣реИрдВ, рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ

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

 static const char *basic_gets(int *cnt) { .... int c = getchar(); if (c < 0) { if (fgets(command_buf, sizeof(command_buf) - 1, stdin) != command_buf) { break; } command_buf[strlen(command_buf)-1] = '\0'; /* remove endline */ break; } .... } 

PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V1010 CWE-20 рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рджрд╛рдЧреА рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: 'strlen (рдХрдорд╛рдВрдб_рдмреНрдпреВрдл)'ред

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ strlen (рдХрдорд╛рдВрдб_рдмреНрдпреВрдл) - 1 рдЕрд╕рддреНрдпрд╛рдкрд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ: рдпрджрд┐ c_buf рд╕реА рднрд╛рд╖рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рдПрдХрд▓ рд╡рд░реНрдг - '\ 0') рддреЛ strlen (рдХрдорд╛рдВрдб_buf) 0 рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдорд╛рдВрдб_рдмреНрдпреВрдл [-1] рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдореБрд╕реАрдмрдд!

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

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



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

рдЕрдм рд╣рдорд╛рд░реЗ рд╡рд┐рдЬреЗрддрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: рд╣рдо рдлрд╛рдЗрдирд▓ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ!



рддреАрд╕рд░рд╛ рд╕реНрдерд╛рди


рд╕реНрд░реЛрдд: NCBI рдЬреАрдиреЛрдо рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░: рд▓реБрдкреНрддрдкреНрд░рд╛рдп рдЕрдиреБрд╕рдВрдзрд╛рди

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

 /** * Crypt a given password using schema required for NTLMv1 authentication * @param passwd clear text domain password * @param challenge challenge data given by server * @param flags NTLM flags from server side * @param answer buffer where to store crypted password */ void tds_answer_challenge(....) { .... if (ntlm_v == 1) { .... /* with security is best be pedantic */ memset(hash, 0, sizeof(hash)); memset(passwd_buf, 0, sizeof(passwd_buf)); ... } else { .... } } 

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:

  • V597 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'рд╣реИрд╢' рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП memset_s () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреБрдиреМрддреАред 365
  • V597 рдХрдВрдкрд╛рдЗрд▓рд░ 'рдореЗрдорд╕реЗрдЯ' рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдбрд┐рд▓реАрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ 'passwd_buf' рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП memset_s () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреБрдиреМрддреАред рекремрем

рдПрдХ рдЧрд▓рддреА рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЖрдк - рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ! .. рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдЕрднреА рднреА рдПрдХ рдЖрдиреБрд╡рдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╕реБрдкрд░рдореИрдиред

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

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

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

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

рджреВрд╕рд░рд╛ рд╕реНрдерд╛рди


рд╕реНрд░реЛрдд: рдХреИрд╕реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рд╛рдврд╝реЗ рддреАрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЪреМрдХрд╕ рд░рд╣рд╛

рдЗрд╕ рд╢реАрд░реНрд╖ рдХрд╛ рд░рдЬрдд рдкрджрдХ рд╣рдорд╛рд░реЗ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рд╣рдореЗрдВ рднреЗрдЬрд╛ рдерд╛ред рдЙрдиреНрд╣реЗрдВ рдпрдХреАрди рдерд╛ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЧрд▓рдд рдЪреЗрддрд╛рд╡рдиреА рджреА рдереАред

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

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

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

рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рд╣реИ!

рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рдЪрд╛рд▓рд╛рдХ рдЧрд▓рддреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рд╕рддрд░реНрдХрддрд╛ рдФрд░ рдЪреМрдХрд╕рддрд╛ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдкрд░рдЦреЗрдВред


рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА:
  • V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ: (ch> = 0x0FF21)ред decodew.cpp 525
  • V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: (ch <= 0x0FF3A)ред decodew.cpp 525
  • V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ: (ch> = 0x0FF41)ред decodew.cpp 525
  • V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: (ch <= 0x0FF5A)ред decodew.cpp 525

рдпрджрд┐ рдЖрдк рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ - рддреЛ рдЖрдкрдиреЗ рдореЗрд░рд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ!

рддреНрд░реБрдЯрд┐ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реЗрдз рдСрдкрд░реЗрдЯрд░ (!) рдкреВрд░реА рд╕реНрдерд┐рддрд┐ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ:

 !((ch >= 0x0FF10) && (ch <= 0x0FF19)) 

рдпрджрд┐ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рд╣реЛрддреА рд╣реИ, рддреЛ рдЪрд░ рдХрд╛ рдорд╛рди рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ [0x0FF10 ... 0x0FF19]ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЪрд╛рд░ рдЖрдЧреЗ рдХреА рддреБрд▓рдирд╛ рдЕрдм рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИ: рд╡реЗ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рд╣реЛрдВрдЧреЗред

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

 const bool isLetterOrDigit = (ch >= 0x0FF10 && ch <= 0x0FF19) // 0..9 || (ch >= 0x0FF21 && ch <= 0x0FF3A) // A..Z || (ch >= 0x0FF41 && ch <= 0x0FF5A); // a..z if (!isLetterOrDigit) 

рдлрд┐рд░, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрд╖реНрдардХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЖрдБрдЦреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдЧрд▓рддреА рдХреЛ "рдкрдХрдбрд╝рдиреЗ" рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред

рдФрд░ рдЕрдм - рдЪреЗрд░реА: рд╣рдо рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ!

рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди


рд╕реНрд░реЛрдд: рд╕рджрдореЗ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо: рдкреМрд░рд╛рдгрд┐рдХ рд╕рд┐рд╕реНрдЯрдо рд╢реЙрдХ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпрд╛рдВ

рддреЛ, рд╣рдорд╛рд░реЗ рдЖрдЬ рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рдлрд╛рдЗрдирд▓ рдореЗрдВ рджрд┐рдЧреНрдЧрдЬ рд╕рд┐рд╕реНрдЯрдо рд╢реЙрдХ рд╕реЗ рдПрдХ рдЧрд▓рддреА рд╣реИ! 1994 рдореЗрдВ рдЬрд╛рд░реА рдпрд╣ рдЧреЗрдо рдбреЗрдб рд╕реНрдкреЗрд╕, рдмрд╛рдпреЛрд╢реЙрдХ рдФрд░ рдбреАрдо рдПрдХреНрд╕ рдЬреИрд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдЦреЗрд▓реЛрдВ рдХреЗ рдкреВрд░реНрд╡рдЬ рдФрд░ рдкреНрд░реЗрд░рдХ рдмрди рдЧрдПред

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

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

 // I'll give you fish, I'll give you candy, // I'll give you, everything I have in my hand // that kid from the wrong side came over my house again, // decapitated all my dolls // and if you bore me, you lose your soul to me // - "Gepetto", Belly, _Star_ // And here, ladies and gentlemen, // is a celebration of C and C++ and their untamed passion... // ================== TerrainData terrain_info; // Now the actual stuff... // ======================= // this is all outrageously horrible, as we dont know what // we really need to deal with here // And if you thought the hack for papers was bad, // wait until you see the one for datas... - X // Returns whether or not in the humble opinion of the // sound system, the sample should be politely obliterated // out of existence // it's a wonderful world, with a lot of strange men // who are standing around, and they all wearing towels 

рд╣рдорд╛рд░реЗ рд░реВрд╕реА рднрд╛рд╖реА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛:
 //    ,    , //    ,       //      //      //     //     ,      // - "Gepetto", Belly, _Star_ //  ,   , //    C  C++     // ================== TerrainData terrain_info; //    ... // ======================= //    ,     , //         //    ,          //      ,      ... - X //       , //         //   ,     //   ,     

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

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


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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдХрдИ рдирдП рд╕рдВрдХрд▓рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдФрд░ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдирд┐рдпрдореЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ред рд╣рдордиреЗ MISRA C рдФрд░ MISRA C ++ рдорд╛рдирдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд░реНрдерди рднреА рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ ред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдирд╡рд╛рдЪрд╛рд░ рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдерд╛ред рд╣рд╛рдБ, рдЕрдм рд╣рдо рдЬрд╛рд╡рд╛ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ! рдФрд░ рд╣рдордиреЗ рдЖрдЗрдХрди рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ:)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдЕрдкрдиреЗ рдкрд╛рдардХреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╣рдорд╛рд░реЗ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдФрд░ рд╣рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрдЦрдж рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЗрд╕ рдкрд░, рд╡рд░реНрд╖ 2018 рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рд╢реАрд░реНрд╖ 10 рд╕реА ++ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИрдВред рдЖрдкрдХреЛ рдХреМрди рд╕реА рдЬрдЧрд╣реЗрдВ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдкрд╕рдВрдж рдЖрдИрдВ рдФрд░ рдХреНрдпреЛрдВ? рдХреНрдпрд╛ рдЖрдк 2018 рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдП? рд╣рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВ!

рдЕрдЧрд▓реА рдмрд╛рд░ рддрдХ!



рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдЬреЙрд░реНрдЬ рдЧреНрд░рд┐рдмрдХреЛрд╡ред 2018 рдореЗрдВ C ++ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╢реАрд░реНрд╖ 10 рдХреАрдбрд╝реЗ

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


All Articles