рдЧреНрд▓рд┐рдмреНрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЯреЗрд╕реНрдЯ рдкреНрд░рдпреЛрдЧ

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

glibc


glibc - GNU C рд▓рд╛рдЗрдмреНрд░реЗрд░реА (GNU рд▓рд╛рдЗрдмреНрд░реЗрд░реА)ред Glibc рдПрдХ C рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдФрд░ рдмреЗрд╕рд┐рдХ рдлрдВрдХреНрд╢рди рдЬреИрд╕реЗ рдУрдкрди, рдореЙрд▓реЛрдХ, рдкреНрд░рд┐рдВрдЯрдл рдЖрджрд┐ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ GNU рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП Free Software Foundation рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред glibc рдХреЛ GNU LGPL рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд: glibc ред

рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рдорд╛рдЪрд╛рд░ рджрд┐рдЦрд╛рдИ рджрд┐рдП рдХрд┐ рдЧреНрд▓рд┐рдмреИрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдиреЗ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдЕрд░реНрдерд╛рддреН, glibc-2-19-90 рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрдм рдХреЗрд╡рд▓ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рдорд┐рд▓рд╛ред рдореИрдВ рдХрдИ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рдмрдбрд╝реА рддреБрд▓рдирд╛ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╕реНрдд рдерд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдпрд╣ рдкреВрдЫрдирд╛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо Cppcheck рдФрд░ Visual Studio 2013 рдореЗрдВ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реЗ рдмреЗрд╣рддрд░ рдХреНрдпрд╛ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, glibc рдХреЛ рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

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

рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреНрдпрд╛ рд╣реИ


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

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

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

рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡реНрдпрдХреНрддрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдпрд╣рд╛рдВ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реИ, strcmp () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЙрд▓ рдореЗрдВ:
cmpres = strcmp (newp->from_string, root->from_string); 

рдФрд░ рдЙрд╕реЗ рдпрд╣ рднреА рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд▓рд╛рдЗрди рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдХрд┐рд╕ рдбрд░рд╛рд╡рдиреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рдЧреИрд░-рдорд╛рдирдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрд╕ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ:
 cmpres = __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (newp->from_string) && __builtin_constant_p (root->from_string) && (__s1_len = strlen (newp->from_string), __s2_len = strlen (root->from_string), (!((size_t)(const void *)((newp->from_string) + 1) - (size_t)(const void *)(newp->from_string) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((root->from_string) + 1) - (size_t)(const void *)(root->from_string) == 1) || __s2_len >= 4)) ? __builtin_strcmp (newp->from_string, root->from_string) : (__builtin_constant_p (newp->from_string) && ((size_t)(const void *)((newp->from_string) + 1) - (size_t)(const void *)(newp->from_string) == 1) && (__s1_len = strlen (newp->from_string), __s1_len < 4) ? (__builtin_constant_p (root->from_string) && ((size_t)(const void *)((root->from_string) + 1) - (size_t)(const void *)(root->from_string) == 1) ? __builtin_strcmp (newp->from_string, root->from_string) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (root->from_string); int __result = (((const unsigned char *) (const char *) (newp->from_string))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (newp->from_string))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (newp->from_string))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (newp->from_string))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (root->from_string) && ((size_t)(const void *)((root->from_string) + 1) - (size_t)(const void *)(root->from_string) == 1) && (__s2_len = strlen (root->from_string), __s2_len < 4) ? (__builtin_constant_p (newp->from_string) && ((size_t)(const void *)((newp->from_string) + 1) - (size_t)(const void *)(newp->from_string) == 1) ? __builtin_strcmp (newp->from_string, root->from_string) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (newp->from_string); int __result = (((const unsigned char *) (const char *) (root->from_string))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (root->from_string))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (root->from_string))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (root->from_string))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (newp->from_string, root->from_string)))); }); 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдРрд╕реЗ рдореЛрдбрд╝ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдкрд░ рдЕрд░реНрдерд╣реАрди рдЭреВрдареЗ рд╕рдВрджреЗрд╢ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЭреВрдареЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ:
 assert(MAP_FAILED == (void *) -1); 

рдореБрдЦрд░ () рдореИрдХреНрд░реЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рдлреИрд▓рддрд╛ рд╣реИ:
 ((((void *) -1) == (void *) -1) ? (void) (0) : __assert_fail ("((void *) -1) == (void *) -1", "loadmsgcat.c", 840, __PRETTY_FUNCTION__)); 

PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рддреБрд▓рдирд╛ ((рд╢реВрдиреНрдп *) -1) == (рд╢реВрдиреНрдп * -1.1) рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЧрд▓рдд рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ:

V501 рдмрд╛рдИрдВ рдФрд░ '==' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ: ((рд╢реВрдиреНрдп *) - 1) == (рд╢реВрдиреНрдп *) - 1 loadmsgcat.c 840

рд╣рдореЗрдВ рдЗрд╕ рдкрд░ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реИред рд╡рд┐рдЬреБрдЕрд▓ C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд╕рдм рд╕реЗ рдЧреБрдЬрд░ рдЪреБрдХреЗ рдереЗред рд╡рд╣рд╛рдБ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдЙрд╕реЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рд╡рд╣ "рдореБрдЦрд░" рдореИрдХреНрд░реЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ рдФрд░ рдмрд╕ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ MAP_FAILED рдореИрдХреНрд░реЛ "(рд╢реВрдиреНрдп *) -1" рд╣реИред рдпрд╣ рд╕рдм рд╡рд┐рдЬреБрдЕрд▓ C ++ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдирд╣реАрдВред

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

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

рд╕рдВрджрд┐рдЧреНрдз рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдорд┐рд▓реЗ


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

рдЕрдЬреАрдм рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐


 char *DCIGETTEXT (....) { .... /* Make CATEGORYVALUE point to the next element of the list. */ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') ++categoryvalue; .... } 

V590 рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрддреНрдпрдзрд┐рдХ рд╣реИ рдпрд╛ рдПрдХ рдЧрд▓рдд рдЪрд┐рддреНрд░рдг рд╣реИред dcigettext.c 582

рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 while (categoryvalue[0] == ':') 

рд╢рд╛рдпрдж рдпрд╣ рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рд╛рд▓рдд рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ (рд╢реНрд░реЗрдгреАрд╡рд╛рд░ [0]! = '\ 0') рдХреЗрд╡рд▓ рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕реЗ рдЕрдЪрд╛рдирдХ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
 while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') 

рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдкрд╣рд▓реЗ рд╕реВрдЪрдХ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ


рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдпрд╣ рдЬрдЧрд╣ рдЦрддрд░рдирд╛рдХ рд╣реЛред рд╢рд╛рдпрдж рд╕реВрдЪрдХ рдХрднреА рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА:
 static enum clnt_stat clntraw_call (h, proc, xargs, argsp, xresults, resultsp, timeout) CLIENT *h; u_long proc; xdrproc_t xargs; caddr_t argsp; xdrproc_t xresults; caddr_t resultsp; struct timeval timeout; { struct clntraw_private_s *clp = clntraw_private; XDR *xdrs = &clp->xdr_stream; .... if (clp == NULL) return RPC_FAILED; .... } 

V595 'clp' рдкреЙрдЗрдВрдЯрд░ рдХреЛ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 145, 150. clnt_raw.c 145

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рджреЛрд╖ рдЕрдЧрд▓реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: V595 nullrr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'clp' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 232, 235. clnt_raw.c 232

рдЦрддрд░рдирд╛рдХ рдХреЛрдб рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:
 int __nss_getent_r (....) { .... if (res && __res_maybe_init (&_res, 0) == -1) { *h_errnop = NETDB_INTERNAL; *result = NULL; return errno; } .... if (status == NSS_STATUS_TRYAGAIN && (h_errnop == NULL || *h_errnop == NETDB_INTERNAL) && errno == ERANGE) } 

V595 nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'h_errnop' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 146, 172. getnssent_r.c 146

рдпрджрд┐ рд╕реНрдерд┐рддрд┐ (res && __res_maybe_init (& _res, 0) == -1) рд╕рдВрддреБрд╖реНрдЯ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдкрд░, рдпрд╣ 'h_errnop' рдФрд░ 'рдкрд░рд┐рдгрд╛рдо' рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпреЗ рд╕рдВрдХреЗрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ NULL рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЦрддрд░рдирд╛рдХ рдЕрдиреБрдХреВрд▓рди (рднреЗрджреНрдпрддрд╛)


 char * __sha256_crypt_r (key, salt, buffer, buflen) const char *key; const char *salt; char *buffer; int buflen; { .... unsigned char temp_result[32] .... memset (temp_result, '\0', sizeof (temp_result)); .... .... // temp_result    } 

V597 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'temp_result' рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RtlSecureZeroMemory () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред sha256-crypt.c 385

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

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

рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐: V597 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'temp_result' рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RtlSecureZeroMemory () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред sha512-crypt.c 396

рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░


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

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдкрд╛рд▓реА рдкрд░ рд╕реА рдорд╛рдирдХ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ:

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

E1 << E2 рдХрд╛ рдкрд░рд┐рдгрд╛рдо E1 рд╡рд╛рдо-рд╢рд┐рдлреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ E2 рд╕рд╛ рд╕реНрдерд╛рди рд╣реИ; рдЦрд╛рд▓реА рдмрд┐рдЯреНрд╕ рд╢реВрдиреНрдп рд╕реЗ рднрд░реЗ рд╣реБрдП рд╣реИрдВред рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдореВрд▓реНрдп E1 * 2 pow E2 рд╣реИ, рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдпреЛрдЧреНрдп рд╕реЗ рдПрдХ рд╕реЗ рдХрдо moduloред рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдиреЙрдирдЧреЗрдЯрд┐рд╡ рдореВрд▓реНрдп рд╣реИ, рдФрд░ E1 * 2 pow E2 рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рддреЛ рдпрд╣ рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдп рд╣реИ; рдЕрдиреНрдпрдерд╛, рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

5 E1 >> E2 рдХрд╛ рдкрд░рд┐рдгрд╛рдо E1 рд╕рд╣реА-рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд E2 рдмрд┐рдЯ рд╕реНрдерд┐рддрд┐ рд╣реИред рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ рдпрд╛ рдпрджрд┐ E1 рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХ рдиреЙрдирдЧреЗрдЯрд┐рд╡ рдореВрд▓реНрдп рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдореВрд▓реНрдп E1 / 2 pow E2 рдХреЗ рднрд╛рдЧрдлрд▓ рдХрд╛ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИред рдпрджрд┐ рдИ 1 рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореВрд▓реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

рдпрд╣ рдорд╛рдирдХ рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ рдХрд┐ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЧрд▓рдд рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ glibc рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рд╣реИред

рд╡рд╛рдо рдкрд╛рд▓реА рдЙрджрд╛рд╣рд░рдг:
 static void init_cacheinfo (void) { .... count_mask = ~(-1 << (count_mask + 1)); .... } 

V610 рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ред рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ <<ред рдмрд╛рдпрд╛рдВ рд╕рдВрдЪрд╛рд▓рдХ '-1' рдЛрдгрд╛рддреНрдордХ рд╣реИред cacheinfo.c 645

рд░рд╛рдЗрдЯ рд╢рд┐рдлреНрдЯ рдЙрджрд╛рд╣рд░рдг:
 utf8_encode (char *buf, int val) { .... *buf = (unsigned char) (~0xff >> step); .... } 

рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "~ 0xff" рдкреНрд░рдХрд╛рд░ 'int' рдФрд░ is -256 рд╣реИред

рдпрд╣рд╛рдБ рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдЧрд▓рдд рдмрджрд▓рд╛рд╡ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдПрдХ uninitialized рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


 static int send_vc(....) { .... int truncating, connreset, resplen, n; .... #ifdef _STRING_ARCH_unaligned *anssizp2 = orig_anssizp - resplen; *ansp2 = *ansp + resplen; #else .... } V614 Uninitialized variable 'resplen' used. res_send.c 790 

рдЧрд▓рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрд╡рд░реВрдкрдг


рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ рдореБрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП '% u' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ рдХреЛ рдореБрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП '% d' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рдмреЗрд╢рдХ trifles рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 typedef unsigned int __uid_t; typedef __uid_t uid_t; int user2netname (...., const uid_t uid, ....) { .... sprintf (netname, "%s.%d@%s", OPSYS, uid, dfltdom); .... } 

V576 рдЧрд▓рдд рдкреНрд░рд╛рд░реВрдкред 'рд╕реНрдкреНрд░рд┐рдВрдЯрдл' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЪреМрдереЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рддрд░реНрдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред netname.c 51

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

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


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

рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ


  1. рдПрдВрдбреНрд░реЗ рдХрд╛рд░реНрдкреЛрд╡ред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ред
  2. рджрд┐рдорд┐рддреНрд░реА рдЯрдХрд╛рдЪреЗрдВрдХреЛред PVS-Studio рдФрд░ CppCat рдХреЗ рддрдХрдиреАрдХреА рдирд┐рджреЗрд╢рдХ рдЖрдВрджреНрд░реЗрдИ рдХрд╛рд░реНрдкреЛрд╡ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд ред


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

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


All Articles