{"id":219547,"date":"2014-04-16T10:31:02","date_gmt":"2014-04-16T06:31:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=219547"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=219547","title":{"rendered":"<span class=\"post_title\">\u0421\u043a\u0443\u0447\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 OpenSSL<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ae1\/60e\/045\/ae160e045cacbe1490464b4d23438b2b.png\" alt=\"PVS-Studio and OpenSSL\" align=\"left\"\/><br \/>  \u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0432 OpenSSL \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u043d\u0438\u0432\u044b\u0439. \u042f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e PVS-Studio \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u043d\u0430\u0439\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u044d\u0442\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043d\u0435\u0442 \u043f\u043e\u0432\u043e\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043b\u0438\u0431\u043e \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u0440\u043e OpenSSL. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u043d\u0438 \u0438 \u0442\u0430\u043a \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u043b\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0448\u043a\u0432\u0430\u043b \u043f\u0438\u0441\u0435\u043c \u0441 \u043f\u0440\u043e\u0441\u044c\u0431\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043c\u043e\u0436\u0435\u0442 \u043b\u0438 PVS-Studio \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443. \u042f \u0441\u0434\u0430\u043b\u0441\u044f \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e.<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 OpenSSL<\/h2>\n<p>  \u042f \u0434\u0443\u043c\u0430\u044e, \u0443\u0436\u0435 \u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0432 <a href=\"http:\/\/www.viva64.com\/go.php?url=1034\">OpenSSL<\/a> \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043a\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u044d\u0442\u043e \u0438\u043b\u0438 \u0445\u043e\u0447\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.viva64.com\/go.php?url=1383\">The Heartbleed Bug<\/a>.<\/li>\n<li><a href=\"http:\/\/www.viva64.com\/go.php?url=1384\">Existential type crisis: Diagnosis of the OpenSSL Heartbleed Bug<\/a>.<\/li>\n<li>Wikipedia. <a href=\"http:\/\/www.viva64.com\/go.php?url=1385\">Heartbleed<\/a>.<\/li>\n<li><a href=\"http:\/\/www.viva64.com\/go.php?url=1389\">Heartbleed<\/a>.<\/li>\n<li><a href=\"http:\/\/www.viva64.com\/go.php?url=1391\">Answering the Critical Question: Can You Get Private SSL Keys Using Heartbleed?<\/a><\/li>\n<li><a href=\"http:\/\/www.viva64.com\/go.php?url=1388\">NSA Said to Exploit Heartbleed Bug for Intelligence for Years<\/a>.<\/li>\n<li><a href=\"http:\/\/www.viva64.com\/go.php?url=1390\">Man who introduced serious &#8216;Heartbleed&#8217; security flaw denies he inserted it deliberately<\/a>.<\/li>\n<li><a href=\"http:\/\/www.viva64.com\/go.php?url=1387\">The Heartbleed Hit List: The Passwords You Need to Change Right Now<\/a>.<\/li>\n<li><a href=\"http:\/\/www.viva64.com\/go.php?url=1392\">Open Source software is the worst kind except for all of the others<\/a>.<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u0438\u043c, \u0442\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0447\u0443\u0436\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c, \u043f\u0440\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0432 \u043a\u043e\u0434\u0435 \u043e\u043a\u043e\u043b\u043e 2 \u043b\u0435\u0442. \u0417\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0435\u0451 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043d\u0438 \u043e\u0434\u0438\u043d \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430, \u0445\u043e\u0442\u044f \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043d\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u043d\u0438\u0432\u044b\u0439.<\/p>\n<p>  \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 OpenSSL \u0438 \u043c\u044b. \u0412\u043e\u0442 \u0437\u0430\u043c\u0435\u0442\u043a\u0430 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443: &quot;<a href=\"http:\/\/www.viva64.com\/ru\/b\/0183\/\">\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e OpenSSL<\/a>&quot;. \u041a\u043e\u0435-\u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0448\u043b\u0438, \u043d\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0433\u043e. \u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0435 \u0437\u0440\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438.<\/p>\n<p>  \u042f \u043d\u0435 \u0443\u0442\u043e\u0447\u043d\u044f\u043b, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u043c\u044b OpenSSL, \u043a\u043e\u0433\u0434\u0430 \u0442\u0430\u043c \u0443\u0436\u0435 \u0431\u044b\u043b Heartbleed \u0431\u0430\u0433 \u0438\u043b\u0438 \u043d\u0435\u0442. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e PVS-Studio \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0431\u0430\u0433. \u0415\u0433\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c. \u041f\u0440\u043e\u0435\u043a\u0442 OpenSSL \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0438 \u043d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u043e\u0448\u0438\u0431\u043a\u0443, \u043b\u0438\u0434\u0435\u0440 \u0441\u0440\u0435\u0434\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u043a\u043e\u0434\u0430 Coverity Scan. \u0417\u0430\u043c\u0435\u0442\u043a\u0438 \u043f\u0440\u043e \u044d\u0442\u043e: &quot;<a href=\"http:\/\/www.viva64.com\/go.php?url=1393\">Heartbleed and Static Analysis<\/a>&quot;, &quot;<a href=\"http:\/\/www.viva64.com\/go.php?url=1394\">Heartbleed and static analysis (2)<\/a>&quot;.<\/p>\n<p>  \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \u041a\u043e\u0434 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u0439. \u041d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u044f\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u0442\u0438\u043f\u043e\u0432 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0414\u0430\u0436\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0432 \u0447\u0451\u043c \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u0442\u0443\u0442 \u043f\u0430\u0441\u0443\u044e\u0442. \u042d\u0442\u043e \u043d\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0434\u0435\u0444\u0435\u043a\u0442, \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u0437\u0430\u043a\u043b\u0430\u0434\u043e\u043a. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043d\u043e \u044f \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u044e\u0441\u044c. \u0415\u0441\u043b\u0438 \u0431\u044b \u043d\u0430\u0448\u043b\u0438, \u043e\u043d\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u0415\u0441\u0442\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0447\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043f\u0435\u0446\u0441\u043b\u0443\u0436\u0431, \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u044d\u0442\u0443 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043d\u043e \u043f\u0440\u043e \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442. \u041e\u0434\u043d\u0430\u043a\u043e, \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u043f\u0438\u0440\u043e\u043b\u043e\u0433\u0438\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e \u044d\u0442\u043e.<\/p>\n<p>  \u041c\u043e\u0451 \u043b\u0438\u0447\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430, \u0430 \u043d\u0435 \u043a\u0430\u043a\u0430\u044f \u043d\u0435 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0430. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u0435\u0451 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u0441\u043b\u043e\u0436\u043d\u0430\u044f. \u0412\u043e\u0442 \u0438 \u0432\u0441\u0451.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u043e \u0442\u0430\u043a \u0431\u044b\u043b\u043e-\u0431\u044b \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b OpenSSL \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"http:\/\/www.viva64.com\/ru\/pvs-studio\/\">PVS-Studio<\/a>. \u041d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e \u044f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b, \u043d\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0430\u043a \u043c\u0430\u043b\u043e? \u0414\u0430 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e OpenSSL \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u0422\u043e, \u0447\u0442\u043e \u0432 \u043d\u0451\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0442, \u0447\u0442\u043e \u043a\u043e\u0434 \u0443\u0436\u0430\u0441\u0435\u043d. \u0414\u0443\u043c\u0430\u044e, \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0435\u0441\u0442\u044c \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0434\u044b\u0440\u044b, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043d\u0438 \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b. \u041f\u043b\u044e\u0441, \u043f\u0440\u043e\u0435\u043a\u0442 OpenSSL \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<h2>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h2>\n<p>  \u0415\u0449\u0451 \u0440\u0430\u0437 \u0445\u043e\u0447\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u044f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b. \u0411\u0443\u0434\u0435\u0442 \u043b\u0443\u0447\u0448\u0435, \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043d\u0438\u0436\u0435 \u043d\u0435 \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u0430 \u043a\u0430\u043a \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a \u043a\u043e\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0435\u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c. \u041d\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0442\u043e\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0447\u0442\u043e \u044f \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u044e \u0438\u0437 \u043c\u0443\u0445\u0438 \u0441\u043b\u043e\u043d\u0430.<\/p>\n<h3>\u041f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">typedef struct ok_struct {   ....   size_t buf_len_save;   size_t buf_off_save;   .... } BIO_OK_CTX;  static int ok_read(BIO *b, char *out, int outl) {    ....    BIO_OK_CTX *ctx;   ....   \/* copy start of the next block into proper place *\/   if(ctx-&gt;buf_len_save - ctx-&gt;buf_off_save &gt; 0)   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V555 The expression of the &#8216;A \u2014 B &gt; 0&#8217; kind will work as &#8216;A != B&#8217;. bio_ok.c 243 <\/p>\n<p>  \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (ctx-&gt;buf_len_save \u2014 ctx-&gt;buf_off_save &gt; 0) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434.<\/p>\n<p>  \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0437\u0434\u0435\u0441\u044c \u0445\u043e\u0442\u044f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 (ctx-&gt;buf_len_save &gt; ctx-&gt;buf_off_save). \u042d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0442\u0438\u043f. \u0412\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0434\u0430\u0451\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<\/p>\n<p>  \u0423\u0441\u043b\u043e\u0432\u0438\u0435 (ctx-&gt;buf_len_save \u2014 ctx-&gt;buf_off_save &gt; 0) \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0432\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b:<\/p>\n<ul>\n<li>(ctx-&gt;buf_len_save \u2014 ctx-&gt;buf_off_save &gt; 0)<\/li>\n<li>(ctx-&gt;buf_len_save != ctx-&gt;buf_off_save)<\/li>\n<\/ul>\n<p>  <b>\u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044f\u0437\u044b\u043a\u043e\u043c \u0421\u0438.<\/b> \u041e\u043f\u044b\u0442\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0447\u0438\u0442\u0430\u0442\u044c.<\/p>\n<p>  \u041f\u0443\u0441\u0442\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0435 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u0430 unsigned:<\/p>\n<p>  unsigned A = 10;<\/p>\n<p>  unsigned B = 20;<\/p>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 (A \u2014 B &gt; 0). <\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u044f (A \u2014 B) \u0440\u0430\u0432\u0435\u043d 10u \u2014 20u = 0xFFFFFFF6u = 4294967286u.<\/p>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e 4294967286u \u0441 \u043d\u0443\u043b\u0451\u043c. \u041d\u043e\u043b\u044c \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u043c\u0443 \u0442\u0438\u043f\u0443, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (4294967286u &gt; 0u) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u043c.<\/p>\n<p>  \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (A \u2014 B &gt; 0) \u0431\u0443\u0434\u0435\u0442 \u043b\u043e\u0436\u043d\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 A == B.<\/p>\n<p>  <b>\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439?<\/b> \u042f \u043d\u0435 \u0437\u043d\u0430\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435\u0442. <\/p>\n<p>  \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0434\u0435\u043b\u043e \u043e\u0431\u0441\u0442\u043e\u0438\u0442 \u0442\u0430\u043a. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f &#8216;buf_len_save&#8217; \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 &#8216; &#8216;buf_off_save&#8217;. \u0422\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 &#8216;buf_off_save&#8217; \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0432 &#8216;buf_len_save&#8217;. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0438 \u043d\u0443\u0436\u043d\u0430 \u044d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430. \u0421\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 (buf_len_save &lt; buf_off_save), \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d.<\/p>\n<h3>\u041d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0431\u0435\u0434\u0435<\/h3>\n<p>  \u0415\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f. \u041d\u043e \u043d\u0438 \u043a \u043a\u0430\u043a\u0438\u043c \u043f\u043b\u043e\u0445\u0438\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f\u043c \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442. \u0412\u043e\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">int PEM_do_header(....) {   int i,j,o,klen;   ....   if (o)     o = EVP_DecryptUpdate(&amp;ctx,data,&amp;i,data,j);   if (o)     o = EVP_DecryptFinal_ex(&amp;ctx,&amp;(data[i]),&amp;j);   ....   j+=i;   if (!o)   {     PEMerr(PEM_F_PEM_DO_HEADER,PEM_R_BAD_DECRYPT);     return(0);   }   ....   }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V614 Potentially uninitialized variable &#8216;i&#8217; used. pem_lib.c 480<\/p>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f &#8216;i&#8217; \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0435\u0441\u043b\u0438 (o == false). \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043a &#8216;j&#8217; \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0447\u0442\u043e. \u042d\u0442\u043e \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a, \u0435\u0441\u043b\u0438 (o == false), \u0442\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043a\u0438, \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>  \u041a\u043e\u0434 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0435\u043d, \u043d\u043e \u043d\u0435 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u0435\u043d. \u041b\u0443\u0447\u0448\u0435 \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e &#8216;o&#8217;, \u0430 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c &#8216;i&#8217;:  <\/p>\n<pre><code class=\"cpp\">if (!o) {   PEMerr(PEM_F_PEM_DO_HEADER,PEM_R_BAD_DECRYPT);   return(0); } j+=i;<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0421\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">#define SSL_TLSEXT_ERR_ALERT_FATAL 2 int ssl3_accept(SSL *s) {   ....   if (ret != SSL_ERROR_NONE)   {     ssl3_send_alert(s,SSL3_AL_FATAL,al);       if (al != TLS1_AD_UNKNOWN_PSK_IDENTITY)          SSLerr(SSL_F_SSL3_ACCEPT,SSL_R_CLIENTHELLO_TLSEXT);           ret = SSL_TLSEXT_ERR_ALERT_FATAL;           ret= -1;     goto end;     }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V519 The &#8216;ret&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 376, 377. s3_srvr.c 377<\/p>\n<p>  \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 &#8216;ret&#8217; \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 2, \u0430 \u0437\u0430\u0442\u0435\u043c -1. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u043b\u0438\u0448\u043d\u0435\u0435 \u0438 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432 \u043a\u043e\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e.<\/p>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043b\u0443\u0447\u0430\u0439:  <\/p>\n<pre><code class=\"cpp\">int dtls1_retransmit_message(....) {   ....   \/* save current state *\/   saved_state.enc_write_ctx = s-&gt;enc_write_ctx;   saved_state.write_hash = s-&gt;write_hash;   saved_state.compress = s-&gt;compress;   saved_state.session = s-&gt;session;   saved_state.epoch = s-&gt;d1-&gt;w_epoch;   saved_state.epoch = s-&gt;d1-&gt;w_epoch;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V519 The &#8216;saved_state.epoch&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1277, 1278. d1_both.c 1278<\/p>\n<h3>\u041f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f<\/h3>\n<p>  \u0421\u0430\u043c\u044b\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043b\u044f\u043f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 (<a href=\"http:\/\/www.viva64.com\/ru\/examples\/V595\/\">\u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u043e\u043f\u044b\u0442\u0443<\/a>) \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d. \u041d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430. \u0427\u0430\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u043b\u0435\u0432\u044b\u043c. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u044d\u0442\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043a\u043e\u0434. \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043b\u044f\u043f\u044b \u0438 \u0432 OpenSSL:  <\/p>\n<pre><code class=\"cpp\">int SSL_shutdown(SSL *s) {   if (s-&gt;handshake_func == 0)   {     SSLerr(SSL_F_SSL_SHUTDOWN, SSL_R_UNINITIALIZED);     return -1;   }    if ((s != NULL) &amp;&amp; !SSL_in_init(s))     return(s-&gt;method-&gt;ssl_shutdown(s));   else     return(1);   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V595 The &#8216;s&#8217; pointer was utilized before it was verified against nullptr. Check lines: 1013, 1019. ssl_lib.c 1013<\/p>\n<p>  \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c &#8216;s&#8217; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f: (s-&gt;handshake_func == 0).<\/p>\n<p>  \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f: (s != NULL).<\/p>\n<p>  \u0414\u0440\u0443\u0433\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439:  <\/p>\n<pre><code class=\"cpp\">#define bn_wexpand(a,words) \\   (((words) &lt;= (a)-&gt;dmax)?(a):bn_expand2((a),(words)))  static int ubsec_dh_generate_key(DH *dh) {   ....   if(bn_wexpand(pub_key, dh-&gt;p-&gt;top) == NULL) goto err;   if(pub_key == NULL) goto err;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V595 The &#8216;pub_key&#8217; pointer was utilized before it was verified against nullptr. Check lines: 951, 952. e_ubsec.c 951<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u0443, \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441\u044b. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">if((((dh-&gt;p-&gt;top) &lt;= (pub_key)-&gt;dmax)?     (pub_key):bn_expand2((pub_key),     (dh-&gt;p-&gt;top))) == ((void *)0)) goto err; if(pub_key == ((void *)0)) goto err;<\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c &#8216;pub_key&#8217;.<\/p>\n<p>  \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u043d \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f: (pub_key)-&gt;dmax.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u043d\u0443\u043b\u044e: (pub_key == ((void *)0)).<\/p>\n<h3>\u041b\u0438\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438<\/h3>\n<p>  \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430, \u0433\u0434\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430\u0436\u0434\u044b \u0441 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u042f \u0434\u0443\u043c\u0430\u044e, \u044d\u0442\u043e \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0438\u0448\u043d\u044f\u044f. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c.<\/p>\n<p>  <b>\u041b\u0438\u0448\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 N1<\/b>   <\/p>\n<pre><code class=\"cpp\">int ASN1_PRINTABLE_type(const unsigned char *s, int len) {   ....   if (!(  ((c &gt;= 'a') &amp;&amp; (c &lt;= 'z')) ||       ((c &gt;= 'A') &amp;&amp; (c &lt;= 'Z')) ||       (c == ' ') ||                       &lt;&lt;&lt;&lt;====       ((c &gt;= '0') &amp;&amp; (c &lt;= '9')) ||       (c == ' ') || (c == '\\'') ||        &lt;&lt;&lt;&lt;====       (c == '(') || (c == ')') ||       (c == '+') || (c == ',') ||       (c == '-') || (c == '.') ||       (c == '\/') || (c == ':') ||       (c == '=') || (c == '?')))       ia5=1;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V501 There are identical sub-expressions &#8216;(c == &#8216; &#8216;)&#8217; to the left and to the right of the &#8216;||&#8217; operator. a_print.c 76<\/p>\n<p>  \u042f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e &quot;&lt;&lt;&lt;&lt;====&quot;. \u041f\u0440\u043e \u044d\u0442\u0443 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u044f <a href=\"http:\/\/www.viva64.com\/ru\/b\/0183\/\">\u043f\u0438\u0441\u0430\u043b<\/a> \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u043e \u043e\u043d\u0430 \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430. \u0422\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430.<\/p>\n<p>  <b>\u041b\u0438\u0448\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 N2, N3<\/b>   <\/p>\n<pre><code class=\"cpp\">int ssl3_read_bytes(SSL *s, int type,   unsigned char *buf, int len, int peek) {   ....   if ((type &amp;&amp; (type != SSL3_RT_APPLICATION_DATA) &amp;&amp;        (type != SSL3_RT_HANDSHAKE) &amp;&amp; type) ||       (peek &amp;&amp; (type != SSL3_RT_APPLICATION_DATA)))   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V501 There are identical sub-expressions &#8216;type&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. s3_pkt.c 952<\/p>\n<p>  \u0414\u0432\u0430 \u0440\u0430\u0437\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f &#8216;type&#8217; \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0430\u0439\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043c \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u043b\u0438\u0448\u043d\u0435\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435: d1_pkt.c 760.<\/p>\n<h3>\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a<\/h3>\n<p>  \u041d\u0435\u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442. \u041e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u043e\u0448\u0438\u0431\u0438\u0442\u044c\u0441\u044f. \u0412 OpenSSL \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0442\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430.<\/p>\n<p>  <b>\u041f\u0435\u0440\u0432\u043e\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0435 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e<\/b><\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 BIO_write:<\/p>\n<ul>\n<li>BIO_write(bp,\u00abError in encoding\\n\u00bb,18)<\/li>\n<li>BIO_write(bp,&quot;\\n&quot;,1)<\/li>\n<li>BIO_write(bp,&quot;:&quot;,1)<\/li>\n<li>BIO_write(bp,&quot;:BAD OBJECT&quot;,11)<\/li>\n<li>BIO_write(bp,\u00abBad boolean\\n\u00bb,12)<\/li>\n<\/ul>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u0434\u0430\u0451\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c, \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">static int asn1_parse2(....) {   ....   if (BIO_write(bp,&quot;BAD ENUMERATED&quot;,11) &lt;= 0)     goto end;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V666 Consider inspecting third argument of the function &#8216;BIO_write&#8217;. It is possible that the value does not correspond with the length of a string which was passed with the second argument. asn1_par.c 378<\/p>\n<p>  \u0414\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u00abBAD ENUMERATED\u00bb \u043d\u0435 11, \u0430 14 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. <\/p>\n<p>  <b>\u0412\u0442\u043e\u0440\u043e\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0435 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e<\/b>  <\/p>\n<pre><code class=\"cpp\">static int www_body(char *hostname, int s, unsigned char *context) {   ....   if ( ((www == 1) &amp;&amp; (strncmp(&quot;GET &quot;,buf,4) == 0)) ||        ((www == 2) &amp;&amp; (strncmp(&quot;GET \/stats &quot;,buf,10) == 0)))   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V666 Consider inspecting third argument of the function &#8216;strncmp&#8217;. It is possible that the value does not correspond with the length of a string which was passed with the first argument. s_server.c 2703<\/p>\n<p>  \u0414\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u00abGET \/stats \u00bb \u043d\u0435 10, \u0430 11 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041d\u0435 \u0443\u0447\u0442\u0451\u043d \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b. \u041c\u0435\u043b\u043a\u0438\u0439 \u043d\u0435\u0434\u043e\u0447\u0451\u0442, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435\u0434\u043e\u0447\u0451\u0442.<\/p>\n<p>  <b>\u0422\u0440\u0435\u0442\u044c\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0435 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e<\/b>  <\/p>\n<pre><code class=\"cpp\">static int asn1_cb(const char *elem, int len, void *bitstr) {   ....   if (!strncmp(vstart, &quot;ASCII&quot;, 5))     arg-&gt;format = ASN1_GEN_FORMAT_ASCII;   else if (!strncmp(vstart, &quot;UTF8&quot;, 4))     arg-&gt;format = ASN1_GEN_FORMAT_UTF8;   else if (!strncmp(vstart, &quot;HEX&quot;, 3))     arg-&gt;format = ASN1_GEN_FORMAT_HEX;   else if (!strncmp(vstart, &quot;BITLIST&quot;, 3))     arg-&gt;format = ASN1_GEN_FORMAT_BITLIST;   else   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V666 Consider inspecting third argument of the function &#8216;strncmp&#8217;. It is possible that the value does not correspond with the length of a string which was passed with the second argument. asn1_gen.c 371<\/p>\n<p>  \u0411\u0435\u0434\u0430 \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c:   <\/p>\n<pre><code class=\"cpp\">if (!strncmp(vstart, &quot;BITLIST&quot;, 3))<\/code><\/pre>\n<p>  \u0414\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u00abBITLIST\u00bb \u0440\u0430\u0432\u043d\u0430 7 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c.<\/p>\n<p>  \u041e\u0442\u0432\u043b\u0435\u043a\u0443\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e. \u0423 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u043c\u043e\u0433 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a PVS-Studio \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u043e\u044f\u0441\u043d\u044e. \u041e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u044b\u0437\u043e\u0432\u0430\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e strncmp(), \u0438 \u0441\u0442\u0440\u043e\u0438\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<ul>\n<li>vstart, \u00abASCII\u00bb, 5<\/li>\n<li>vstart, \u00abUTF8\u00bb, 4<\/li>\n<li>vstart, \u00abHEX\u00bb, 3<\/li>\n<li>vstart, \u00abBITLIST\u00bb, 3<\/li>\n<\/ul>\n<p>\u0423 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0438 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0447\u0438\u0441\u043b\u043e\u043c. \u0417\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0437\u0430\u0434\u0430\u0451\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438. \u0412 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0438 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434\u043e \u0432\u044b\u0434\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 <a href=\"http:\/\/www.viva64.com\/ru\/d\/0291\/\">V666<\/a>.<\/p>\n<h3>\u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e<\/h3>\n<p>  \u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f &quot;%08lX&quot;. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c &quot;%p&quot;.  <\/p>\n<pre><code class=\"cpp\">typedef struct mem_st {   void *addr;   .... } MEM;  static void print_leak_doall_arg(const MEM *m, MEM_LEAK *l) {   ....   BIO_snprintf(bufp, BUF_REMAIN, &quot;number=%d, address=%08lX\\n&quot;,                m-&gt;num,(unsigned long)m-&gt;addr);   .... }<\/code><\/pre>\n<p>  \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 (unsigned long). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u043c\u043e\u043b\u0447\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b. <\/p>\n<p>  PVS-Studio \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u044d\u0442\u043e\u0442 \u043d\u0435\u0434\u043e\u0447\u0451\u0442 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0415\u043c\u0443 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u044f\u0432\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0442\u0438\u043f\u0443 (unsigned long). \u042d\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0441\u044f \u0432 \u0442\u0438\u043f &#8216;long&#8217;. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a \u043d\u0435\u043b\u044c\u0437\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0432 Win64.<\/p>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">BIO_snprintf(bufp, BUF_REMAIN, &quot;number=%d, address=%p\\n&quot;,   m-&gt;num, m-&gt;addr);<\/code><\/pre>\n<p>  \u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f:<\/p>\n<ul>\n<li>mem_dbg.c 699<\/li>\n<li>bio_cb.c 78<\/li>\n<li>asn1_lib.c 467<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0425\u043e\u0442\u044f <a href=\"http:\/\/www.viva64.com\/ru\/t\/0074\/\">\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b<\/a> \u043d\u0435 \u043d\u0430\u0448\u043b\u0438 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443, \u0438 \u043e\u043d\u0430 \u043f\u0440\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e, \u044f \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0437\u044b\u0432\u0430\u044e \u0432\u0441\u0435\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043d\u0430\u0434\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0435\u0440\u0435\u0431\u0440\u044f\u043d\u0443\u044e \u043f\u0443\u043b\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u0448\u0438\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u0431\u0430\u0432\u0438\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043e\u0442 \u043e\u0448\u0438\u0431\u043e\u043a. \u041d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435: \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u044b, <a href=\"http:\/\/www.viva64.com\/ru\/b\/0248\/\">\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437<\/a>, \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0443 \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a \u0438 \u0433\u043b\u0443\u043f\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u044d\u0442\u0438\u043c \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0434\u0435\u043b\u0430, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043d\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043d\u0430\u0448 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 <a href=\"http:\/\/www.viva64.com\/ru\/pvs-studio\/\">PVS-Studio<\/a>.<\/p>\n<h2>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c<\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Andrey Karpov. <a href=\"http:\/\/www.viva64.com\/en\/b\/0250\/\">A Boring Article About a Check of the OpenSSL Project<\/a>.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441?<\/b><\/p>\n<div class=\"spoiler_text\">\u0427\u0430\u0441\u0442\u043e \u043a \u043d\u0430\u0448\u0438\u043c \u0441\u0442\u0430\u0442\u044c\u044f\u043c \u0437\u0430\u0434\u0430\u044e\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043d\u0438\u0445 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0437\u0434\u0435\u0441\u044c: <a href=\"http:\/\/www.viva64.com\/ru\/a\/0085\/\">\u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e PVS-Studio \u0438 CppCat, \u0432\u0435\u0440\u0441\u0438\u044f 2014<\/a>. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c.  <\/div>\n<\/div>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/pvs-studio\/blog\/219547\/\"> http:\/\/habrahabr.ru\/company\/pvs-studio\/blog\/219547\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ae1\/60e\/045\/ae160e045cacbe1490464b4d23438b2b.png\" alt=\"PVS-Studio and OpenSSL\" align=\"left\"\/><br \/>  \u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0432 OpenSSL \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u043d\u0438\u0432\u044b\u0439. \u042f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e PVS-Studio \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u043d\u0430\u0439\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u044d\u0442\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043d\u0435\u0442 \u043f\u043e\u0432\u043e\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043b\u0438\u0431\u043e \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u0440\u043e OpenSSL. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u043d\u0438 \u0438 \u0442\u0430\u043a \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u043b\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0448\u043a\u0432\u0430\u043b \u043f\u0438\u0441\u0435\u043c \u0441 \u043f\u0440\u043e\u0441\u044c\u0431\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043c\u043e\u0436\u0435\u0442 \u043b\u0438 PVS-Studio \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443. \u042f \u0441\u0434\u0430\u043b\u0441\u044f \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-219547","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/219547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=219547"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/219547\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=219547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=219547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=219547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}