From patchwork Fri Mar 30 00:16:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuli Khodorkovskiy X-Patchwork-Id: 10316693 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1AF3F6055B for ; Fri, 30 Mar 2018 00:22:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EF13D2A45E for ; Fri, 30 Mar 2018 00:22:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E1C2F2A470; Fri, 30 Mar 2018 00:22:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from uhil19pa09.eemsg.mail.mil (uhil19pa09.eemsg.mail.mil [214.24.21.82]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DA6C82A45E for ; Fri, 30 Mar 2018 00:22:22 +0000 (UTC) Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.3]) by uhil19pa09.eemsg.mail.mil with ESMTP/TLS/AES256-SHA; 30 Mar 2018 00:22:21 +0000 X-IronPort-AV: E=Sophos;i="5.48,378,1517875200"; d="scan'208";a="11411504" IronPort-PHdr: =?us-ascii?q?9a23=3AoFgGTxSTwKtBfcxjRZe0BmqmI9psv+yvbD5Q0Y?= =?us-ascii?q?Iujvd0So/mwa6/YhSEt8tkgFKBZ4jH8fUM07OQ7/i7HzRYqb+681k6OKRWUB?= =?us-ascii?q?EEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAA?= =?us-ascii?q?jwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba98IRmssQndqtQdjJd/JKo21h?= =?us-ascii?q?bHuGZDdf5MxWNvK1KTnhL86dm18ZV+7SleuO8v+tBZX6nicKs2UbJXDDI9M2?= =?us-ascii?q?Ao/8LrrgXMTRGO5nQHTGoblAdDDhXf4xH7WpfxtTb6tvZ41SKHM8D6Uaw4VD?= =?us-ascii?q?K/5KhlUh/ojDoMOSA//m/Zl8d8iLtXrA+9qxB6xYPffYObO+dkfq7Ffd0UW2?= =?us-ascii?q?RPUMVWWSNDDIOycpMPAugcMetWsYb9vEADoQeiCQS2GO/i0CNEimPw0KYn0+?= =?us-ascii?q?ohCwbG3Ak4Et0MrXTUqNT1P7oXX+C1y6nH0DLDb+lV2Tf69ojIaRMhofCMXL?= =?us-ascii?q?ltdsfQyUovFwPCjlqNrozoJDyV1uEXvGia6+psT/6gi2kiqwxopDWk28Qiip?= =?us-ascii?q?HRi44IxV3J+j91zYYoKdGiVkJ2bsCoHIFNuy2CNYZ7Q9kuT3x0tCom0LEKpI?= =?us-ascii?q?O3cDQQxJg62RLSa/qKeJWS7B35TuaeOzJ4iWpgeLK4mhm971Ctyvb5VsmoyF?= =?us-ascii?q?ZKqTdFksXUunANyRPT7s+HR+Nh/ki7wzaP1h3T6vpeLUAolavUN54hwrkqmp?= =?us-ascii?q?oVrUvDBTP5lF/zjK+XckUo4umo6+L5bbX6vpKQKoB5hw7kPqkuh8CzG/o0Pw?= =?us-ascii?q?cQU2SB5OiwzLjj8lf4QLVOgP02iK7ZsJXCKMQAuKG5Bw5V0oA+6xewFjupy9?= =?us-ascii?q?MYnWQBLF1ZZh2HlJPkO03OIf/kDfe/hE6gkDFwx//cJLHhDZLNLmbbnLf7Yb?= =?us-ascii?q?l981JcyBY0zd1H5ZJUDbcBL+jvWk/xrtPYCAQ0Mw6zw+bhDdVyzJgeWX6RDa?= =?us-ascii?q?+DK6Peq1iI5vggI+OUfo8apC79K+Q55/7plXI5m10dcrO10psUc3C4GfJmI0?= =?us-ascii?q?SHYXf3jNcBFXoKvwUlQ+z3jl2CTSNTa2y1X6Im6TExEJimApvbRoCxnLyB2z?= =?us-ascii?q?+2H5NXZmBCD1CDD23oep6KW/gSdS2SJdVhnSYcVbi7TI8h1w+huxPmy7Z9Ke?= =?us-ascii?q?rU4CIYv4r51Ndp/+3TiQ0y9TtsAsuAz26NSmZ0nmUURzMrx61/v1Jyyk2C0a?= =?us-ascii?q?l5hPxYE8Zf5/VXXQcmLZTc1fB1C8juWgLdedeEUEupQsm8DjErVd8+39gOY0?= =?us-ascii?q?NhFNq4lRDDwzCmA7kLmLyXHJY06L7T32DtJ8ZhzHbLzKkgjlghQstJLmCmg6?= =?us-ascii?q?p/+xHSB47PiUmZkbyldb4f3C7M6meM03CCvEdGXw5sSa/FR2wQZlPKrdTl4U?= =?us-ascii?q?PPV6GhCaw9PQtbyM6CMbBHasXzglVcRffjI8zeY2arlGisGxmE3LSMbJDle2?= =?us-ascii?q?8FxiXSFFAEkxwP/XaBLQU+CD2hrHjYDDNyFFLveFjh8exmqHO6V0M01A+Lb1?= =?us-ascii?q?Z727qy4B4ViuSWS+kP0bIcpCchtzJ0EU6+393MCNqAoBdhcb5fYdwn41dH0n?= =?us-ascii?q?/ZuxZ6Ppy6IKBonkQefBhvv0PyyxV3DZ1NntI3o3MwzQp9N7iY3UhbeDyE2J?= =?us-ascii?q?D8ILrXKnP9/Bq3ca7Zxkne0MqK+qcI8Pk4sUjssxyyG0ot9nVm3MNZ032C6Z?= =?us-ascii?q?XWFAASS47+Ul4r9xhmoLHXejI9543O1X1rKqm0riTP28kvBOsixBeges1QMK?= =?us-ascii?q?WeGA/0DcIaG9CkKPY2lFixchIEIOdS+bY6Psy8c/uGxLCkPPx7nD+9k2RI/p?= =?us-ascii?q?p93VmR9yp5UOLI2IwFw/6A1AudSzj8lEuhstzwmY1cYzESH26/ySz6C45Kfa?= =?us-ascii?q?B9Z5gECX2pI8GtwdV+nZHtUWZC9FG/H1MGxNOpeR2KYlzj3A1fyVgXoXu9mS?= =?us-ascii?q?ei0zN0kzYprqyQ3CHVx+TidRwHNXRRRGlll1vsJpK0j98CVkiycwcpjAel5V?= =?us-ascii?q?r9x6VDoKR/LnLTQVtRcyjtMW5iVqqwtryfY89A854oqj1XUOW6YVCbVrH9uA?= =?us-ascii?q?EW0yX9EGtC3Do7bS2luo3lnxxmj2KQNGxzrH3decF02xjf/sDTRflf3zcdXy?= =?us-ascii?q?l4lCXYBkOmM9mu59WUmI/JsvqiWGK5Sp1TbS7rwJuDtCSl421qGgayn/Otld?= =?us-ascii?q?3hCgg61zH018VwWSXPthb8bZHh176mPuJ/YkloGFj85tJiGo5kj4swgI8f2W?= =?us-ascii?q?AAiZWT4XoIj33zPM5G2aLlcnUNXyULz8TO4AjixU1jNG6GyJz3VnWa2MthaM?= =?us-ascii?q?e1bnkQ2i0j88BAEL2U46BcnStpvlq4qhrcYeZ7njgA0vYu9ngajPwJuAY3yC?= =?us-ascii?q?WSHKwSF1FCPSPwjxSI88y+rKJPaWa3a7ewyU5+kMu9A7GDvgFdWG/1epk4Ei?= =?us-ascii?q?929Ml/N0jM0HLr4IH+ZNbQdc4TtgGTkxrYgehaMpQxluYNhSpiIm/9s2MqxP?= =?us-ascii?q?M8jRx0x566pJKHK2Jv/K2nHhFYKif5Z8QJ+jHilaxehNqZ35izHpV9HTUGRJ?= =?us-ascii?q?7oQuisEDIWq/vnKxqOHycmpXqAH7rQAxOf6Fx6oH3VC5CkKWubJH8HwtV+XB?= =?us-ascii?q?OdPlBQgBgIXDUmmZ40Dg6qxNb/f0hk/TAe/Fj4qgdLyuJzLBTwSHvQpAKyZj?= =?us-ascii?q?czUpifIwJc7hte6EfNLcye8uVzEjle/p27tgONMnSbah9GDWEIQEyEHEzjPr?= =?us-ascii?q?ev5dnG6eeYAPaxL/rUbrWKs+BeUO2IxZ232It84zmMLtmPPmVlD/AjwkpMQ2?= =?us-ascii?q?t2FNrfmzUOVywXkDnAb8+Fqxii5CJ7tMe/8O7kWAj3/4uAF6NSMclz+xCxma?= =?us-ascii?q?qMLPWfiCF9KTZZzZMM2WTIxKIE3FEMly5ibSKtHqoEtS7MSqLQh6BWAgUHZC?= =?us-ascii?q?JzLstI8rk80hNDOMHBltP1zbl4jvgvB1dCT1zhldmjZdYWLGGlKFPHGEGLOa?= =?us-ascii?q?ydKj3KzMH3ZqW8RKZNg+pKrBKwuCyUE0n5MjSEjTnpWAilMftQgyGDIBxepI?= =?us-ascii?q?a9fw53BmjsVt3mdAO0PcRwjT0u37I0gHbKOnQdMTh4aExNqbKR4TlfgvVlFG?= =?us-ascii?q?xL9mBlIvWcmyaF8+nYLY4bsedsAiRxje5a+nM6yrpL4yFCX/N1gizSocBto1?= =?us-ascii?q?y9juaPzT9nXwZUpTZQmIKHp0NiNrvF9pNYQ3bL4AoN7XmMCxQNv9ZlCN3vuq?= =?us-ascii?q?BIytjIkKLzKStC/MzP8MsZBsjUNNiHP2Q7PRruAj7UAxMPTSS3OmHHm0xdjP?= =?us-ascii?q?aS+2WWrpk6rpjjhoEDSrpcVFw7GPMVFFhlHMACIJdwWzMrj6SXjMgW6nqitB?= =?us-ascii?q?PRXtlVvojbVvKOBvXiMDCZgqdeaBsM2r74LoMTNpbn20N4bFl6h4fKG0vKUd?= =?us-ascii?q?BLvCJhchc+oF9R/3hmUm0zx0XlZxu34HANDv67gAQ5ihFibuQt7zrj+FY3Jk?= =?us-ascii?q?DXqys3nkkxgc/lji6RcTLrKqe/Q51WATLut0ctKpP7Xxp1bQqqkEN5MzfEQb?= =?us-ascii?q?RRgKZ+emBviQ/RooFAFuBGTa1DehMQwuuXZ/ow21RGtiqn3VNH5ffCCZZ6iQ?= =?us-ascii?q?Qla4Csr3Nd1AJ4d9M6P7bQJLBOzllenaKBoDOn1v0rwA8fO0YM8HmeeCgWt0?= =?us-ascii?q?wULrMmPTan/vRw6QyenDtOYGwMV/0wov108EM8OuOAwjnv075FN0C9LeufL7?= =?us-ascii?q?mWu2LYj86HXksw1l8Ul0lC5bV2ytksc06VV0Ap0buQGA8EOtbFKQFQc8Vd7m?= =?us-ascii?q?PTfTqUveXL3511I523Fvr0Qu+WqKYUnkWkER41H4QN68QBGYWs0EHYLMr8Mb?= =?us-ascii?q?EFyBUs6x7wK1mfCvRGZg6Lmi8do86j1J93wZVdJjYFDGpnNSW356rYqREyj/?= =?us-ascii?q?qGXNY2ZHAaXo0eOX8tQ8K6mjRWv3JZADm5z+IV0g6C4CHgpi7IFjnzc8JjZO?= =?us-ascii?q?uIZRNrENy54isw866thFHN75reOX/1Nc55utDV8+Mbp4yLC/ROTblyq03cgZ?= =?us-ascii?q?VXR2S2U27TFt64P5fwa5QtbdzwDna1TFm/hikoQMjvJ9mtL7KHgQfySYZTqo?= =?us-ascii?q?mb0ygpNdWhGTEGBxdwu+YD6bpmZQ0FYpo0fR7otwM6N6ykOAmWy8igTXyxJD?= =?us-ascii?q?VRVPRQ0eK6Z7lLwCU2de+61GEsTpckwOmr6UQNXo0FjgnCxfa/YIlTSTLzFW?= =?us-ascii?q?ZHewXIviU0jHRhNvwozech3hzItVgcMzaEdOxtaWxEsNE8BU+cIXpsEGo4Qk?= =?us-ascii?q?WQjYzd7Q6wx7oS5TdSn85I0e1Zt3jzppHebCiwV6yrqJXVtisgYsIlo6BqMI?= =?us-ascii?q?zsPNWJu43EkjzYVpnQvRWPUDSmGPpChthQPCVYTeFNmW4/I8wGupRO6VYwVs?= =?us-ascii?q?c4KLxCE6ctqaqsaTV4CS4SyjIZWJ6b3DAYhOezxafanA+KcJs+KBwErIlCgt?= =?us-ascii?q?wFXiFseCMeuamjW5/Vl2KfS2gLIQYT7RhX6w4akI9/YPzl6pLSTJBQ0z5Wv+?= =?us-ascii?q?50UizTG5lp8Vv7Vn+ZgVzmR/WkjeOpwRhSzfL339kcQB5wF05dx+NMmUspLL?= =?us-ascii?q?F4MK4Qv4HQvj+Pb0P6s3rnyPG6K1lJ1c3Ua1r4AZLZtWr7Vy0R4mEUSZNKyH?= =?us-ascii?q?7ED5gSlRR2aLozrlVWPI+mYlr+5yAjx4lxH7m3T9qryEwhrXkbXCqlDsROC/?= =?us-ascii?q?l+sF3JXD1qfYqrpI/iO5VITW9a4IedpEtBkEVxLy65zoJRK8NK4jESRzVAvC?= =?us-ascii?q?uSvMCsR81Zxc95EYIDLs15u3jjBKNOIIKRrGEuurzz1n/Z/CgxsEunyzquGq?= =?us-ascii?q?+3VeZZ8nYCFQUuImSRtlMgD/Aw8mvI9FDCrEx09f9BBreTlUVxvCp9HpdWCz?= =?us-ascii?q?lS23CqM0h/QXtbv+hUM6nab8tcQ/wuahC1IBw+CeQq30qX8kFohX35eTB9th?= =?us-ascii?q?NG+yDBWAk5TTMVjanwlj0esM6nJSQXS5ZPbTU/cSjJNR6UmSdKsxlBcU1qXY?= =?us-ascii?q?4WAspd8bEBwYRU5tbCSVqrKSwdRBxiLR443uBCmk5fq0iYYifdDReydfnTrB?= =?us-ascii?q?J3e9uRrNSzI/T95gtHjZnnsO8g/aUZW3KmgRGtQczZr4Lkqt2KrFWBe7nlPO?= =?us-ascii?q?CnfH/BSCTMjQqqirc6DpnK+CzTPxRHK5Vgznoke5fhA3bRPRtaP6IbO1ZbVa?= =?us-ascii?q?diZNVEuO9afchkeL0N+aB3GBKKXRbvGJGrrPlaL1bcWTXeID+H8uyku47T6q?= =?us-ascii?q?bdSef4bMyW23nHW753Pot96TTjGbfly4le+kTs2vdq60x1V0PLMzybo9TnPQ?= =?us-ascii?q?ML49Oudk38sZ01BTnWGot/kGLxxkFccMoaWyuq8JADxZNY7nbwTPh00kn1sO?= =?us-ascii?q?1c7blr85I346xzycepOajSNelasVV5DRSOAQVq7JotCnBlR29Neu8RNOvRfa?= =?us-ascii?q?MBgMDoquD4C6sX6BmP9OxCc9fHJkbBms6kCjGHUhFEmQgMqDEAIgubzf6FlL?= =?us-ascii?q?d+Sdy5qujhxkIt/1++IwYaw7934YeL5LGIpPPXbhvW1rUEQbTlRsLtobQqp0?= =?us-ascii?q?OS5OcrmKQIemNrfw2tCPIdWdIFxmf80aAqyjohE8fYH7Ll+PNOTHw5kSz9lJ?= =?us-ascii?q?B6BVUZAOsUHaCM/YRcgGg3h/DZOscRcqBYlWaFDQSkHaMayX639yuXJ3Fogh?= =?us-ascii?q?PP0xH1Wm6z6UH5rC9mTivWztfjlEVVWqOxBUhMQyqjIVV4vy+XPAr0qNr3vr?= =?us-ascii?q?w47EA3M2P+rt2CiHCsOKhJEM3jOtOTPTM4pFUNjJ0+Xtavw5wUGcKhINcN93?= =?us-ascii?q?FzduDR62Kwky5PuahHhYve4t2N+vrNAHmgi7aXpKmKxD9F1Hc3p0w/6sqnNv?= =?us-ascii?q?HU/dKGWfOo13weTy1noQvOQwa1qqDHr1ATIUGLyF3EmJAWMdFZ03g40Vvm5O?= =?us-ascii?q?s6TNIo6gpeEofAZ/UfpTH8Izb02UyQY84rWSme3TpXGUj1EVpiFKg/xm3wps?= =?us-ascii?q?TJmmnU+1EyQYlwbUPnjwRtD4okMUIt9EQXwi0bHAgCcx+bFq+nBVjlLYYfUU?= =?us-ascii?q?gDaAiH06a6eqgtwE1z2amj5OnNYuxgH6ANLOpSjhaSnFhHHZIbqaIeT6x6e1?= =?us-ascii?q?9B867XoQ/uC5P5UPjilHowM+C1Q89B/MAdqXQi+Aa+SAC65ZdF8bkblIiCdr?= =?us-ascii?q?RYbpjUoMB880Bn6CYTeSxPmhdwkwi0XvwbpODn5tjbsYSn6vyyVKkzW+oX9w?= =?us-ascii?q?I4B2Nkj5v/mFoju83Y1/9ASo3JjoTy6AVNI3mMuIbG3BlzN/EDK4eqfLl68X?= =?us-ascii?q?UIOTQeJnwJPdqMaPk8+DVhMDPN6FxeGskMf88XPNLRmQBIjU3kQL5T+dbAGl?= =?us-ascii?q?+DEot9as8m4Wz2yDAz7Js9Xf3t6DCzJZ/F6VFCIelPjCJ2lNLNvOIV2+bdCD?= =?us-ascii?q?AL4XmFbBh42iGCy56NC/b25+mD1NHUV1cbHiErUoZdJTyC+RekRuq0j5jpTA?= =?us-ascii?q?KU6tHpj5I6aU2QR2a9nKIbvaZQCeRAkDn03iBCFoDpgPKYq9us6HVNuV1BC4?= =?us-ascii?q?tz6QDFF7hePpV8IhT0jM6rRlJzBiHnYsHbagIuuPaKxucL++h+NVXxZYEVIh?= =?us-ascii?q?IA0L/752BaTg1wR77qpFqZW/weZMd+QvPesn9V8Z5gK7MIPFWFq5zqqjBIqV?= =?us-ascii?q?4oDw8tbL89tSdadk7InA1UR6n4orgAhRUAUdRho09DBXqwOH4i5zrATalVia?= =?us-ascii?q?iRCP8W8jWUVaEOUV9nMiB5QxOzxppufaGlnfZZvWNahil9uuQl0yR6RBugvi?= =?us-ascii?q?3hv7kC1iwm+LGkrzgBonhFTuKCkyfUF1VM0ukFgb0bC3b45ly2eGMDY5fq4L?= =?us-ascii?q?l7OcTg8pEs42w4YRUnZSIGR+qhCyb0j6OGGYGPtdVchBmWuMrQcbCzNy8SNq?= =?us-ascii?q?8myRLiQXh93RLSnBFy8GsEWj+g9sMrJJ2hOcY5wSqlAWbbe0gI4qNIqMv+q0?= =?us-ascii?q?UGTeo3aVNkxWVszNKHRikTS8DVHGY1lAckY31ecJ1f8R8aC7UogjGQs6hI5g?= =?us-ascii?q?EUejbUHZi79YTLmMfI2GU9Tc10yW7Moa2FnJwq2mV/m9xo9i6OpGgSd+vAXs?= =?us-ascii?q?9rBnj8yJxSyfT6Z/q3qeAHVIpmx6i9UP8YLMas53G62JN0VU+53r4eBUa2MP?= =?us-ascii?q?cfxrfHVCeoUWmYWeWNc2iRkDc1K0ry5RizLl0rc8dHtE49PfHEhp5bjQHhVq?= =?us-ascii?q?l0RiqIr1/B0GMjKf8adx4xuIq/fgwFVvIeZ+idJegox/0zE0UMb37PHSRoD+?= =?us-ascii?q?+2sFitnJV0Onl65kX6e+vt+Bj8MNSOAhkEDZLarplp9Py4XG2BOnhgwwZpMU?= =?us-ascii?q?lp8effC1QxtuhBc5aendjQm8530egbePdxKSc9oMIcmpp/6YmI18eHaRPRzp?= =?us-ascii?q?P1JdHPuPiYAubfwl8sem5AV7oWfwL16589Pt4jVL3ZBaFZsggEBagmXJwhMH?= =?us-ascii?q?/89Lp6LAN2bgHcZbe5j9L0pu2VfJtUpn7X7lU2LCvGvR0M1OC0HkRHaMWxin?= =?us-ascii?q?HzJo0gbi5QpN1qTB19Fc1AHN1TgRCgBsulhaW6w/yx/E99oewNr7HzC+GCgM?= =?us-ascii?q?W634J9WLBV4EWKOHDaA6w90Rcttfi7nvqVisq5MsjlY95REbEjGDSXY6LaHo?= =?us-ascii?q?i5NjOFM979fEgD6bOHzbZlSUrANh3CcYDdnxWNbKsi7Eg+0YM+eePSyHoo7r?= =?us-ascii?q?WIvbm6a2Jao3K7pGWSfNtE7VPMDPDDRR8cV/ef8WhkEKFWJYv5/esDK5ojlf?= =?us-ascii?q?CT5gBy6HJJ186I?= X-IPAS-Result: =?us-ascii?q?A2D9AgDcgb1a/wHyM5BdHgEGDIMXKANWeiiMOowkgwOSU?= =?us-ascii?q?YF0ERiJCCE0GAECAQEBAQEBAgFqKII4JIJKAwMBAiQZARseAgECCQEBBRAzC?= =?us-ascii?q?AMBHQIRAQUBHBkFgzGBPgEDCA0Dojc8jG4WBQEXgm8FfWSBaQoZJg1VV4ImA?= =?us-ascii?q?gYSh0yBVD+GX4dUIAKMUIo3LAiLMIJxC4cthQUriSSGBAYCCQcPIYEEHDiBU?= =?us-ascii?q?nAVa4ISghQMF442T40DLIIYAQE?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 30 Mar 2018 00:22:14 +0000 Received: from prometheus.infosec.tycho.ncsc.mil (prometheus [192.168.25.40]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id w2U0M1Rq030482; Thu, 29 Mar 2018 20:22:05 -0400 Received: from tarius.tycho.ncsc.mil (tarius.infosec.tycho.ncsc.mil [144.51.242.1]) by prometheus.infosec.tycho.ncsc.mil (8.15.2/8.15.2) with ESMTP id w2U0HcT3053611 for ; Thu, 29 Mar 2018 20:17:38 -0400 Received: from goalie.tycho.ncsc.mil (goalie [144.51.242.250]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id w2U0Hcw7029205 for ; Thu, 29 Mar 2018 20:17:42 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1DdAABogb1alykaGNZdHgEGDIMXKFl6K?= =?us-ascii?q?Iw6jCSDA5JRgXoLhQQChBohNBgBAgEBAQEBAQITAQEBAQEGGAaFfQMDJxkBGx4?= =?us-ascii?q?DDAYQOyECEQEFARwZgzaBPgEDCA0DojU8jG4WBQEXgm8FfWSBaQoZJg1VV4ImA?= =?us-ascii?q?gYSh0yBVD+GX4dUIAKMUIo3LAiLMIJxC4cthQUriSSGBAYCCQcPIYEEHIIKcBV?= =?us-ascii?q?rghKCFAwOCRGOJU+NAyyCGAEB?= X-IPAS-Result: =?us-ascii?q?A1DdAABogb1alykaGNZdHgEGDIMXKFl6KIw6jCSDA5JRgXo?= =?us-ascii?q?LhQQChBohNBgBAgEBAQEBAQITAQEBAQEGGAaFfQMDJxkBGx4DDAYQOyECEQEFA?= =?us-ascii?q?RwZgzaBPgEDCA0DojU8jG4WBQEXgm8FfWSBaQoZJg1VV4ImAgYSh0yBVD+GX4d?= =?us-ascii?q?UIAKMUIo3LAiLMIJxC4cthQUriSSGBAYCCQcPIYEEHIIKcBVrghKCFAwOCRGOJ?= =?us-ascii?q?U+NAyyCGAEB?= X-IronPort-AV: E=Sophos;i="5.48,378,1517893200"; d="scan'208";a="239210" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.34]) by goalie.tycho.ncsc.mil with ESMTP; 29 Mar 2018 20:17:38 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3ANKTwghXT1d7Y/KkSLI4EAfXWfxfV8LGtZVwlr6?= =?us-ascii?q?E/grcLSJyIuqrYYxWOt8tkgFKBZ4jH8fUM07OQ7/i7HzRYqb+681k6OKRWUB?= =?us-ascii?q?EEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAA?= =?us-ascii?q?jwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba98IRmssQndqtQdjJd/JKo21h?= =?us-ascii?q?bHuGZDdf5MxWNvK1KTnhL86dm18ZV+7SleuO8v+tBZX6nicKs2UbJXDDI9M2?= =?us-ascii?q?Ao/8LrrgXMTRGO5nQHTGoblAdDDhXf4xH7WpfxtTb6tvZ41SKHM8D6Uaw4VD?= =?us-ascii?q?K/5KptVRTmijoINyQh/W/KisJ+kqxVrhGmqRN9zY7Ze52ZOOZkc6/BZ94WWX?= =?us-ascii?q?ZNU8BMXCJBGIO8aI4PAvIDMuZFq4n9pkYFox6+BQmrGezvzSVIhnzx3a0kyO?= =?us-ascii?q?QhEgDG3Qw9FN8JsHXUr9X1NKAPXuCy16TIwjDDYOlX2Tf58oTHbhchofSVUL?= =?us-ascii?q?92bMHfylEvGhvbglmNpoHpJS2Z2+sXv2SF7udsT+2ih3M/pwxzozWj3Noghp?= =?us-ascii?q?XVio4P11zI6Dl1zJwoKdGmSEN2Z8OvHoFKuCGALYR2R9svQ2F2tyY+zb0LoZ?= =?us-ascii?q?C0cjUKxpk62hLSb+aJfpSU7h79TuqePyl3hHd+eLKwnRqy9FKvyuz4VsWu1V?= =?us-ascii?q?ZKry5FnsHNtnALyRPT9tCKRuVg8kquwzqDyQ/e5vtaLU01j6bWJIMtzqY1lp?= =?us-ascii?q?UJsETDGiH2mF/xjK+Tbkgl+uuo6+TgYrr7oZ+RLIB0igTkPaQvnsyzG/g3Mg?= =?us-ascii?q?8LX2SD4+SzyKXj/VHlQLVNlvA2ibfWsJTbJcQdu664DBRY0poj6hmjDzem18?= =?us-ascii?q?4UnX8cLF1fYh6HgI/pO0+daMz/WOyyh1WqjSdD2+HNPrqnBI7EaHfEjuTPZ7?= =?us-ascii?q?F4vn9BzAt77tBY65VOCbYfO/HySwelpd/YCRM+GwOxyufjTt5609VNCiq0Hq?= =?us-ascii?q?aFPfaK4hez7eU1LrzUPtVHsSvhK/Uj+//lhGM4nllYZ6SywJ8Lcy/nTMldDW?= =?us-ascii?q?/CSkLF2olHHGoPpQV4SeXrjBuHUDoAL3qxXqdp/jggE8rmFobMQImxnaaMlD?= =?us-ascii?q?m2BJxYZ21KSxiMHH7kep/CWqIkZyebI8snmTsBWA=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CCAAD0gL1alykaGNZdHgEGDIMXKFl?= =?us-ascii?q?6KIw6jyeSUYF6C4UEAoQ7NBgBAgEBAQEBAQIBEgEBAQEBBhgGV4I4IoJMAwM?= =?us-ascii?q?nGQEbHgMMBhA7IQIRAQUBHBmDNoE+AQMIDQOiNDyMbhYFAReCbwV9ZIFpChk?= =?us-ascii?q?mDVVXgiYCBhKJID+GX4dUIAKMUIo3LAiLMIJxC4cthQUriSSGBAYCCQcPIYE?= =?us-ascii?q?EHIIKcBVrghKCFAwOCRGOJU+NAyyCGAEB?= X-IPAS-Result: =?us-ascii?q?A0CCAAD0gL1alykaGNZdHgEGDIMXKFl6KIw6jyeSUYF6C?= =?us-ascii?q?4UEAoQ7NBgBAgEBAQEBAQIBEgEBAQEBBhgGV4I4IoJMAwMnGQEbHgMMBhA7I?= =?us-ascii?q?QIRAQUBHBmDNoE+AQMIDQOiNDyMbhYFAReCbwV9ZIFpChkmDVVXgiYCBhKJI?= =?us-ascii?q?D+GX4dUIAKMUIo3LAiLMIJxC4cthQUriSSGBAYCCQcPIYEEHIIKcBVrghKCF?= =?us-ascii?q?AwOCRGOJU+NAyyCGAEB?= X-IronPort-AV: E=Sophos;i="5.48,378,1517875200"; d="scan'208";a="10188790" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from uphb3cpa02.eemsg.mail.mil (HELO USFB19PA02.eemsg.mail.mil) ([214.24.26.41]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 30 Mar 2018 00:17:36 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;b6449ecc-b45d-4a0b-b0b5-b10c445e74bb Received: from localhost.localdomain (localhost [127.0.0.1]) by USFBF3ID10.oob.disa.mil (Postfix) with SMTP id 40C2Hz6BhSz2L92Y for ; Fri, 30 Mar 2018 00:17:35 +0000 (UTC) Received: from USFB3CPA06_EEMSG_MP28.eemsg.mil (unknown [192.168.16.23]) by USFBF3ID10.oob.disa.mil (Postfix) with ESMTP id 40C2Hz4Kxqz2L92X for ; Fri, 30 Mar 2018 00:17:35 +0000 (UTC) Authentication-Results: USFB3CPA06.eemsg.mail.mil; dkim=pass (signature verified) header.i=@gmail.com X-EEMSG-check-008: 10672330|USFB3CPA06_EEMSG_MP28.csd.disa.mil X-EEMSG-SBRS: 2.7 X-EEMSG-ORIG-IP: 209.85.220.196 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0CvAACEfr1af8TcVdFdHAEBAQQBAQoBAYMXgQGBIotcXowkgwOSUYF6C4UEAoQaITQYAQIBAQEBAQECEwEBCQsLCCYxhSYDAycZARseAwwGEDshAhEBBQEcGYM2gT4BAwgNojk8jG4WBQEXgm8FfWSBaQoZJg1VV4ImAgYJAQiHTIFUP4Zfh1QgAoxQijcsCIswgnELhy2FBSuJJIYEBgIJBw8hgQQcggpwFWuCEoIUDBeONk+NAyyCGAEB X-IPAS-Result: A0CvAACEfr1af8TcVdFdHAEBAQQBAQoBAYMXgQGBIotcXowkgwOSUYF6C4UEAoQaITQYAQIBAQEBAQECEwEBCQsLCCYxhSYDAycZARseAwwGEDshAhEBBQEcGYM2gT4BAwgNojk8jG4WBQEXgm8FfWSBaQoZJg1VV4ImAgYJAQiHTIFUP4Zfh1QgAoxQijcsCIswgnELhy2FBSuJJIYEBgIJBw8hgQQcggpwFWuCEoIUDBeONk+NAyyCGAEB Received: from mail-qk0-f196.google.com ([209.85.220.196]) by USFB3CPA06.eemsg.mail.mil with ESMTP; 30 Mar 2018 00:17:33 +0000 Received: by mail-qk0-f196.google.com with SMTP id o64so7782262qkl.7 for ; Thu, 29 Mar 2018 17:17:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=A4NCNqEKwcivRRJHbMhJnDiJcAWO2ROg/96QJ9sYHB0=; b=shDijSetZYQN8FATDEmF1DyvdnrrgcVx3j4JRigUlvD5CbjNba4xMTYsIwk1cvoVd8 Q5XRJXHJBpuQq5N66aImvEKOz1bUVMsN0AxkQrz4XxDrBUupdV4WYYJcgWaB3sKpGYyx f4vD5EUaUsFirRtIwKW7dDcAAAt3ovA4465tDul14zXYHcg9oAnReMOPY0qccrtm8AEb NlAxczGrHxDDsWo4aYjlRWfjHAXgWgKiZHhjR7HnvcDMsI9FPr41iAFxzBse9zeoq58e 4VYZ0xhEQzaYbXdvXqGFLINYG0AHTtwmBtAAJ4IAywPQ30MP6y4G4Hy39ufqXMMd8pg9 O8Iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=A4NCNqEKwcivRRJHbMhJnDiJcAWO2ROg/96QJ9sYHB0=; b=c1A0AeqQ+R/cSoGVxKlVdwX2LXXuAgxzAt+/GE9Ee8Ipd2EP52kzKwDQ2BRA3XY2AK kfQreCCJ+TT91kW7Jsskjz06eupDKgXNgPQcdDyXA/1qnMniYJOhlg61c7h33e4Kdby5 t2ck84+WpluLHg4FwEtIoMr+XHVkz2U36EnwCbkSSr5fdns/KnBA00dNerHPrspAJDtk 1UI64HS+UX55F5RHv28lJuf/VBrNP1U7cwojBZiBTT9mxbWKLrNEjWCeu4dki5yfqTg0 nWaeA0QbNuMpRqrsGsMUARj/R5tHQ+wjulbBN9d1F+Nw4UHAEJrsLqW+5tFOwQXGoTvW dBeg== X-Gm-Message-State: AElRT7GpWYN+rH26lxFiFqzNp0NUZhaC6vs7WVcfTQaveDgkcOSaLupS vsY4iAEhJwwZai8wHM1jFZjNIQ== X-Google-Smtp-Source: AIpwx4/yZAT3yySIjaCsfEURwiHXWEwjavoBrUMEX1E4RXlfkYY8l6SZeZ1ussW7S5fu/0AhTLPpzA== X-Received: by 10.55.100.139 with SMTP id y133mr14157869qkb.225.1522369051718; Thu, 29 Mar 2018 17:17:31 -0700 (PDT) Received: from localhost.localdomain (c-76-100-110-125.hsd1.md.comcast.net. [76.100.110.125]) by smtp.gmail.com with ESMTPSA id i11sm5824682qtc.30.2018.03.29.17.17.31 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 29 Mar 2018 17:17:31 -0700 (PDT) X-EEMSG-check-009: 444-444 From: Yuli Khodorkovskiy To: selinux@tycho.nsa.gov Date: Thu, 29 Mar 2018 17:16:41 -0700 Message-Id: <20180330001642.2374-2-ykhodo@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180330001642.2374-1-ykhodo@gmail.com> References: <20180330001642.2374-1-ykhodo@gmail.com> Subject: [PATCH v3 1/2] libselinux: verify file_contexts when using restorecon X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Security-Enhanced Linux \(SELinux\) mailing list" List-Post: List-Help: Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP In permissive mode, calling restorecon with a bad label in file_contexts does not verify the label's existence in the loaded policy. This results in any label successfully applying to a file, as long as the file exists. This issue has two assumptions: 1) file_contexts must be manually updated with the invalid label. Running `semanage fcontext` will error when attempting to add an invalid label to file_contexts. 2) the system must be in permissive. Although applying an invalid label in enforcing gives an error and fails, successfully labeling a file with a bad label could cause issues during policy development in permissive. Instead, as each context is used, verify it is valid before blindly applying the label. If an error with validation occurs in restorecon, application of remaining valid labels will be uninterrupted as before. Signed-off-by: Yuli Khodorkovskiy --- libselinux/src/label.c | 7 +++---- libselinux/src/label_backends_android.c | 2 +- libselinux/src/label_file.c | 2 +- libselinux/src/label_file.h | 2 +- libselinux/src/label_internal.h | 6 ++---- libselinux/src/matchpathcon.c | 5 ++--- 6 files changed, 10 insertions(+), 14 deletions(-) diff --git a/libselinux/src/label.c b/libselinux/src/label.c index 48f4d2d6..c510edc1 100644 --- a/libselinux/src/label.c +++ b/libselinux/src/label.c @@ -121,12 +121,11 @@ static inline int selabel_is_validate_set(const struct selinux_opt *opts, return 0; } -int selabel_validate(struct selabel_handle *rec, - struct selabel_lookup_rec *contexts) +int selabel_validate(struct selabel_lookup_rec *contexts) { int rc = 0; - if (!rec->validating || contexts->validated) + if (contexts->validated) goto out; rc = selinux_validate(&contexts->ctx_raw); @@ -143,7 +142,7 @@ static int selabel_fini(struct selabel_handle *rec, struct selabel_lookup_rec *lr, int translating) { - if (compat_validate(rec, lr, rec->spec_file, 0)) + if (compat_validate(lr, rec->spec_file, 0)) return -1; if (translating && !lr->ctx_trans && diff --git a/libselinux/src/label_backends_android.c b/libselinux/src/label_backends_android.c index cb8aae26..49e39ec8 100644 --- a/libselinux/src/label_backends_android.c +++ b/libselinux/src/label_backends_android.c @@ -122,7 +122,7 @@ static int process_line(struct selabel_handle *rec, spec_arr[nspec].lr.ctx_raw = context; if (rec->validating) { - if (selabel_validate(rec, &spec_arr[nspec].lr) < 0) { + if (selabel_validate(&spec_arr[nspec].lr) < 0) { selinux_log(SELINUX_ERROR, "%s: line %u has invalid context %s\n", path, lineno, spec_arr[nspec].lr.ctx_raw); diff --git a/libselinux/src/label_file.c b/libselinux/src/label_file.c index 560d8c3d..169fed70 100644 --- a/libselinux/src/label_file.c +++ b/libselinux/src/label_file.c @@ -328,7 +328,7 @@ end_arch_check: spec->lr.ctx_raw = str_buf; if (strcmp(spec->lr.ctx_raw, "<>") && rec->validating) { - if (selabel_validate(rec, &spec->lr) < 0) { + if (selabel_validate(&spec->lr) < 0) { selinux_log(SELINUX_ERROR, "%s: context %s is invalid\n", path, spec->lr.ctx_raw); diff --git a/libselinux/src/label_file.h b/libselinux/src/label_file.h index aa576d8e..9e52a3c4 100644 --- a/libselinux/src/label_file.h +++ b/libselinux/src/label_file.h @@ -506,7 +506,7 @@ static inline int process_line(struct selabel_handle *rec, spec_hasMetaChars(&spec_arr[nspec]); if (strcmp(context, "<>") && rec->validating) - return compat_validate(rec, &spec_arr[nspec].lr, path, lineno); + return compat_validate(&spec_arr[nspec].lr, path, lineno); return 0; } diff --git a/libselinux/src/label_internal.h b/libselinux/src/label_internal.h index c55efb75..75451858 100644 --- a/libselinux/src/label_internal.h +++ b/libselinux/src/label_internal.h @@ -111,8 +111,7 @@ struct selabel_handle { * Validation function */ extern int -selabel_validate(struct selabel_handle *rec, - struct selabel_lookup_rec *contexts) hidden; +selabel_validate(struct selabel_lookup_rec *contexts) hidden; /* * Compatibility support @@ -127,8 +126,7 @@ extern void __attribute__ ((format(printf, 1, 2))) selinux_log(type, fmt); extern int -compat_validate(struct selabel_handle *rec, - struct selabel_lookup_rec *contexts, +compat_validate(struct selabel_lookup_rec *contexts, const char *path, unsigned lineno) hidden; /* diff --git a/libselinux/src/matchpathcon.c b/libselinux/src/matchpathcon.c index 58b4144a..c66739af 100644 --- a/libselinux/src/matchpathcon.c +++ b/libselinux/src/matchpathcon.c @@ -35,8 +35,7 @@ void set_matchpathcon_printf(void (*f) (const char *fmt, ...)) myprintf_compat = 1; } -int compat_validate(struct selabel_handle *rec, - struct selabel_lookup_rec *contexts, +int compat_validate(struct selabel_lookup_rec *contexts, const char *path, unsigned lineno) { int rc; @@ -47,7 +46,7 @@ int compat_validate(struct selabel_handle *rec, else if (mycanoncon) rc = mycanoncon(path, lineno, ctx); else { - rc = selabel_validate(rec, contexts); + rc = selabel_validate(contexts); if (rc < 0) { if (lineno) { COMPAT_LOG(SELINUX_WARNING,