From patchwork Fri Mar 9 15:21:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vit Mojzis X-Patchwork-Id: 10270979 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 93897603B5 for ; Fri, 9 Mar 2018 15:22:31 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7C59128473 for ; Fri, 9 Mar 2018 15:22:31 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6F3E629E63; Fri, 9 Mar 2018 15:22:31 +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.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from UCOL19PA11.eemsg.mail.mil (ucol19pa11.eemsg.mail.mil [214.24.24.84]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6D4AC29E54 for ; Fri, 9 Mar 2018 15:22:29 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.47,446,1515456000"; d="scan'208";a="463779484" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.2]) by UCOL19PA11.eemsg.mail.mil with ESMTP/TLS/AES256-SHA; 09 Mar 2018 15:22:28 +0000 X-IronPort-AV: E=Sophos;i="5.47,446,1515456000"; d="scan'208";a="9540990" IronPort-PHdr: =?us-ascii?q?9a23=3A3vg6exM0kO0b2hrrpmwl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0L/r5pcbcNUDSrc9gkEXOFd2Cra4c0KyG7eu/AyQp2tWoiDg6aptCVhsI24?= =?us-ascii?q?09vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7?= =?us-ascii?q?Ovr6GpLIj8Swyuu+54Dfbx9HiTahb75+Nha7oATeusQUn4dpN7o8xAbOrnZUYe?= =?us-ascii?q?pd2HlmJUiUnxby58ew+IBs/iFNsP8/9MBOTLv3cb0gQbNXEDopPWY15Nb2tRbY?= =?us-ascii?q?VguA+mEcUmQNnRVWBQXO8Qz3UY3wsiv+sep9xTWaMMjrRr06RTiu86FmQwLmhy?= =?us-ascii?q?cdMz4y7X/ZhMp+gqlGpB6tvgFzz5LRbIyTKfFwfL7SfckCSGRBQMhfWS9PDYGy?= =?us-ascii?q?b4USF+oMP/tUoofjqFsVthayGRWgCfnzxjNUmnP6was32PkhHwHc2wwgGsoDv3?= =?us-ascii?q?vVrNXpKawcVue1zKvJzDXCdPNdxDDw6JbNchAmo/GNXLNwcdHKxEk1CQzKk1WQ?= =?us-ascii?q?ppb5Pz+PyusNtG2b4vNmWOmyhWAnrARxrSKuxscqkoTJnJwaxU3E9Spj3IY5P8?= =?us-ascii?q?G3SEl+YdOiDZBetDmaOpNrTs4tTGxkoiY3xqActZKlcyUG1o4rywPHZ/GGcoWE?= =?us-ascii?q?+A/vWeWTLDtimn5odryyiwyw/EWuzOD3S9O630xQriVfl9nBrnUN1xvO5ceZUv?= =?us-ascii?q?Z95UKh2SqX1wDU9+FEPVg4larFJJ4lxb49joYTvl7ZHi/3hUX2l7Wadlkk++e0?= =?us-ascii?q?6+TnZa/qppmAOI9vlg7yKKEums27AeggMwgOWXaU+fik2bH+8kD0T69Gg/0rnq?= =?us-ascii?q?XDrpzXKtoXqrSkDwNN14Ys8Re/DzOo0NQCmnkHKUpIeAmZgIjtOlHOJu34DPim?= =?us-ascii?q?j1u3lzdr2vbGMaH/DZXWNXXDjLfgcqp9605b0gYzy8tf6IhOBrEOJ/LzRFf9tM?= =?us-ascii?q?bEAR8hLwy03+HnBc1/1oMZX2KAGLOZMKPIvl+O/e8vIe6MZIkQuDnnMPgl++Dh?= =?us-ascii?q?jWUimVMHeqmpx5QXYmiiHvt6O0WZfWbsgtAZHGcIvAoxVvDliF6ZUT5UYXayXr?= =?us-ascii?q?w86yo1CIKiEIfCSZuigKGH3CenA51afGdGCkqDEX3wbYWLR+8MaD6OIs9mijEE?= =?us-ascii?q?TaauRJQ/2hGotQ/6171nI/HV+iIGq53sysJ55+rJlRE97TZ0FdiS03mRT2FomW?= =?us-ascii?q?MFXyI53Kd5oUx711iMz6x4g/1DGNNJ+fxJSAA6OYTbz+xgBND4QhjBccuRSFa6?= =?us-ascii?q?XtWmBik8Qc8tw9AUeUZwAMmtjhfG3yW2GbAVjKCLCIYy8q3Cw3j7P9x9xGre1K?= =?us-ascii?q?k9k1kmRdNCNWyghq5j6QfTA5DGk0CHmKa2b6Qd3DXA9GCbzWWQukFYVRR/UaTB?= =?us-ascii?q?XX8EYUvXos715kTYT7+hEb4nKBdOydaeKqtWbd3klVVHRfbkONTYeG+xnmOwCQ?= =?us-ascii?q?+JxrOKdobqfX8S3D/eCEgFjQAc42yKNQ4gCSe9u2jeFiBhFUrzY0Pw9ulzsG20?= =?us-ascii?q?TlcuwAGQbk1hzKG4+gYPivyGSvMTxaoEuCM7pDpoAlmxxdXWC8CPpwB5ZqVTfc?= =?us-ascii?q?s94Etb1WLerwF8MJ2gL6RnhlEAaQR6pE3u2AtqBYVHi8gltmsqzBB1KaKazlxO?= =?us-ascii?q?ay+Y0Yr3Or3NJWn45AqvZLLO2lHCzNaW/b8C6Poiq1r5ugGmCksi82583tlQy3?= =?us-ascii?q?uc54zGDBEcUJLqSEo38AJ6p77CaCkn+4zUzWFsMbWzsjLa2NImHuglyhG9f9pE?= =?us-ascii?q?M6OLDgzyE8oHB8S0L+wqgVepZAoePO9O7K40I9+md/ye1aGxIelghjOmgnpd4I?= =?us-ascii?q?1myE2D6y98RvTP35YfzPGSxhGHWCvkjFe9rsD3nphJai0IEWq71yfkH5JRZ611?= =?us-ascii?q?fYsQEmehP8y3yct4h57xWn5X7kSvB1UY18+1YRCSdUDy3RVM1UQLpnyqgTG4wC?= =?us-ascii?q?FpnDwyoaqf2SPPz/7kdBUZJm5BXHNigkv0IYiok9AaW1ClbxMnlBu/4kb63LRb?= =?us-ascii?q?qb9kL2nVRkdJcS32IHtkUqeqsLqNfdJP4osysSpLSOS8fUyaSrnlrhoUySzjG3?= =?us-ascii?q?deyy4hdzGxoZj5gQJ1iHiGI3ZuqXrVY8ZwxQ3Q5NbEX/5ewiIGRDVkiTnQHlW8?= =?us-ascii?q?Idip8smIl5fEqOCyTX6uVp1UcSntwoONry+75WxsARKlhfCzncfrEQ8g0S/0z9?= =?us-ascii?q?NqTznHrA7gYon30KS3KeZnfkhzBF/g8sZ6AZ9xko8xhJEWxHgbiY6Y/WEfkWfy?= =?us-ascii?q?N9Vb2L7xbGEXST4N3dHV/BDv2Fd/IXKR24L5SnKdz9N7Z9m9ZmMW3jwy79pWB6?= =?us-ascii?q?eT4r1JhjB1okekogLKe/R9mS0dyfQ24n4An+4JoBYtzjmaAr0KHklXIyrslw+T?= =?us-ascii?q?4tC9sqpXYn2vcb6u20pih9yhC6uCog5EUnbjZpgiBTNw7tl4MF/UyH388JzkeN?= =?us-ascii?q?3OYtILrBKUlQvAgPZPKJ8qi/oKnjRoOXjmvXE/0O47igFu3Yums4eZJWVt+7i5?= =?us-ascii?q?AhFGOTHvYcMc5C3th75EnsmKx4CvAolhGjITUZv2S/KnDSkfterhNwmTED0wsH?= =?us-ascii?q?GbFqTDHQWH8kdps2rPE4y3N3GQPHQZztVjRB2DK0FEhQAUWzs6npAnGQC22Mzh?= =?us-ascii?q?cEB55jUP6VLirBtD1P5oPQHlUmjDvAeodis0SJ+HIRpY9A5C4VvVMcub7u9oES?= =?us-ascii?q?FX4ICurAuXKmOBfwRIF2YJWk6aCF//Irmi/97A8/KXBuCmNfvBfa2OqfBCV/eP?= =?us-ascii?q?3Z+gz5dp/zOLNsWJInluEuY22lRdUnBjGsTYmjIPSyoNmyLLccGbuA+2+jdroc?= =?us-ascii?q?Cn7PTrRAXv6JOBC7tIL9pg5gu2jr2FN+6MgyZ5Mi1V2YkQyn/N0rQf20QSiy52?= =?us-ascii?q?fTm3DbsArTLNTL7XmqJPCR4bcTl8NNNQ768n0AlNONTbisjp1r52j/41DU1KVV?= =?us-ascii?q?r9lcGof8MKJ3uxNFTdBEaELL6GPyHEw9nrYaOgTr1dlP5buAa3tTafEk/jJSiD?= =?us-ascii?q?lyLzWxC0L+5DkDuXPAdAt4G5cxZtD3XjTd39ZxKnMN53lyA2waYuinLEL2EcLS?= =?us-ascii?q?N8c0RLrrGK6iNYmPp/EXRb7nV5NemEhzqZ7+7AJ5YQsPtrBiB0mPxB4Hkh0bRa?= =?us-ascii?q?8jtERPtvlCvVtN5urEmskvOTxTp/TBpOtjFLiZqQskVjNqXZ8Z9AVG3Z8x0T9m?= =?us-ascii?q?qQCg4Fp91/Bt3ooaBQxcDFlLjvJzda79LU4cwcCtDOJ8KIKnUhLwTmFSXTDAsd?= =?us-ascii?q?UzGrM2TfiFZckPGW7XKVqZc7poLrmJoURb9RTEY1Ge8CCkR5ANwCJ496Xi8jkb?= =?us-ascii?q?6elsII/32+rRjPS8VcpZ/HTPWSDuvsKDuCkbZEYB4Izq/iIoQIKo33wUpiZUdm?= =?us-ascii?q?nI7SAUrfQchNojF9bg8zuEhN8nh+T20r20LibgOt4WMTGuCvkx4ziwt+ff4t+y?= =?us-ascii?q?n271cwPFrKqzM6kFMtltX9nTCRbDnxIb+2XY5IESX0s1M8MpD8QwZucQ29h0pk?= =?us-ascii?q?NCzHR7JQlbdgc35kiBPEs5tVBfFcVbFEYAMXxfyPffUnz09cpTu9yk9d+eTFCY?= =?us-ascii?q?BvmxArcZ62sn1A3AxjbMYvJaPOJKtF1F5QibySviWwzOA+3BceJ1oR8GOVYCMH?= =?us-ascii?q?pVYHNqcnJyW15exh8haNmyFZeGgLWfsquexl+V8gO+SaziLgz75CJlq3N+OBM6?= =?us-ascii?q?OTo3LAmtKQQlMsykMIkFFI/bxx0cc5bUWUUUEuzLyKGhQGM8rCNBtZb81I9Hjc?= =?us-ascii?q?ZSyOq/nCwYppP4WhEeDlVfSOu7gQgkKlGgYpAosN498dEZmr1UHXMd3oLKUZyR?= =?us-ascii?q?k34gTkOkmFBuxTeB2XiDcHv92/zJhv0IlBJzEdBGJ9MTm35rfXvQIlnfuDXdcs?= =?us-ascii?q?bXgBRIcEMGw5WNGikS5Do3tAFCW30v4eyAWa9TD8oiXQAyXiYNV7YfeVZRVsCN?= =?us-ascii?q?aw+Tol6KW5kl/X/Y/YJ23jO9Rip8XD6eUEqJabE/lUV6Vys1/Am4lEQHynS3XA?= =?us-ascii?q?HsCzJ5XrcYYjcML0BWigUlykkT01VcfwMMyqLqiSjgHiXZxUv5WD3DA/Kc+9ES?= =?us-ascii?q?kTGw12p+EC+K18ZQoDY54gYRDwrgowKraxLRuf3Ni1X2mtLj5WQOVFwuWhe7xb?= =?us-ascii?q?1SwsYfGmyHE4VJE10/G38VIRRJENlhzR2fSjaJNCXiXoBnNdfAHPpS44l2d/LO?= =?us-ascii?q?Yy3vkwzw/IsVUGNDCLbuNpYnRev94gHVOSPWl2Cm0gSl+Gl4XD+Ams0KsJ8itB?= =?us-ascii?q?hdZby/NFv2b6vp/eZjKsV6irqZTasyogcdgmrbd+MZbmIsecspPRgCDfRoHKsg?= =?us-ascii?q?KZSC66C+Zamt9ILSNWWvVHhWElOc0DuYpA80UxVdwzJ71RB6YyuL+mcz1kDTQd?= =?us-ascii?q?zSUBTYOPwCQCgvug27vdjhqQdY4tMAYHsJpcntsdUih2YiwFqa6tTYrWkXOLSm?= =?us-ascii?q?wMIAcO8AtM/xgMloluceD5+IDIVoNDyyZKo/JoVSvGDoFo91z/Sm6Mm1j5RvKh?= =?us-ascii?q?k+in3Q9JyfLs1d4bWAVhBkdB3eZWkVAoKKp2K6kWsY7GqDiIdVn1vGj10uupOE?= =?us-ascii?q?FRydHId13/FIfKr3D8UjAa+XEORo9C03DfFZUTkwplc6knvlNML566ekzm/Twr?= =?us-ascii?q?25xpH6WkVcCs31slsXEGRyKxHtpdF+1mtUnYVCdjY5+1tJXvI49STXNI+J2Bt1?= =?us-ascii?q?dZl11gMy6jxppGMc5N5iMDUSNSrjqDpNuyUNNM2ctoAJ8WONt/vG39GKxcMpiL?= =?us-ascii?q?v3I2oqDvymPe+z0ksle6wyu8FrSlQO1H5G0RBB8pJ3iApUYyFecs9Hnd8kzVuF?= =?us-ascii?q?Bu4+hbHqSPjVl2oDtlApBBGytG1XG/IFR3V3RJr+JaKKHJfMNGWPkyeQWjOxog?= =?us-ascii?q?Gv46x0aJ5117nW/lYyxusQtX4zvSXwcoWiUJgLrhhDMTp9q7Nj8dTpJHcS8ubz?= =?us-ascii?q?zZKw6BnyBYogpfYVlwW58FGtZF560b3YxM88rYV0mjNCEFUwZ+Ng8j1fpfklBD?= =?us-ascii?q?v1uGdS/BCgqnaOjAvgdxfciPsM6jNO758xtfioP7rOA48L0OR2W9mQ2xW9/Rsp?= =?us-ascii?q?P8u8aRtkuJaaf4KfGzbmHHTDjQlxC/n7MkA4PN/yjJPwpRM4N6xmY8YZj9FW7L?= =?us-ascii?q?OgxLJ74BJ0VFS691dM5Lov1eZ894YqYG47FtBhOARhPrBoOvsONKLlHJRTTRNy?= =?us-ascii?q?+B6PCwoZrP7bzBTujtfsmMyGzDQ6JzIJh69SX7FK3w3oJF/Er5xOtt9lhmRlfc?= =?us-ascii?q?KyCOss7tJgUV68m+bkHipIEmHSvKAJdsl3rg3kNAeNANQy2t65QYzIlW6GjrRO?= =?us-ascii?q?J9z0jztPFS97h45ok2+b9pz9y0Kb3VKfRAvk9tGgKUCRly9pUxHGh/QHhcYu0L?= =?us-ascii?q?J/fXc6QZl8fupP3pGKEM9B2a4epZacDAJ03bnMmwFC2cQwRenAgdsT4aMhec1/?= =?us-ascii?q?mdlq97VMalpOz52kYz7Fi7NRMJ0a5i6pyF+qWSou/bdRzRzaILWqLyXMP8sqws?= =?us-ascii?q?u1+O5f0jjLMOeG11Ywi8HegYSMEcxnnvzborzSIqHMPPBbTg9+BfV3ghhDLvh4?= =?us-ascii?q?h9H0kKGvMTBbeL+4Bek3w5m+zfM90aaKFCmmCBFR6+CLAC0mKr6zGKIGZ5nhHO?= =?us-ascii?q?zgvwTn2p4F/xty94TjPGz83/nUpNSrm3GUBSUjKsOU9/tjOPIAXou8TstKQw7U?= =?us-ascii?q?E5KGrku8yRlGqvP7NXBc7/JMeGLSkyul0XkIU7Rsaz1oADBdq9PNAR/Wl6bvvF?= =?us-ascii?q?7mOmkzRMo6lZiIXD5cGV4O/YHWG6j62dqbWC2ixXymQisVE48NCgOenE58eWTP?= =?us-ascii?q?Swy2YRUyB/thPAXx+0sLPUtUwbNFeQ0EjVhIwFIM1W0WM/1kH86+gpWMgz+xlG?= =?us-ascii?q?Fobce/MCoij+NyD1wVaEbdM4TCue0zpLHlLtC1Z4Baw81Xnss8LOiHjf5UcnRp?= =?us-ascii?q?Rqd0zgnxx4FZ80KUU36FgY2iADCxQCaQiHDLG0AkToNZMEWlIfaRub3Li7dKA3?= =?us-ascii?q?3Vdwwr+2/+/cc+h8B6sLNvZAgQ+Dh0BbFYgKsaICQLJ9dVhd9LTUpgT4CIjoQe?= =?us-ascii?q?LmlXwuOv2xWMxa9toZt3Q66AalWxWg8YtD76ociJ2Qea5Le4LMs95g70dn/jMP?= =?us-ascii?q?ci1NgARhgBO5S+8cufvj7sLdsJW29uakTLwtSPkP9xgoG2R+iIP9gF89rtHRy+?= =?us-ascii?q?dcTYrVhYPk8A9TJ36KuYDa0wRzKOcVL4KkYqxg9nUdKCQEIXIBI8aWYeEm4yBx?= =?us-ascii?q?KDXT+0BCAsQUaNMePcrChQdUiknzV7FI7MbbG1iYC4Bod8Az9Gf3zT848JQmXu?= =?us-ascii?q?bn8j+2KojV70tRMPNbkCVsiNXCqfAawfXOEygX+mCVZQV6zC2EypmNDevw/OqX?= =?us-ascii?q?xdHbUlMJBCg2XJlHKDqF4wynSfK/lI/1XQOM9s/znJU+eVqSRny2nKQFtLxAHv?= =?us-ascii?q?JAiiX/wzhRC4H0h/OTs9q362tXt0ZKEJhy7R3bAqpfOoh0ORXimsmtWEd8GjP1?= =?us-ascii?q?eNvIeRo2pOqW2uAM7v1/N0vgf4AbJAkJy7bn6XVITwtuT6X2skyeXeILa9tsUO?= =?us-ascii?q?nEoWxN6YJ8N68PO0CQpJ70oTdGplA2BBQkabEqoTxcaEbOgBdZW6Dqt74ckgEc?= =?us-ascii?q?S8J2uVdQGWKsP2Iz/zXHVaBSjKifFvMV9jGTQ7cVU0VvNCN+Qg+61I9oe7S3gf?= =?us-ascii?q?BNqnlGkT9loPg2zzxmQwOxuTHtp6IIwj8g5LC4uykCuXNbSuWSiSHIBktfzP4S?= =?us-ascii?q?l6cTF27i6UCgYHkEdIby5bhnJcfj9Ykm+Hk/Yw8sfy4BXeSmFS7wibmEAoqRv9?= =?us-ascii?q?JAnBSNotnBbaevLSgOMbQw0QnsSGZ70gjChxto628LQjK87N84OoWyJ9sqyjCv?= =?us-ascii?q?GWjBe1YG+rlJv9fptV4XUOs2bktswGt93ciDRy0NXNLAFn00jwglbGVEdYxM6Q?= =?us-ascii?q?UeF6Y2mDqIubNG/g4MajfODoul4pXQndvP2XQlQ9Zq3njWpqyZiZw0y3BlntJ0?= =?us-ascii?q?7jKUuHsMbeDYVNVsAnfr3IdF1eP+f+mtsvwASIZ+z7ShVOENP9K7+WuywppqQV?= =?us-ascii?q?OlxrUCEFqlKu8M2KnUXz2jSWKGReSBa3KMkCohMk7u+RmoKUU6aMNLr087L+vD?= =?us-ascii?q?iYdQlwngUbNvWiWQvkTWzG05PuMccAI6ooCnexYFTOQJfeiTOfAuwOEiCFsLd3?= =?us-ascii?q?LJGDF5BPO2sV6smoh7PG5t4Vv7YeTr7A/mNNqSGh8ZEY/VtJJx/ua6Rm2ZM396?= =?us-ascii?q?0BJyJFV09/vYF1kptO9TaZWRnd/LiNlgzO4FcettMS06ut4OlYJj6ZWU3N2McR?= =?us-ascii?q?7P0pb4PcvVreSAA/3D00QqfXlXUrgcYQPy/YU6JN85W6bIELtfpxscALY1QJ07?= =?us-ascii?q?O2f27qF0Ixt5chTNa7SsnsnquuWLa4NPp3/Y61I/MCbRth4Yx/yqUwN7dZGqhn?= =?us-ascii?q?T1IJA2XD5BqcNiCgc1VLdITtgNqwuhHo68hLCwi9j3/Vhz/eANr/neEPfPgeq4?= =?us-ascii?q?w81UWJpI5FfDaCjUA6t5g19NlOm+gv7clJL2DJWxKps/SOFnTzudOff9FYKlJ2?= =?us-ascii?q?fLY5rx?= X-IPAS-Result: =?us-ascii?q?A2AxAgCYpaJa/wHyM5BeHAEBAQQBAQoBAYMjKgNmbyiNbnO?= =?us-ascii?q?NBIMalDSCEQ4YC4gVITQYAQIBAQEBAQECAWongjgkgkgDAwECJFUDCQEBSAgDA?= =?us-ascii?q?VMZBYM9gVcDDK5vOoRxg3OCFQWFN4IugVaBZoUJgVMEGYdBBIgckjkJhkmKEw6?= =?us-ascii?q?IeoVmAYl5h06BLB44gVJNIxWCfYIxHIF8dgGLCAEBAQ?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 09 Mar 2018 15:22:27 +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 w29FM3Va022220; Fri, 9 Mar 2018 10:22:12 -0500 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 w29FLwuA157846 for ; Fri, 9 Mar 2018 10:21:58 -0500 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 w29FM1kf021987 for ; Fri, 9 Mar 2018 10:22:01 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1B/AAAApqJaly0WGNZeHAECBAELAYMkK?= =?us-ascii?q?mlvKI1uc40EgxqUNIIVCiOFAgKDESE0GAECAQEBAQEBAhMBAQEBAQYYBoV6AwM?= =?us-ascii?q?nYlFXGYNCgVcDDK5vOoRxg3OCFQWFN4IugVaBZoUJgVMEGYdBBIgckjkJhkmKE?= =?us-ascii?q?w6IeoVniXmHToEsHoIKTSMVgn2CMRAMFoFmdgGLCAEBAQ?= X-IPAS-Result: =?us-ascii?q?A1B/AAAApqJaly0WGNZeHAECBAELAYMkKmlvKI1uc40Egxq?= =?us-ascii?q?UNIIVCiOFAgKDESE0GAECAQEBAQEBAhMBAQEBAQYYBoV6AwMnYlFXGYNCgVcDD?= =?us-ascii?q?K5vOoRxg3OCFQWFN4IugVaBZoUJgVMEGYdBBIgckjkJhkmKEw6IeoVniXmHToE?= =?us-ascii?q?sHoIKTSMVgn2CMRAMFoFmdgGLCAEBAQ?= X-IronPort-AV: E=Sophos;i="5.47,446,1515474000"; d="scan'208";a="220846" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.35]) by goalie.tycho.ncsc.mil with ESMTP; 09 Mar 2018 10:21:58 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3ACvAzIRyklcHnjL/XCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?1OkfIJqq85mqBkHD//Il1AaPAd2Araocw8Pt8InYEVQa5piAtH1QOLdtbDQizf?= =?us-ascii?q?ssogo7HcSeAlf6JvO5JwYzHcBFSUM3tyrjaRsdF8nxfUDdrWOv5jAOBBr/KRB1?= =?us-ascii?q?JuPoEYLOksi7ze+/94HdbglSmDaxfa55IQmrownWqsQYm5ZpJLwryhvOrHtIeu?= =?us-ascii?q?BWyn1tKFmOgRvy5dq+8YB6/ShItP0v68BPUaPhf6QlVrNYFygpM3o05MLwqxbO?= =?us-ascii?q?SxaE62YGXWUXlhpIBBXF7A3/U5zsvCb2qvZx1S+HNsDwULs6Wymt771zRRH1iC?= =?us-ascii?q?kJKTA3/mLVhcx+l69XvA6tqgZjz4LIfI2ZKPxzdb7dc9MAQmpBW95cWCNAAoOg?= =?us-ascii?q?coABCO0BPeRZron8vFsFsByzBRepBOPoyD9Jh3723bYh3uQ7Dw7JwQwgEMgSsH?= =?us-ascii?q?jOsNr1M6ISXPmzwaLVwzvDaPZW1i386IjOah0hu++DUq9wccXL1UkjDR/KjlKV?= =?us-ascii?q?qYHjIjib1fwNvnCF4+Z9Wu+jkXArpg5rrjSx2MsgkIbEi4INxl3F9Ch12ps5KN?= =?us-ascii?q?66RUJhf9KpHpVduzuYOoZ4RM4pXntmtzwgyrIcvJ62ZCgKx4ojxx7Yc/GIfZWG?= =?us-ascii?q?7w79WuufPzp2nm5odK69ihqo70ev1Oj8VtK70FpQqypKiNjMtnQX2xzW68iHTu?= =?us-ascii?q?Nx/kan2TmRywDe8v9ILV07mKbBNZIszaQ8moQNvUjZESL7mF36jKqMeUUl/uio?= =?us-ascii?q?5f7nYrLjppKEKY90jwb+MqYvm8y+GuQ1KRIOUHaG9uS8zrLj4Vf1T6lNjv0ziq?= =?us-ascii?q?XZqozVJdwHpq6lBA9Yyp0j5Ai7Dzen1tQYgHYGIUlZeBOHk4fpO1bOLOr+Dfek?= =?us-ascii?q?mVugijhrx/fYPu6pPpKYNXXHkbH8bZ5h+kVcz0w11tkZ6JVKWZ8bJ/emZE7t/P?= =?us-ascii?q?nfDA04KETg3ePgCsd8zasEVG6PC7PfO6TX5wzbrtkzKvWBMddG8A32LOIosqbj?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0B/AADEpaJaly0WGNZeHAECBAELAYMkK?= =?us-ascii?q?mlvKI1uc40EgxqUNIIVCiOFAgKDESE0GAECAQEBAQEBAgESAQEBAQEGGAZWgjg?= =?us-ascii?q?igkoDAydiUVcZg0KBVwMMrm86hHGDc4IVBYU3gi6BVoFmhQmBUwQZh0EEiBySO?= =?us-ascii?q?QmGSYoTDoh6hWeJeYdOgSweggpNIxWCfYIxEAwWgWZ2AYsIAQEB?= X-IPAS-Result: =?us-ascii?q?A0B/AADEpaJaly0WGNZeHAECBAELAYMkKmlvKI1uc40Egxq?= =?us-ascii?q?UNIIVCiOFAgKDESE0GAECAQEBAQEBAgESAQEBAQEGGAZWgjgigkoDAydiUVcZg?= =?us-ascii?q?0KBVwMMrm86hHGDc4IVBYU3gi6BVoFmhQmBUwQZh0EEiBySOQmGSYoTDoh6hWe?= =?us-ascii?q?JeYdOgSweggpNIxWCfYIxEAwWgWZ2AYsIAQEB?= X-IronPort-AV: E=Sophos;i="5.47,446,1515456000"; d="scan'208";a="10377067" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from usat3cpa07.eemsg.mail.mil ([214.24.22.45]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 09 Mar 2018 15:21:57 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;f8a05d53-be9a-4741-8f88-db44d3bcfb53 Authentication-Results: USAT3CPA10.eemsg.mail.mil; dkim=none (message not signed) header.i=none X-EEMSG-check-008: 8114316|USAT3CPA10_EEMSG_MP25.csd.disa.mil X-EEMSG-check-001: false X-EEMSG-SBRS: 3.5 X-EEMSG-ORIG-IP: 66.187.233.73 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BMAACpo6Jah0npu0JeHAECBAELAYMkgRNvKI1uc5AelDSCFQojhQICgzI0GAECAQEBAQEBAhMBAQEKCwkIKC6FJAMDJ2JRVxmDQoFXD65rOoRxg3SCFQWFN4QEgWaFCYFTBBmHQQSIHJI5CYZJihMOiHqFZgGJeYdOgSweggpNIxWCfYIxEAyBfD83AYsIAQEB X-IPAS-Result: A0BMAACpo6Jah0npu0JeHAECBAELAYMkgRNvKI1uc5AelDSCFQojhQICgzI0GAECAQEBAQEBAhMBAQEKCwkIKC6FJAMDJ2JRVxmDQoFXD65rOoRxg3SCFQWFN4QEgWaFCYFTBBmHQQSIHJI5CYZJihMOiHqFZgGJeYdOgSweggpNIxWCfYIxEAyBfD83AYsIAQEB Received: from mx3-rdu2.redhat.com (HELO mx1.redhat.com) ([66.187.233.73]) by USAT3CPA10.eemsg.mail.mil with ESMTP; 09 Mar 2018 15:21:55 +0000 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BB16180AD23B for ; Fri, 9 Mar 2018 15:21:53 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.43.12.26]) by smtp.corp.redhat.com (Postfix) with ESMTP id 439C52026DFD for ; Fri, 9 Mar 2018 15:21:53 +0000 (UTC) X-EEMSG-check-009: 444-444 From: Vit Mojzis To: selinux@tycho.nsa.gov Date: Fri, 9 Mar 2018 16:21:47 +0100 Message-Id: <20180309152147.2635-1-vmojzis@redhat.com> In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Fri, 09 Mar 2018 15:21:53 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Fri, 09 Mar 2018 15:21:53 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'vmojzis@redhat.com' RCPT:'' Subject: [PATCH] libsemanage: replace access() checks to make setuid programs work 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 access() uses real UID instead of effective UID which causes false negative checks in setuid programs. Replace access() calls (mostly tests for file existence) by stat(). Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1186431 Signed-off-by: Vit Mojzis --- libsemanage/src/direct_api.c | 137 +++++++++++++++++++++++++-------------- libsemanage/src/semanage_store.c | 11 +++- 2 files changed, 98 insertions(+), 50 deletions(-) diff --git a/libsemanage/src/direct_api.c b/libsemanage/src/direct_api.c index 92d7517d..439122df 100644 --- a/libsemanage/src/direct_api.c +++ b/libsemanage/src/direct_api.c @@ -140,6 +140,7 @@ int semanage_direct_is_managed(semanage_handle_t * sh) int semanage_direct_connect(semanage_handle_t * sh) { const char *path; + struct stat sb; if (semanage_check_init(sh, sh->conf->store_root_path)) goto err; @@ -302,10 +303,16 @@ int semanage_direct_connect(semanage_handle_t * sh) /* set the disable dontaudit value */ path = semanage_path(SEMANAGE_ACTIVE, SEMANAGE_DISABLE_DONTAUDIT); - if (access(path, F_OK) == 0) + + if (stat(path, &sb) == 0) sepol_set_disable_dontaudit(sh->sepolh, 1); - else + else if (errno == ENOENT) { + /* The file does not exist */ sepol_set_disable_dontaudit(sh->sepolh, 0); + } else { + ERR(sh, "Unable to access %s: %s\n", path, strerror(errno)); + goto err; + } return STATUS_SUCCESS; @@ -1139,6 +1146,7 @@ static int semanage_compile_hll_modules(semanage_handle_t *sh, int status = 0; int i; char cil_path[PATH_MAX]; + struct stat sb; assert(sh); assert(modinfos); @@ -1155,9 +1163,13 @@ static int semanage_compile_hll_modules(semanage_handle_t *sh, } if (semanage_get_ignore_module_cache(sh) == 0 && - access(cil_path, F_OK) == 0) { + (status = stat(cil_path, &sb)) == 0) { continue; } + if (status != 0 && errno != ENOENT) { + ERR(sh, "Unable to access %s: %s\n", cil_path, strerror(errno)); + goto cleanup; //an error in the "stat" call + } status = semanage_compile_module(sh, &modinfos[i]); if (status < 0) { @@ -1196,6 +1208,7 @@ static int semanage_direct_commit(semanage_handle_t * sh) struct cil_db *cildb = NULL; semanage_module_info_t *modinfos = NULL; mode_t mask = umask(0077); + struct stat sb; int do_rebuild, do_write_kernel, do_install; int fcontexts_modified, ports_modified, seusers_modified, @@ -1234,10 +1247,16 @@ static int semanage_direct_commit(semanage_handle_t * sh) /* Create or remove the disable_dontaudit flag file. */ path = semanage_path(SEMANAGE_TMP, SEMANAGE_DISABLE_DONTAUDIT); - if (access(path, F_OK) == 0) + if (stat(path, &sb) == 0) do_rebuild |= !(sepol_get_disable_dontaudit(sh->sepolh) == 1); - else + else if (errno == ENOENT) { + /* The file does not exist */ do_rebuild |= (sepol_get_disable_dontaudit(sh->sepolh) == 1); + } else { + ERR(sh, "Unable to access %s: %s\n", path, strerror(errno)); + retval = -1; + goto cleanup; + } if (sepol_get_disable_dontaudit(sh->sepolh) == 1) { FILE *touch; touch = fopen(path, "w"); @@ -1259,10 +1278,17 @@ static int semanage_direct_commit(semanage_handle_t * sh) /* Create or remove the preserve_tunables flag file. */ path = semanage_path(SEMANAGE_TMP, SEMANAGE_PRESERVE_TUNABLES); - if (access(path, F_OK) == 0) + if (stat(path, &sb) == 0) do_rebuild |= !(sepol_get_preserve_tunables(sh->sepolh) == 1); - else + else if (errno == ENOENT) { + /* The file does not exist */ do_rebuild |= (sepol_get_preserve_tunables(sh->sepolh) == 1); + } else { + ERR(sh, "Unable to access %s: %s\n", path, strerror(errno)); + retval = -1; + goto cleanup; + } + if (sepol_get_preserve_tunables(sh->sepolh) == 1) { FILE *touch; touch = fopen(path, "w"); @@ -1299,40 +1325,25 @@ static int semanage_direct_commit(semanage_handle_t * sh) * a rebuild. */ if (!do_rebuild) { - path = semanage_path(SEMANAGE_TMP, SEMANAGE_STORE_KERNEL); - if (access(path, F_OK) != 0) { - do_rebuild = 1; - goto rebuild; - } - - path = semanage_path(SEMANAGE_TMP, SEMANAGE_STORE_FC); - if (access(path, F_OK) != 0) { - do_rebuild = 1; - goto rebuild; - } - - path = semanage_path(SEMANAGE_TMP, SEMANAGE_STORE_SEUSERS); - if (access(path, F_OK) != 0) { - do_rebuild = 1; - goto rebuild; - } - - path = semanage_path(SEMANAGE_TMP, SEMANAGE_LINKED); - if (access(path, F_OK) != 0) { - do_rebuild = 1; - goto rebuild; - } - - path = semanage_path(SEMANAGE_TMP, SEMANAGE_SEUSERS_LINKED); - if (access(path, F_OK) != 0) { - do_rebuild = 1; - goto rebuild; - } + int files[] = {SEMANAGE_STORE_KERNEL, + SEMANAGE_STORE_FC, + SEMANAGE_STORE_SEUSERS, + SEMANAGE_LINKED, + SEMANAGE_SEUSERS_LINKED, + SEMANAGE_USERS_EXTRA_LINKED}; + + for (i = 0; i < (int) sizeof(files); i++) { + path = semanage_path(SEMANAGE_TMP, files[i]); + if (stat(path, &sb) != 0) { + if (errno != ENOENT) { + ERR(sh, "Unable to access %s: %s\n", path, strerror(errno)); + retval = -1; + goto cleanup; + } - path = semanage_path(SEMANAGE_TMP, SEMANAGE_USERS_EXTRA_LINKED); - if (access(path, F_OK) != 0) { - do_rebuild = 1; - goto rebuild; + do_rebuild = 1; + goto rebuild; + } } } @@ -1465,7 +1476,7 @@ rebuild: goto cleanup; path = semanage_path(SEMANAGE_TMP, SEMANAGE_SEUSERS_LINKED); - if (access(path, F_OK) == 0) { + if (stat(path, &sb) == 0) { retval = semanage_copy_file(path, semanage_path(SEMANAGE_TMP, SEMANAGE_STORE_SEUSERS), @@ -1473,12 +1484,17 @@ rebuild: if (retval < 0) goto cleanup; pseusers->dtable->drop_cache(pseusers->dbase); - } else { + } else if (errno == ENOENT) { + /* The file does not exist */ pseusers->dtable->clear(sh, pseusers->dbase); + } else { + ERR(sh, "Unable to access %s: %s\n", path, strerror(errno)); + retval = -1; + goto cleanup; } path = semanage_path(SEMANAGE_TMP, SEMANAGE_USERS_EXTRA_LINKED); - if (access(path, F_OK) == 0) { + if (stat(path, &sb) == 0) { retval = semanage_copy_file(path, semanage_path(SEMANAGE_TMP, SEMANAGE_USERS_EXTRA), @@ -1486,8 +1502,13 @@ rebuild: if (retval < 0) goto cleanup; pusers_extra->dtable->drop_cache(pusers_extra->dbase); - } else { + } else if (errno == ENOENT) { + /* The file does not exist */ pusers_extra->dtable->clear(sh, pusers_extra->dbase); + } else { + ERR(sh, "Unable to access %s: %s\n", path, strerror(errno)); + retval = -1; + goto cleanup; } } @@ -1817,6 +1838,7 @@ static int semanage_direct_extract(semanage_handle_t * sh, ssize_t _data_len; char *_data; int compressed; + struct stat sb; /* get path of module */ rc = semanage_module_get_path( @@ -1829,8 +1851,8 @@ static int semanage_direct_extract(semanage_handle_t * sh, goto cleanup; } - if (access(module_path, F_OK) != 0) { - ERR(sh, "Module does not exist: %s", module_path); + if (stat(module_path, &sb) != 0) { + ERR(sh, "Unable to access %s: %s\n", module_path, strerror(errno)); rc = -1; goto cleanup; } @@ -1859,7 +1881,13 @@ static int semanage_direct_extract(semanage_handle_t * sh, goto cleanup; } - if (extract_cil == 1 && strcmp(_modinfo->lang_ext, "cil") && access(input_file, F_OK) != 0) { + if (extract_cil == 1 && strcmp(_modinfo->lang_ext, "cil") && stat(input_file, &sb) != 0) { + if (errno != ENOENT) { + ERR(sh, "Unable to access %s: %s\n", input_file, strerror(errno)); + rc = -1; + goto cleanup; + } + rc = semanage_compile_module(sh, _modinfo); if (rc < 0) { goto cleanup; @@ -2004,6 +2032,12 @@ static int semanage_direct_get_enabled(semanage_handle_t *sh, } if (stat(path, &sb) < 0) { + if (errno != ENOENT) { + ERR(sh, "Unable to access %s: %s\n", path, strerror(errno)); + status = -1; + goto cleanup; + } + *enabled = 1; } else { @@ -2330,6 +2364,12 @@ static int semanage_direct_get_module_info(semanage_handle_t *sh, /* set enabled/disabled status */ if (stat(fn, &sb) < 0) { + if (errno != ENOENT) { + ERR(sh, "Unable to access %s: %s\n", fn, strerror(errno)); + status = -1; + goto cleanup; + } + ret = semanage_module_info_set_enabled(sh, *modinfo, 1); if (ret != 0) { status = -1; @@ -2738,6 +2778,7 @@ static int semanage_direct_install_info(semanage_handle_t *sh, int status = 0; int ret = 0; int type; + struct stat sb; char path[PATH_MAX]; mode_t mask = umask(0077); @@ -2838,7 +2879,7 @@ static int semanage_direct_install_info(semanage_handle_t *sh, goto cleanup; } - if (access(path, F_OK) == 0) { + if (stat(path, &sb) == 0) { ret = unlink(path); if (ret != 0) { ERR(sh, "Error while removing cached CIL file %s: %s", path, strerror(errno)); diff --git a/libsemanage/src/semanage_store.c b/libsemanage/src/semanage_store.c index 4bd1d651..1e71ab67 100644 --- a/libsemanage/src/semanage_store.c +++ b/libsemanage/src/semanage_store.c @@ -514,6 +514,7 @@ char *semanage_conf_path(void) { char *semanage_conf = NULL; int len; + struct stat sb; len = strlen(semanage_root()) + strlen(selinux_path()) + strlen(SEMANAGE_CONF_FILE); semanage_conf = calloc(len + 1, sizeof(char)); @@ -522,7 +523,7 @@ char *semanage_conf_path(void) snprintf(semanage_conf, len + 1, "%s%s%s", semanage_root(), selinux_path(), SEMANAGE_CONF_FILE); - if (access(semanage_conf, R_OK) != 0) { + if (stat(semanage_conf, &sb) != 0 && errno == ENONET) { snprintf(semanage_conf, len + 1, "%s%s", selinux_path(), SEMANAGE_CONF_FILE); } @@ -1508,8 +1509,14 @@ int semanage_split_fc(semanage_handle_t * sh) static int sefcontext_compile(semanage_handle_t * sh, const char *path) { int r; + struct stat sb; + + if (stat(path, &sb) < 0) { + if (errno != ENOENT) { + ERR(sh, "Unable to access %s: %s\n", path, strerror(errno)); + return -1; + } - if (access(path, F_OK) != 0) { return 0; }