From patchwork Tue Jan 24 19:39:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Smalley X-Patchwork-Id: 9535759 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 8CEB26046A for ; Tue, 24 Jan 2017 19:38:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 85B6B26B39 for ; Tue, 24 Jan 2017 19:38:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7991926E35; Tue, 24 Jan 2017 19:38:06 +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=-1.9 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from emsm-gh1-uea10.nsa.gov (emsm-gh1-uea10.nsa.gov [8.44.101.8]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 697FD26B39 for ; Tue, 24 Jan 2017 19:38:05 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.33,279,1477958400"; d="scan'208";a="3131873" IronPort-PHdr: =?us-ascii?q?9a23=3Arv50VBJodFHhKYQOh9mcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgQKP/yrarrMEGX3/hxlliBBdydsKMYzbeP+Pm6CCQp2tWoiDg6aptCVhsI24?= =?us-ascii?q?09vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7?= =?us-ascii?q?Ovr6GpLIj8Swyuu+54Dfbx9GiTe5br5+NhW7oRjeusULn4dvLrs6xwfUrHdPZ+?= =?us-ascii?q?lY335jK0iJnxb76Mew/Zpj/DpVtvk86cNOUrj0crohQ7BAAzsoL2465MvwtRne?= =?us-ascii?q?VgSP/WcTUn8XkhVTHQfI6gzxU4rrvSv7sup93zSaPdHzQLspVzmu87tnRRn1gy?= =?us-ascii?q?gJLT459HzchNJ2gqxVvRmtowVzz5DIbI2QMvd1Y6HTcs4ARWdZXshfSTFPDI2/?= =?us-ascii?q?YYUIF+oMP/tUoofyqFQSohWxGxKsCfjzyjJKnHL6wbc33/g/HQzAwQcuH8gOsH?= =?us-ascii?q?PRrNjtKakSTf66zLHIzTrdafNdxCrz6I3SfRAlpfGDQ7JxetfWxEk0CgzFlU6d?= =?us-ascii?q?qZDlPjyJ1uQNtHKX7+x7Ve21kWInpAZxoia2y8oql4LHhZoVx0jZ+Sh2z4s5P9?= =?us-ascii?q?21RFNhbdK6H5ZcqTuWO5ZwT8g/WW9nojw6xacDuZOjeSgKz4koyADHZvycdoiI?= =?us-ascii?q?/grjVOGMITdknH5leKywhxK18UW41u3zTNO00FdXripeiNXMqnAM2ADT6siAUP?= =?us-ascii?q?d9+Fuu2S2T2AzJ7+FEIEQ0mbLaK54n3LEwioIevVnMEyL5gkn7jLKael869uWn?= =?us-ascii?q?9ejreKjqqoeZN4BuiwH+Nqoumta4AeQ9KgUORHaU+eC91L3l4E34T6xGgeYxkq?= =?us-ascii?q?nEtpDVOdoUprWiDg9J0ocs9xa/DzC83NQehnkINkhJeB2Aj4j3I13OOuz3De+j?= =?us-ascii?q?g1Swlzdm3/LGPrrnAprXMnjDkK3ufbBm5k5ezwozy9Vf6IhPCrEdPv3zQFTxuM?= =?us-ascii?q?bfDh8jPAy+2/znB8ll1oMCRWKPBbeUMKHQsVCS+u0vIPKMZIgTuDb8Nfgo/PDu?= =?us-ascii?q?jXskmV4SZqapwJ0XaGylHvh8JEWZe3XsiM8bEWgWpgo+UPDqiFqaXD9dZnayW6?= =?us-ascii?q?c86S8hCI+9A4fMWJ2igLub3CihBp1WfGdGClKSHnj0a4WIQfAMaDidIsV5iDwL?= =?us-ascii?q?SaChS5M91RGprAL11qZoLu/T+i0eqZLvycN45/PNmhEo9Dx1DsOd02eXQ2FygG?= =?us-ascii?q?wIWyc83Lpjrkxl1leDza94juRFGtxP/fxJSBw3OoLbz+x/F9/9QBnBfsuTRFag?= =?us-ascii?q?XNqmHSk7TsgtzN8Wf0Z9B9KigwjD3iurBL8VkaeGBJkw8q7F3njxIdxxy3Dc26?= =?us-ascii?q?k7jFkmQ9VPOnO8iq556QfTG5bDk1+FmKayaaQcwCnN+X+YwmWVu01YVA9wUb7Z?= =?us-ascii?q?XXAEfEfWtsr26V/YQ7+1F7snNgpBycifKqpFcdDmkVVHRO3+ONTFeW6wlX2/BQ?= =?us-ascii?q?qTxrOLaormYWId3D/SCEIciQAc4W6GNRQiBiemu2/REiRuGkj1Y0Pt6ulzs2u7?= =?us-ascii?q?QVUuzwGLdE1hz7619QQJivOCUf8T2agEuCg5oTVuAFm9x87WC8aHpwd5cqVce8?= =?us-ascii?q?ky4FFb2mLYrAxwJZmgL7hjhlIHaAR2sVju2w9wCoVansggtGkqwxZqKaKEzFNB?= =?us-ascii?q?cCuV3ZPqNb3ULWny4Quia63M1VHd19aW570D6PMiq1XspAupDFYt821709lJ1H?= =?us-ascii?q?uR/o/FAxcIUZLwTEk37QN3qKvGbSk4/Y/U0mdsMaasuD/Yx90pHPclygqnf9pH?= =?us-ascii?q?MKOLCgvyE8kdB8W1LOwqhkSpbhUBPO9I7qI0ONmmd/Se0q6xIOlghC6mjXhA4I?= =?us-ascii?q?1lyUKM+TB8SunT35YZ2PyYxQ2HVzDyjVekqM/3n5pIZTcMEWqj0SLkHpJeZrVu?= =?us-ascii?q?fYYXDmejO8O2yc96h57xRXFY7kWjCkgY2MC3YxqddEH93QhK2UQQu3ynljOyzy?= =?us-ascii?q?ZonDExsqqfwCvOzvz+dBUaJ2FLRXNtjVP3LIeoiNAaWVSnYBIylBu5/0r6wbZU?= =?us-ascii?q?pLhnJWnJXUhIZzT2L31lUqaosLqCYspP6Jc2viVMS+mze06VSqT6oxcA1CPjBW?= =?us-ascii?q?Rezighdz62opX5gwB6iGWFIXZtrXrWZd1wxRDF5NDGWfFR3j0GRC93iTTMAli8?= =?us-ascii?q?Pt+p8s+Ol5fEqOy+UHihVpJLeynx0YyArDe75XFtARCnm/Czm8bnERQj3S/gyd?= =?us-ascii?q?ZqUSTIrBDhYojkzKm6KvpnfkhuBF/998V6AZtyko0ui5EMwXIanIma/WIbkWfv?= =?us-ascii?q?NtVWwbj+bH0JRT4P3dHV+hTq2EptL3+S3IL5S2mSwtB7a9m9eGMW1To379pWB6?= =?us-ascii?q?eM8LxEgSx1r0KgrQ3LfPh9mi0RxuE05HEBhOEJvBYtziKbAr0JGElUISrslxOU?= =?us-ascii?q?4NykqqVYenqve6Cq1EVihdChEK2CogZEVXb6ZJgiGzRw4958MF3S1n3z8Yfkd8?= =?us-ascii?q?fMbd4JsR2UiRjAhfBPKJ0tjvoKmTZnOWXlsH07ze40kAdj3Y+8vIeaK2Vh5qS5?= =?us-ascii?q?DQBENjftfcMc5intjbpCnsaRx42vBo9uGigPXJbzUf2oES4StPT+OwaACjI8rG?= =?us-ascii?q?2XGb3FHQ+Q8E1mtW7AE4i3N3GLI3kU1c9iSwSAK0FEjwAUWTo7koQ/Fg+02Mzr?= =?us-ascii?q?aF156SwJ5l7kthtMzfplNwHlXWfCoAendC80R4KZLBpK8A5C/VzYMdGF7u1tBS?= =?us-ascii?q?FY5YetrBeKKmyGfQRHEX8GWkKDB1D5Mbmh+8PM8+6GCeqiN/HOe6mBqfRCV/eU?= =?us-ascii?q?wpKiyoVm8CyKNsWTOXliCuY22kRdUn9kHMTZgS8ASzQNlyLKbc6Uuguz+jFtos?= =?us-ascii?q?C46vTrVxrl5ZGTBLtKLdVv5xe2jL+GN+GKgCZ5LShX1o8QxXDS0rcSx1gShD9y?= =?us-ascii?q?dzm2DbsPrzbNQ7zKlq9REREbdzt5NNFU4KIkwglNJcnbh8vv1rJigP85EVJFWk?= =?us-ascii?q?blmsGuZc0HOHuyO0/CBEqRM7SGPzLLydntYaygUb1QkPlUtxqotDadCU/sJCyD?= =?us-ascii?q?lyHyWhChMOFMljqbPABQuIG8dBZiE27jQ87nahKhNN97lzo2wac7hnnSL24TLS?= =?us-ascii?q?B8c19Rrr2X9S5YmutwFHdf4XpjLOmEhyGZ4vLZKpkIr/RkHD54l+VA4HQ107FV?= =?us-ascii?q?9j1LRORpmCvOqd5ju0ypkvKRxTV9XxpOsCxEhJyQsEV5I6rZ9YRAWWze8x4X6W?= =?us-ascii?q?WQFhIKqMF/CtH2p6BQzdvPlaL0KDtY9dLb49ccDdDOKM2bKHohLQbpGDnMAQse?= =?us-ascii?q?VzGrK3vQh0NDn/GJ7XCVtYI1qob2l5oBVLBbT0Y5FvUEBUR5BNYCOot4Xis4kb?= =?us-ascii?q?6Hi84F/WGxrBjeRMVduJDKTe+dDuv0JzaYl7ZEYQEEwbTiLYQcLof7wVBtakFm?= =?us-ascii?q?nITWHErdRcpCoiJ7YQ8qvkpA639+TnUt1ELjbwOi+n4TFfqvkR4xhQpye+Mt9C?= =?us-ascii?q?3j410vPFrFuDMwkFUtmdXimT2RbDnxLKKqUYFMDCr1tlY+MpXgTAZvag29g09k?= =?us-ascii?q?OSzYSLJWirtvaXpkiBTAuZdVH/5TU7FEagcKxf6Lf/UozUhcqiK/yE9E5erFDY?= =?us-ascii?q?VtmRAvcZ6roXJA1RxsbMIpJazQI6pJy0ZfiriIviC2yuA72BUeKFoV8GOOZC4I?= =?us-ascii?q?v1QFNr84KCWy+uxh8g+CmzxYeGgQTfUqpOlq9kA8O+iaySLvzaJDIFirN+ODN6?= =?us-ascii?q?OZp3TAlcmQT1MqyEwIjFdK8qJs0cg/c0qZTFsgzLqLFxsUMsrCJxlVb9BM+3nT?= =?us-ascii?q?ZyqOt/vCwY5tNYWnCu/oVfOOtLoTgk+8AQkpGIIM7sIcEZay1EHYLNzqI6Qbxh?= =?us-ascii?q?U34wTnPlKFDO5GeBiTijcIv9m/zINr3YlaPjwSHH9yMTu25rnKvQ8nm+CMXM0s?= =?us-ascii?q?YncdUIoELWw5V9Gnmy5DvnRAEDm23vgfyAec8z/2vj7QAyXkb9p/ePeUYgthCN?= =?us-ascii?q?+s+Toh7qe2kkTY8pPCJ2H9LtRvocXA5v8fp5qdDPNUV7Z9uV/Gm4ZEX3yqT3LP?= =?us-ascii?q?EdmtKpj0bIksd8L7CnC7U1y4kD81QMHxPMu3IqiPmwHoSp5esJOH0zA7Kc+9Cj?= =?us-ascii?q?YeFg9rp+4d4KJ8ZAsDY4c0YBPzqws+MKm/LxuC3dW1X2ahMz1WQOdDze+ifbxY?= =?us-ascii?q?0zIsbvOmyHsnVpw6zPO38E4XS5EMkhHexe2uZ4ZZUSjrBnNRYQPPqjQll2J5LO?= =?us-ascii?q?Y93v8/wA/UsVkbKz2LaO1paGlDv9EgBVOTIW57BXc5R16cl4XM+RSg37YM8CtB?= =?us-ascii?q?h9xUy/FKsGDivp/DZzKhQLakqZHUsyU8c9cpu6hxMIzlIsuBspPRhCfSQ4LRsg?= =?us-ascii?q?KfVi62DvRamsVKLCJeXvZIhXkvOdYatopZ9UoxSsA+KqRUB6YyoLCnciBrAjMM?= =?us-ascii?q?zSAHTYOAxyYNgv282rfAkReQapsiOgQesJpemtsdTzJ2YiQGqa+sSoXWlmuESm?= =?us-ascii?q?wVLwcW9glD+RwPmZRxfu//5orEVphMyyRZo/hsSCvECoFo90fnSmGRmVX4UvOh?= =?us-ascii?q?k+210gJSy/Ls1sIbVgZmB0ZA3ehbikwmJaprJKkXu47FriWHdVjmvG73zuupOk?= =?us-ascii?q?VRw9XOd1LkFIrFqXb8UioE9H0OX4BP0nbfGo8JngplcqYkvktML56iekb/4Twk?= =?us-ascii?q?yIBpH7i3VcCr21Ylo2wJRz2vE9ZbDeFprk7XUiV/Y5+3sJXlJ4lSQmhI9ZyTsV?= =?us-ascii?q?tWjEVtMy+8yZpdMc5N4SUBXDlRrjqDotS+UspD2dV5D5UUONdwp2/9GL9YOJiW?= =?us-ascii?q?u3A5oKbvymLf+zwms1e33zSzG665T+JF5GISAAMpKHqCqkM3Fesj7n/S8kzRsl?= =?us-ascii?q?Bz5+pbB76PjVlvrzZ5AJ9OAyhG1Wy/L1VzV3RGtP1aJ7rTc8xZWfYyZBuvNAc5?= =?us-ascii?q?Ff8pxUCJ+lt0nXjhaSxoqgRa4zzdXxUzVSQNjbftgycRqse7OTIBSpJIajsgby?= =?us-ascii?q?HZKwKbhy9XvRBfa110VJADGNpF/a8U3ZdM9MrYVUmsMT0FXABlNg8gzfpfkktD?= =?us-ascii?q?vV6EeSzBCAqnbuzDshtpcseNtMSpNuj2/B9bioP7t+A176UDSGe8mQK3RdDRsp?= =?us-ascii?q?TxucCUuUuWbKf3Lem8bmHbTDTWihCwn7gkBYHQ/yfPKApbN4V6yX08bJjjDm7E?= =?us-ascii?q?Iw9LKL8FKEpAS696c8lGrf5HaMN+fqYG57NtDAqdRhzzAIyvsOVGLlHLSDvFIS?= =?us-ascii?q?WO7vCzrIDO4bHTUuXvesuMx3PbTK1tJZd69SP3G7H03o9C4kD2wOti9ltmSVja?= =?us-ascii?q?NCCMtM7hKR0W68mibETiooYkHTfRAJdujnXh2F1Pd80KTCK06pgYzo1W6GroQ+?= =?us-ascii?q?JizkfzqPFS96Vj6YQv+7Bp0tu0Kr3PJvRGqkJnGR+UBhhw9poxHmd/QXxRYvUL?= =?us-ascii?q?J/fVZ6gZitruq+/vHawN9BKV4/BZacfAJ0zZhsm/EC+TRgJZkwoatD4aKhec1+?= =?us-ascii?q?SflK9qSMalouz51Vwx41SkKR4G1r9t75+e+qWUvO/XcwfRzb8cV6f3QMP8tK8h?= =?us-ascii?q?tF6U5fI+jrIOfXZ1YwK/GugHSsEd3nvgzbwtzS80EcPMBajg+PlYV3I9hD3ghY?= =?us-ascii?q?twH1ALGvMQAbqL/JhRnmYilOzfLd0aaKdCmnyAFRS8CL8N1War6zeLIGlimhzO?= =?us-ascii?q?0Qv/QWW97F/sqi93XDXDwsz/kkVPULm3HkBSUzCvOUBmrDOFJBDou8bvuaQp8E?= =?us-ascii?q?E2NXTptNSJlGa6ObNXGcj/KMadISkyqlIXloc+Rsez2YABBNqyPMsR8GxkbvTA?= =?us-ascii?q?8W+rlDVBo6hfjYrE/s6V4unXHWWnj6CCrbWNxSxXyn88vV4l8dCsLPDO59qNQ/?= =?us-ascii?q?SzzGYcVCJ/tgTOXhKvrbzbtV8UM1SR0EjXgIwKIs1Z3X4g2076/ucjRMw89B5C?= =?us-ascii?q?FofAYPMPvivzNyf1wVmBZdI3Siie3CFNElLzD1Z4BLA22Hjss8LRiXfQ51ooS5?= =?us-ascii?q?F0d0z8gBx6D541KUwz51cKxSoDCxICaQiBDLGvB0TqM5cLVVQZZRSAxri6db89?= =?us-ascii?q?3VdvzbO3+O/Tcet8CrIPNvZciw6Dh11bFYwWsKIAWrJ8elld9KHNqgjkFYfnQ+?= =?us-ascii?q?DslWAsOv2tXsBa7ccZumMj4ge+XRWv84tM4q0AiJ+Waq5Lf4TDsNp770d96j4F?= =?us-ascii?q?bjZNjwRnjxOlTeAco/ju7cPasJqz5OehTqQtR+QL9xgsHWt+kp/wjUs/rtHQyu?= =?us-ascii?q?hTVJfaiZnl8ABKOX6FopzW0x5mKeoBM4irZqpv920bJygCIHIDJcKWZOMg4yBx?= =?us-ascii?q?MDXS6VtCAtkPZd8BJ8rChwRUikzvWLFO+cvWAUeYBJ1vd88072r2xjc18YE/Uu?= =?us-ascii?q?r66z+5O4rf71dTMPNHlilsk8jCpOcNy/rIFCcX+WWZawRywi6a15mNEej//eGW?= =?us-ascii?q?x9HSSVwLBTM5U4ZSJDqD5QyoXPG1m4/zUgOJ8MPzhowxdF6ITHyrgKsFqrpMEf?= =?us-ascii?q?JHiijj0ThRDJr1iOyJs9qs82ZXslxHEJpt4h3FAqpfI457NQ7+lsa1Wkh2HjH/?= =?us-ascii?q?d93MdhoypOqWwf8B4+pgOEv4eY8bJRUEx7Xh6XVLSgtuSbj2vkuWXO8KYNtpVu?= =?us-ascii?q?nEr3BP5o56La8AIkSdroTwrjhUsFA2HBMpaLgoozNGdEnBhhFaVr3ot74Hjgsc?= =?us-ascii?q?Vd95tlFWGWKsJm0x+zrHWb5SjKmLB/wf6i+TQbAWU0V0LiN+RAu42JBpe7uvgf?= =?us-ascii?q?BHvX1Jkzh4oPgryTNmQgWzuTHipqIKwzIg+6q4uC8HuXNbUuWUiz3IBklbzPQW?= =?us-ascii?q?kaccDG7v6VOgb3kYd4v++aRpK8vm+4kg5XQ/fBoicjYJXeSlES7wib2HDpaIsN?= =?us-ascii?q?JGix6HoN/OYqOrLSgOKrQ9zgruR3p60gjemhZk6ncEQjWk7N85OYq8OMclxiyz?= =?us-ascii?q?GWjYdVYB+b1JsMrvtVERSOs5dFJhzH9l0seZWi0HXNbPFHotjgg4dWVEd4pO6R?= =?us-ascii?q?4EF6YyhDaFpa1G/hwJbzfVFYSl4ZPcncDS2XkyVd1q3H7ZprWZhpM2131og9F0?= =?us-ascii?q?4TCAuHQcc+zVSMFtDWL11ohB1ezyffOtvf4bSIF+0rSuTOcCMtW/+WuxwJhqVU?= =?us-ascii?q?ulxrMQHlWnNO8DwqzWUzyiSW2eWOSEb3KAnzAnPU7u/ROoNEE4aN9Wr08hNevP?= =?us-ascii?q?npxclw3hULNsQSWQoV7bzHA9Pu4BcgI2uZunexYUQ+ILYOicP+cuyuUkCFQQd3?= =?us-ascii?q?/JATd2C+iuvF6xnYh7Pm5t4Vn7Yevx8QDpLt+SFgMCEYHEsp574ea6SX6ZOX98?= =?us-ascii?q?0B1yO1F59+LeF1Qyte9cdI2cndrKiNR41u4FceliMSsntt4VhI1j9ZGe0N2Wfh?= =?us-ascii?q?HJ0pbyOdbVr+CDDPLByUQqZnpXUqEdYQPy+4U6IsA5VKPOErdDuhQcH6c6SoQ7?= =?us-ascii?q?N2jt7KF0MB9zcgnJabSshcnqoviEZoFapn/R6lIwIjzRuxgEyvyzVgx0cYylh2?= =?us-ascii?q?/1IJArXTJBrtttChR8EItIAcMAoBKtA4SIl6Gjl9+x50R6tvcEsaXuDvDK1cy5?= =?us-ascii?q?0JtqUplb5EyLOTPRC7dxgkRhkOu+mPDA0oP+Ccn6Y9MLSPB7QnLZar/BBoi+JC?= =?us-ascii?q?qOOtj9e0Fa7bGRy7d5UhSNZCDjQaWKriqkNO9r4U8j0Ix3YPLTzCAx77HcwNby?= =?us-ascii?q?YGVbqTm4oH6RMJtQ9kfKBfDfXx1IVfqF6nhqErMNYYvy6ugOLcQowMKA7Alr8D?= =?us-ascii?q?RCzMyFLrClrk/N3EJ7aJ3aIFLt2yY4QokKPA+/PFAtgWDDrHTdBm5QLs++Kcli?= =?us-ascii?q?mNyVFADi51FtmWExYW5MAnHoSsmVOWga3cK+eQKL+AVEAdYfn+64Z1Q4ubOqSe?= =?us-ascii?q?ZyIZhFmvultK8Bkdl3LyHAX9VaPy7KIL9xJDpRAf3FpEI0bR4cr7g1RoA1aICL?= =?us-ascii?q?IEwdLEiAySLyzQ3F0UDvadys1aCJLzgS8nVGybLFzDdNqxO+ufaDjc3pSKrZY4?= =?us-ascii?q?3uXP7OLColUSmXRTYoHkaq/leroOEJvOeeIWcDolAUZT+SCAETpqBzt9TQCHHc?= =?us-ascii?q?mfF7dp0QmP+aQzzwSDF/lKcqCSZEr1uDQ+ACFQbIa3/sm3RcuAi4Kf9X/HLlcq?= =?us-ascii?q?eUxqxLVOwKGoFMaOGWQ8PEefBCIDcljjcZOOO7f93GtbY500nIQHAfE6bS8V2R?= =?us-ascii?q?Uk+WTuabxzLxUoUfp5I0tTYw+tLMgi93FLzFP62Rpz6r7oG1jSWVtPbAVmYzeU?= =?us-ascii?q?w1geMDAG6HwBVaLmELFc0Vsln3QqGcf0ZMyG4pieV21h8OfwRzVHlu32ZTnPmj?= =?us-ascii?q?B8JZR1kUjHmyT/IYdlx3Ci0//VPZqjH1NMcNvcHVWn926qoHSY1bKuIhrobQJv?= =?us-ascii?q?g+2vEsiQl6rTQ6viPVNFZUigaI4uKEB65n7qFT7mk/ufdtVweARC2JITuP8Zav?= =?us-ascii?q?F88anXQmmnvjzceB+7o1OQ=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2FMBAA8rIdY/wHyM5BeGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgn0MAQEBAQEfgVgRjk6oRyiIJ1cBAQEBAQEBAQIBAl8ogjMbgiMCNxQgC?= =?us-ascii?q?wMDCQIXKQgIAwEtFR8LBRgEiGwNsEomAopCJo9VEQFoggAMgm4fBY8ufoshkWw?= =?us-ascii?q?CikWGJQKSd1h0HQcCEQgbDzqEPByBf1WFJ4IuAQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea10.nsa.gov with ESMTP; 24 Jan 2017 19:38:03 +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 v0OJbNYg010961; Tue, 24 Jan 2017 14:37:33 -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 v0OJbJN4160736 for ; Tue, 24 Jan 2017 14:37:19 -0500 Received: from moss-pluto.infosec.tycho.ncsc.mil (moss-pluto [192.168.25.131]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id v0OJbIHb010953; Tue, 24 Jan 2017 14:37:19 -0500 From: Stephen Smalley To: selinux@tycho.nsa.gov Subject: [PATCH] policycoreutils/setfiles: set up a logging callback for libselinux Date: Tue, 24 Jan 2017 14:39:41 -0500 Message-Id: <1485286781-29708-1-git-send-email-sds@tycho.nsa.gov> X-Mailer: git-send-email 2.7.4 X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Security-Enhanced Linux \(SELinux\) mailing list" List-Post: List-Help: Cc: alan.christopher.jenkins@gmail.com, Stephen Smalley MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Define a logging callback for libselinux so that any informational or error messages generated by libselinux functions are properly prefixed with the program name and routed to the proper output stream. Signed-off-by: Stephen Smalley --- policycoreutils/setfiles/setfiles.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/policycoreutils/setfiles/setfiles.c b/policycoreutils/setfiles/setfiles.c index 1a2d711..d767131 100644 --- a/policycoreutils/setfiles/setfiles.c +++ b/policycoreutils/setfiles/setfiles.c @@ -138,6 +138,19 @@ static void maybe_audit_mass_relabel(int mass_relabel, int mass_relabel_errs) #endif } +static int __attribute__ ((format(printf, 2, 3))) +log_callback(int type, const char *fmt, ...) +{ + int rc; + FILE *out = (type == SELINUX_INFO) ? stdout : stderr; + va_list ap; + fprintf(out, "%s: ", r_opts.progname); + va_start(ap, fmt); + rc = vfprintf(out, fmt, ap); + va_end(ap); + return rc; +} + int main(int argc, char **argv) { struct stat sb; @@ -151,6 +164,7 @@ int main(int argc, char **argv) const char *ropts = "e:f:hiIDlmno:pqrsvFRW0"; const char *sopts = "c:de:f:hiIDlmno:pqr:svFR:W0"; const char *opts; + union selinux_callback cb; /* Initialize variables */ memset(&r_opts, 0, sizeof(r_opts)); @@ -383,6 +397,9 @@ int main(int argc, char **argv) mass_relabel = 1; } + cb.func_log = log_callback; + selinux_set_callback(SELINUX_CB_LOG, cb); + if (!iamrestorecon) { if (policyfile) { if (optind != (argc - 1)) @@ -401,8 +418,8 @@ int main(int argc, char **argv) * we can support either checking against the active policy or * checking against a binary policy file. */ - selinux_set_callback(SELINUX_CB_VALIDATE, - (union selinux_callback)&canoncon); + cb.func_validate = canoncon; + selinux_set_callback(SELINUX_CB_VALIDATE, cb); if (stat(argv[optind], &sb) < 0) { perror(argv[optind]);