From patchwork Mon Jan 15 17:32:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Smalley X-Patchwork-Id: 10165065 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 F118460245 for ; Mon, 15 Jan 2018 17:32:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D6F11201BD for ; Mon, 15 Jan 2018 17:32:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CB5F1205AB; Mon, 15 Jan 2018 17:32:59 +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, HTML_MESSAGE, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from ucol19pa09.eemsg.mail.mil (ucol19pa09.eemsg.mail.mil [214.24.24.82]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 871C4201BD for ; Mon, 15 Jan 2018 17:32:58 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.46,364,1511827200"; d="scan'208,217";a="610784808" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.3]) by ucol19pa09.eemsg.mail.mil with ESMTP/TLS/AES256-SHA; 15 Jan 2018 17:32:57 +0000 X-IronPort-AV: E=Sophos;i="5.46,364,1511827200"; d="scan'208,217";a="8112783" IronPort-PHdr: =?us-ascii?q?9a23=3AZ33K0R/oWAZR1P9uRHKM819IXTAuvvDOBiVQ1KB6?= =?us-ascii?q?2+gVIJqq85mqBkHD//Il1AaPAd2Craocw8Pt8InYEVQa5piAtH1QOLdtbDQizf?= =?us-ascii?q?ssogo7HcSeAlf6JvO5JwYzHcBFSUM3tyrjaRsdF8nxfUDdrWOv5jAOBBr/KRB1?= =?us-ascii?q?JuPoEYLOksi7ze+/94HObwlSmDaxfa55IQmrownWqsQYm5ZpJLwryhvOrHtIeu?= =?us-ascii?q?BWyn1tKFmOgRvy5dq+8YB6/ShItP0v68BPUaPhf6QlVrNYFygpM3o05MLwqxbO?= =?us-ascii?q?SxaE62YGXWUXlhpIBBXF7A3/U5zsvCb2qvZx1S+HNsDtU7s6RSqt4LtqSB/wiS?= =?us-ascii?q?cIKTg58H3MisdtiK5XuQ+tqwBjz4LRZoyaOuB+fqfAdt0EQ2RPUNtaWyhYDo+h?= =?us-ascii?q?c4cDCuwMNvtaoYbgvVsDtRmxBQesCu3hyTFGmGP507Ai0+kjDA3L0hIvH8kVvX?= =?us-ascii?q?vOsNn4Lr0fXfypwKTKyzjIcvNY2S366IjNah0vvO2MUqxoccrR10YvER7OgEiV?= =?us-ascii?q?qYP/OzOV0voCsmiG5OdnTuKvl3AoqxlxojexwMcgkJLJhocPxVDA8SV23oY0KM?= =?us-ascii?q?a3SE5+e9GkEZ9QuzuGOItxR8MvWmdlszs0xL0BvJ60ZikKyJI/yhHDbPyHdYaI?= =?us-ascii?q?7gv4VOmNOzh4gmhpeLakiBu07EOuyfX8W9Gp3FtFoSdJiNnBum0X2xDN5cWLVO?= =?us-ascii?q?Fx8lq51TqRywze7vtILEM0mKbBNZIt37E9moAcvEnCGCL9hV/4g7WMdko+/+il?= =?us-ascii?q?8+HnYrL7qZCCL4J0kQT+Mrg2msy4HOQ4LhACX2iF9uS4073u5VH5T69Qjv03j6?= =?us-ascii?q?nZq4rWJdgbp6GlAw9V1Zwv6xCjADe9zNsUh3wHLFNBeB6fjojpPU/BIOzgAPui?= =?us-ascii?q?jFmhny1nyvDbMrH7HJnAIWbPnK38cbpl7k5T0gszzdRR55JODbEBJer+WlTvu9?= =?us-ascii?q?zcDx85NRG0wun+BNpm0YMeRGSPDbOHP6PJqlKI+uIuLPWMZI8Sojr9LeMl6OT0?= =?us-ascii?q?gX82nl8dY7Gl3YELZ3CgAvRmP0KZbGLugtcGF2cFpBY+TOzwh12ESjNTZXGyX6?= =?us-ascii?q?Q55j4hE4KmEZnMRpq2gLCb2ye7BJJWbHhcCl+QCXfoa5mEW/AUZSKQIM9uiCAL?= =?us-ascii?q?Vbu6S48m0xGutRH6xqFpLurQ5y0Zuons1MVz5+3PiBE+7zt0D96S02uVVWF7gn?= =?us-ascii?q?sIRyMq3KB4uUF90kmM3rNmjPxeFNxT+/RJXxw7NZHC0eN1Fcr+WgXbfteGUFym?= =?us-ascii?q?WMmpASktTtItxN8De1tyG9KkjhDFwiWlHbsVl72QCZMu7K3cxX/xK9x6y3bc26?= =?us-ascii?q?krl0MmTddXNW26mq5/8BDeCJPVk0qDjaanbrgT3CnI9Gif12WOp11YXBR2Uarb?= =?us-ascii?q?QXAVflHWosjh5kPeU7+uDqwqMgpHyc6eNKRKbsPmjVBYS/f/ItTfY3m8m2CoBR?= =?us-ascii?q?mWwLOMaZDle2QZ3CrGD0gFnBof/XGcNQgxHi2huX7RDCRyFVLzZEPh6el/qXK8?= =?us-ascii?q?Tk8y1AyKaklh26O0+h4Tn/CcTekc3qgHuCcgtTV7Akyx39TIBNqcvwBhZrlTYc?= =?us-ascii?q?sh4Fdb0mLUrxJyPoS6IKB4h14eaB96v1v02BVtC4VAitAqrHcwwwVuN62UylRB?= =?us-ascii?q?dymX3ZroIL3YNnHy/Ayza67Rwlzf3teW+qMK6PsmsVXupw+pGVQ//HVgydlayW?= =?us-ascii?q?Oc5o/NDAoQT53+Tlo3+wJ9p7HAbSk3/5nU2mF0Mamorj/C3MokBOU/yhm6eddQ?= =?us-ascii?q?LKKEFBTpHs0fH8iuKfUmm0OnbxIfJuxS87Q0P8y+ffucxKGrJPpgnC6hjWlf44?= =?us-ascii?q?ByyEGM9y1hSuPT3JYK2fKY3gyaVzvmi1ehqM/3k5heZT4OBmq/1TTkBIlJa6Jo?= =?us-ascii?q?YIkLE2auLNOtxthlnZHiR3tY+ESkB1Mc18+jYQCSYEDl3Q1MyUQXpmSqljeiwD?= =?us-ascii?q?xwjT4ptbaf3SzJw+n5bxoIJm9LS3dkjVfwIIi7lcoWXE62YAg1jBGl/1r1x7BH?= =?us-ascii?q?pKRjKGneWV1IcDXrIGx5Xauws7WDb9RJ6Jw2rSVdSP68bkyCSr7hvxsa1DvuH3?= =?us-ascii?q?BQxDAhcDGqoYn5kgdhiGKbK3Zyon/Zdtt2xRvF4tzTW+JR1CIcRCZkkTnXGkS8?= =?us-ascii?q?P96x8NSajZjDtvy+WHy7Vp1IaiTr052PtDGg6m13BB2zhfezmsfoEQIiyy/0y8?= =?us-ascii?q?FqVTnUrBb7eoTryaW6Pv57fklvHl/w8dZ1GoF5kos2i5EdwnwahpST/XUdi2fz?= =?us-ascii?q?Ns9X2aXkbHoCXTQL2cLa4BD52E1/KXKE34b5VnSGwst9ftW6eX0Z2iY878BMFa?= =?us-ascii?q?eV46dJnTBtolq5qwLRYORyniwHxfso9nEan/kDuBAxwSWFHrASAU5YMDT2lxSP?= =?us-ascii?q?69C+qLtYZHyzfri32ktzhsuhDKyerQFHQnr5fY0iHSBo5MVlLF3MyGHz6p3jeN?= =?us-ascii?q?TIbtIcqBuUkwzbguhWNp0xkOEKhSx5NmLhp3ElzPQ7jRN215GgoIeHM3lt/L6+?= =?us-ascii?q?AhNALj36fd4T+jXzgqZGhMmW2ZyvEYt7GjgQQZvoVuynECgJtfj9LAaOFyA8qm?= =?us-ascii?q?2HFrXBEw+f711mr33RHJyxMXGYOmUZx814RBaBPExfnBwUXDIik54nEACl2dfs?= =?us-ascii?q?cFl/5j8M5l70sB1Mxfx0NxPnSGfQuB+oaisoSJiYNBdW9htN51rRMcGF8u1zHj?= =?us-ascii?q?1Y/524oAyDMGObYR5EDWYTWkyLH1rjJKWh5cHc8+iEAeqzN/jOYLWKqeNATPqI?= =?us-ascii?q?wJWv0oVo/zmSKsWPInliD/o+2kVdR3x5HdrWmykXQSwNiy3Nd9KbpAu7+iBvoM?= =?us-ascii?q?Cw6vLrWB7o5YuKELZSP8tg9A2xgaeZLeGQnDx5KTFa1pwS2XDI1KIT3FkIiyFh?= =?us-ascii?q?bzOtC6gPtTbRTKLMna9aFwQbZzl9NcdS6qIzxA1NOcnbi97uzLF3kvs1B01CVV?= =?us-ascii?q?z7lcGjfdYKLH2lNFPbGEaLM6yLJTPRw87pfKy8UqdfjONItx23ojaWCFXsMSiG?= =?us-ascii?q?lzXzUBCvK+5MhjmBPBNCoIG9bgptCW/7QdLgcB20Ksd3jSUtzL06h3PKL3UcMS?= =?us-ascii?q?Ryc0NMqL2f9yVYjel+G2Nb6nppN+6EmzyW7+PAMJYZreNrAjhol+Jd+Hk10KBa?= =?us-ascii?q?4CZARPx0gyvSssVur0u9kuaR1jVrSgFOpShPhIKKu0ViJKrY+4JcVnfE5hIN8H?= =?us-ascii?q?6QBw4EptR/Ft3voKdQyt7VmKL0MjdC/Mre/dEACMjMNMKHLH0hPALvGD7VCAsF?= =?us-ascii?q?SSCkNXrEikNHjv6S7HqVooI9qpj2l5oEUqVbW0AtFvMGFkRlG8QPL4x2XjMrlr?= =?us-ascii?q?6bitUF6megoxbKRcVVpJbHWuiVAfX1JzaTlaNEaAcQwbPkMYQTMZX21FZtalZg?= =?us-ascii?q?goTFBVHdXddVoiJ/aA80pV9C8Hl6TmIo3ELkZRmh4HgJFf67hhQ2kBdxYfwx9D?= =?us-ascii?q?fw5Fc6PkbKpCw1kEUrg9XlhjGQfyD3LKirR4FWDDT7t0sqP5znRAZ1aBG9klZ/?= =?us-ascii?q?NDfYXb5RiaVvdXxzgg/GpZRPAeJcTbFDYBIIw/GYee8n0VBHpyWkwk9H/vfFBo?= =?us-ascii?q?FklAsxcp6srmhM2wR9Y94pPabQPrZGzkBMhqKSuS+lzvoxzxEFJ0kT6mySYjIH?= =?us-ascii?q?uEwTO7Y9Jiqo5PFj6QuMmztbYmgDSforruhs9kwjJ+SK1zjg3KJbKkCtK+yfKL?= =?us-ascii?q?uUtHXams6WQ1M/y1gImlJf8rhsy8cjdESVV1sxw7SNChQJL8vCKR1VbsZI8njc?= =?us-ascii?q?YzqOu/3XwZ1pJ4W9CvzoTeiWuaYQhUKkBhgmH4IN78QGBZSs30fYLdr9IL4C0x?= =?us-ascii?q?Ut6xzhJE+ZA/RRZBKLjDAHrtmkzJBp2YldJzcdAXhyMCis+rnXoQoqj+aZU9ct?= =?us-ascii?q?fncWRI0EOWwqWMeigS5Wo2xADCWr0uIe0AWN8iPzpiHXDDn6c9pveeyZZQ1yB9?= =?us-ascii?q?Gs+DU+8q+2iVjN/pXYOW76KcxousXT5uMCu5aHF/RUQKFhs0fdnolYQGCqU27P?= =?us-ascii?q?ENOuOpfwaoktYsbvBXqgVFywlS41Rd/rPNmxNqiInR3oRYFMvYaB2DAjNNOyGS?= =?us-ascii?q?8GFBd1p+AD4qV8ZQsZbJcgehHoth4xN6qmLAeWz9WiWWCtJiVKT/NH1+W1e6RX?= =?us-ascii?q?zzYwbu+90HYvVY81z++s/EEXWZ4KkA/Rxey4Z4ZESyjyGmZRewLVpSo2j2JhLP?= =?us-ascii?q?o9wv8jwBPUtlkRKyqLdOpoaGNYv9E8AleSIW5uBGQhWlGSl5bO7Am30r8O+Ctd?= =?us-ascii?q?mspb3vdesHjipJPfZiyjWLCzo5XPryUgdcQmo7F2MYH7PsSGtonRkSDEQZbMtQ?= =?us-ascii?q?2FVCq6F/tEldhKPCJXXuVHmWE/NcwBo4pB5lI7Vt0iKLxXFKksureqZCJ+DSEI?= =?us-ascii?q?1y8ZUJiP0SceguemwbTaiAmfcJAjMBwCv5VChtodUyF2YiMCqq+sTZ/Wl2qeRm?= =?us-ascii?q?gNPggT8RxG5BgcmY9oYuDl/I3IQYdCyjJMv/10UirLFpxp91ThSWGbmln4R+u/?= =?us-ascii?q?nOO3xw5Sy+js0tYDUh5lFUdd3/pWllcvKLxvLqkfpJTKsjyWekPmvWLtzuSmKU?= =?us-ascii?q?JfyMLOcV33EI7FtW3hUiIB4n0YX4lPx2/DFZ4KiQp2dL4rpElQIIChYkv+/zsk?= =?us-ascii?q?x4BzELmiW8GrwFIlrXgdSievFNpBDPpmv0zLVz1/ZJCrs47lO5RUQm9f4pGdrE?= =?us-ascii?q?1ZkEp1OS6j1ZVcM91N4iILXDVXuzqdpsaySMtZ1c91FJIMI9Z/u3bhGKxfIpSR?= =?us-ascii?q?pWM5uqD3wH/D5z88qEu6xCm0G6KgU+JZ+GgeFx41J2iCr0kgFPEg8mHM/VDRql?= =?us-ascii?q?p05ftUBqCTjUVtpzZwBpBOCSxT1X+/K1R8UWJLvPhEJ6TNa8xTXf0yagG1OxAk?= =?us-ascii?q?Ev4mxUOJ91lunXjleyxyqhda+yfFUgk2UikanKzgliAApcG8JzAaUY5IYis8YC?= =?us-ascii?q?vfLQKUhzxXtg5Fa052Q5AZHspF+7YD0ItI48XNVEesJjsBXBF5Kg041v9fmlJZ?= =?us-ascii?q?v0WDZSDRFwyoeujTshdvZ8eesNapLOjl/AdAko7oq+44+LkfS3CkhAGgT8vToJ?= =?us-ascii?q?P7tt2PqkSBbrz4M/GmbX/HUjfMkQi6ha04AJnS4yjTLA1bJoFgyXU6fJfhCXTE?= =?us-ascii?q?PQhdKqIfIEpbS751ZctareBdesBrZrwF+alzCRKbXhnvApCgrOFaLlbPQjTTNz?= =?us-ascii?q?2B8vejoY3J8LPdVfPtZteLx3baWaJ4Iol16T/nG7fwy4Be/lD62vB39kN1UVLG?= =?us-ascii?q?KTyOrMz9JgMX48mvblfivoc3EjzIHZh9i2ftxkVcd8oNWSKq7pUYyJRd6HnuVe?= =?us-ascii?q?J0yE/zsPdd97N884k4/6hpyduoJafVMflatFVoAhyQBgp06pUtHHJwSHpKb+8X?= =?us-ascii?q?NvjRYb8Zgtz0pODvCaMb8huV9PJFadHfPUHOhtG/Ci2ASRxDhAoBqyQVLhGb1/?= =?us-ascii?q?6en697U9ilqPP82kIw51i+Mh8Gw6xs5Yie/KqIv/XbbxzLzbgLQqLqXN/8rqww?= =?us-ascii?q?u0OO4v0pjLwOdXZzYw2pCugdUdMSyXn7wKA21y0sFdjDH7X69P5FSX05girqm4?= =?us-ascii?q?phEFUOBvMUAb2L8JxRnmclmuzZMtkWfb5HmmuUCBGrDKQNyX+x5CuROmVlhQvO?= =?us-ascii?q?0x7oS2Op8FD2tTN4QTfLz9r7kEpVV7y3CFxXXyW3OU53rimPPAvutNr4o6g16l?= =?us-ascii?q?85MnD8vtKXiGShIK9XH9H4JNGEJyk0oEkajJw3Rtyqw4wbGNy9INkL8H5kdfve?= =?us-ascii?q?93mrkzJdrKdbmore+N+a9u/QHXm6gK2Qs6+NyyxAyngkoVE/7citNvTJ592MX/?= =?us-ascii?q?So2HgeQjx6uwvARRG1rKLUr0waOEyMykfLm5cKMstf3XYmykHs/PIjT84r9AVC?= =?us-ascii?q?CobAYOsPpTToODvxwVuSeNw3WTeD3DtQBFL6C0F4GLI72GLyos3GiWvQ90cvRo?= =?us-ascii?q?lqeEztnQZ3AJkgKUIx9FgXxTIOEQkMaB+BFr6nGV/oLZAaWkgfdxuIwKK2eqAt?= =?us-ascii?q?3U182rmv/vPcbfRgB6oRMfZQlhWBnFlAGpMYq6IeQrN8e0NF9KHNuwjiD5PqUO?= =?us-ascii?q?ThlXUtK/K6WN1a8doet3s4+AmzXR2g6Y1M77wDkpCHarZEYYTQvMB790pn/SQA?= =?us-ascii?q?djBRjxh/gRK5VvocpOP67tjArpWo7ueuVKAwR+QY7BU0H35xj4fsj1Ajr9DX0P?= =?us-ascii?q?1cSo7PhYT87g9NOXiKt5je0xVmLuoOMY2rdq5693obPygeO24OPd2OZvkz+SBt?= =?us-ascii?q?Kivc50BCAs4XYdMYPdbNlh5UikLzRbFT7dDXGlmGBIdvb8oo9Xb4yCgp8ZsgVe?= =?us-ascii?q?bt8DC2Ko7Z71FROPNDiyJglMncq+gRwPrSDjUX4HaCZhhx3CyC0ZmMBOzq8eWK?= =?us-ascii?q?1t7US0sMHjQqXIdFODqC5QunS/KzlJXoTgyU7cvzj4gldE6KR3yxm6MFsr1XEe?= =?us-ascii?q?NbjyX20TdfGpryh/KPvNqm8HFXuUFfEIZv8R3FH71SPppnNhTjjcmnX1VyCCT5?= =?us-ascii?q?dsHVcBoupeWXy/wD4+V7LUT+Y5EULggDy7Lg5npfVhFuR6LuvlaFQeIRY8NrSP?= =?us-ascii?q?HDrnBV74JsMbMAPFiZpJz3szhJqVE2AAkyaL8zrzxXbVfOnAxLW6nuvL4Plwoc?= =?us-ascii?q?XcR/uUBSBWK6IHg+6CbfVaRJkKmRD+QY8jSNTqMUVUVlKSd+Qw6o15VvfLuphu?= =?us-ascii?q?pLsmRcniNyuPIqySBpRAOguS3woKIAwTAg96+2tDUPvXxIVeufnD3OCVpd0PQG?= =?us-ascii?q?l6EcBGj+6VakenkMcJPy4KV7JcTn7YQh7HA/YRItfiIYWeSgDzr9j7iPAoyJsd?= =?us-ascii?q?JTmASBuMPQYr+vNSISLKgyyQr/R3hh1QjThBRo8GsLQzW4698kIIS9Odo7ySez?= =?us-ascii?q?HGjbdUoM4rlXv8frsl4LVuQ2Y0t7wGp/ysiHWjENRMvXFmYpjwgkbH5JcI5C6R?= =?us-ascii?q?AGFKknnDKIsrNA/g4KfDfeCp6l9ZXIncfUxXk9Ss9nxmfXpq2GhZMq12Zom9Fu?= =?us-ascii?q?4S6Nv3QScfLXU8l2Dnj1yIhf1fT0Z++xveAfVItm1LOhXecZPca9/2u2xI5nWl?= =?us-ascii?q?ShxrQZA1q5LPEDyanGXCu/Tm2YQ+uLeXCWnzklKk7y+QWoLlovZcdEsUA9NurC?= =?us-ascii?q?hoZCmAD6ULJ0RyCQpVrFw2w5NeMVaRg6uIC9ewwFVOQRffSTJfAywP0iD1sBd3?= =?us-ascii?q?HIHTNsC++3rVGigpN2O3Bh4UXme+Ti7BrqMNyIGhkLCYTatIJ++eSmRmKdPn9t?= =?us-ascii?q?1BpyPE1q+OrED1QxsvVTc42NndjRm9t7zfQFeOlzPiEnvN4chJ5j45GO0MiWaR?= =?us-ascii?q?HR0oryJdbNr/icAv3fyVkqe25DXrodYAP1/Jk6PsUiVr3SB7RZuxMcCbI9QJw7?= =?us-ascii?q?OGf77Lt0Ix9rcg7NeLS0hdHnpueRaZRIp3/W71QwLCDHth0dy/y0SxJ0b5Srh3?= =?us-ascii?q?X0PZAxSShNr9p3ChtpBIFPAd8PrxK7A56In6G2k92x9Fl5u+8NqqX9Ee3K1NKl?= =?us-ascii?q?34VxWJha+EOLPDbNBKVxhERqkPiyiO/a0pbtEcPiZc8EVO9jT27Hb7/GGZ+/Ki?= =?us-ascii?q?iPOsLnYENG9aST0LdnXRWQfiz5WLCGtCK8PvV+/Uo70pB4fPbUzDE19LHb1t7y?= =?us-ascii?q?aH1aqyqgtnOJKoVQ7EbLBe3fWBJUT+CJ8GB7Eq0LPsPI87I0MNciycKQqyl67T?= =?us-ascii?q?JPy4PROamqrkbW1nVwQpLSLU3kwA4zRYgMPBmlN0Ywx2TeryKOL25bK52fNcR1?= =?us-ascii?q?gNuTRifo7k11lHBlMnVdF3LoSNHXIm0S38azdSWF8QtKC5AImOvhKh1wjbG7Ve?= =?us-ascii?q?Q9YsYNou6trrhS1I8wcyw=3D?= X-IPAS-Result: =?us-ascii?q?A2DOAgBi5Fxa/wHyM5BdGgEBAQEBAgEBAQEIAQEBAYM+A4F?= =?us-ascii?q?aJweEDIE5iV+Na4FeBYoah2CFUYISJgGFHQOETgdBFgEBAQEBAQEBAQFqKII4J?= =?us-ascii?q?AGCRwMDAQIgBBkBGx0BAgECCQEBBQMCCzMEAgIDAR4BEQEFARwGEwUDihIBAxU?= =?us-ascii?q?DjB6RHUCME4FtGAUBHCGCagWDXwoZJw1ZgSsBAQgBAQEBHAIGEoY/gVeBaYMug?= =?us-ascii?q?V2BDkQEhQaCRSABBJM8kCiCQYlDiUeCGYYdhAaHVJcRGSCBFyUBMoFQMhojUjK?= =?us-ascii?q?BeIJFDxyCBVqNDAEBAQ?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 15 Jan 2018 17:32:55 +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 w0FHWiwZ000984; Mon, 15 Jan 2018 12:32:47 -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 w0FHWb2U008404 for ; Mon, 15 Jan 2018 12:32:37 -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 w0FHWcAT000981 for ; Mon, 15 Jan 2018 12:32:38 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1DoBgBi5Fxa/3oWGNZdHAEBAQQBAQoBA?= =?us-ascii?q?YM+A4FaJweEDIE5l0qBXgWKGodghVGCFg+FNgKESgdAFwEBAQEBAQEBAWuFTAY?= =?us-ascii?q?jBBkBGx0BAwwGAw03AgIiAREBBQEcBhMIihIBAxUDjB6RHUCME4FtGAUBHCGCa?= =?us-ascii?q?gWDXwoZJw1ZgSsBAQEBAQUBAQEBAQEaAgYShj+BV4FphQuBDkQEhQaCRSABBJM?= =?us-ascii?q?8kCiCQYlDiUeCGYYdhAaHVJcRGSCBFyABN4FQMhojUjKBeIJFDxwZgWxajQwBA?= =?us-ascii?q?QE?= X-IPAS-Result: =?us-ascii?q?A1DoBgBi5Fxa/3oWGNZdHAEBAQQBAQoBAYM+A4FaJweEDIE?= =?us-ascii?q?5l0qBXgWKGodghVGCFg+FNgKESgdAFwEBAQEBAQEBAWuFTAYjBBkBGx0BAwwGA?= =?us-ascii?q?w03AgIiAREBBQEcBhMIihIBAxUDjB6RHUCME4FtGAUBHCGCagWDXwoZJw1ZgSs?= =?us-ascii?q?BAQEBAQUBAQEBAQEaAgYShj+BV4FphQuBDkQEhQaCRSABBJM8kCiCQYlDiUeCG?= =?us-ascii?q?YYdhAaHVJcRGSCBFyABN4FQMhojUjKBeIJFDxwZgWxajQwBAQE?= X-IronPort-AV: E=Sophos; i="5.46,364,1511845200"; d="scan'208,217"; a="174415" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.35]) by goalie.tycho.ncsc.mil with ESMTP; 15 Jan 2018 12:32:37 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3AvwSbOBSkS09+dREmKWzw7Clb+Npsv+yvbD5Q0YIu?= =?us-ascii?q?jvd0So/mwa6yYh2N2/xhgRfzUJnB7Loc0qyK6/mmATRIyK3CmUhKSIZLWR4BhJ?= =?us-ascii?q?detC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+?= =?us-ascii?q?KPjrFY7OlcS30P2594HObwlSizexfa5+IA+qoQnNq8IbnZZsJqEtxxXTv3BGYf?= =?us-ascii?q?5WxWRmJVKSmxbz+MK994N9/ipTpvws6ddOXb31cKokQ7NYCi8mM30u683wqRbD?= =?us-ascii?q?VwqP6WACXWgQjxFFHhLK7BD+Xpf2ryv6qu9w0zSUMMHqUbw5Xymp4rx1QxH0li?= =?us-ascii?q?gIKz858HnWisNuiqJbvAmhrAF7z4LNfY2ZKOZycqbbcNgHR2ROQ9xRWjRcDIyz?= =?us-ascii?q?bYQPAeoPM+hboYfju1QDtgGxCRW2Ce711jNEmn370Ksn2OohCwHG2wkgEsoTvn?= =?us-ascii?q?TIstr1LKcSXv6zzKLV0DvDaulZ2TP56IfWchEqvPaBXalsccXP0UkvFx3KjlOK?= =?us-ascii?q?pYz+OjOazOANs2yF4OtgTu+vhGsnpBtwojir3Msjlo7JhocMx13C6C53zoE1Jd?= =?us-ascii?q?iiR056Z96pCIdftyacN4t4W88iWH1ntzw8yrEcvZ60Zy4Hw4kkyR7Hc/GLbZWE?= =?us-ascii?q?7x35WOqPLjp0nmxpdKylixqv70Ss1PXwWteo3FtOtCZIkdnBumoT2xDO5cWLUP?= =?us-ascii?q?Rw80an1D2SzQ7c8PtELloxlafDK54u3Lowlp0LvEvNAyH7hFv4gaGIe0s+5uWk?= =?us-ascii?q?9vrrbq/4qZCCMo90kQ7+Pr4rmsOlAOQ4NhICX22a+eS4zLHj/Ev5T6tWjvAujK?= =?us-ascii?q?XVrZ/XKd4FqqO2GQNZzJgv5wyiAzu4ztgUhXwHI0hEeBKDgYjpIVbOIPXgAPek?= =?us-ascii?q?n1Sjji9rx/DYMb3nGJnNNX3Dn63lfbZ59UFdyBE+zd9a551OC7EBJOj/VVP2tN?= =?us-ascii?q?zdFhM5KRC7w/77CNVh0YMTQXmPDbGdMKPTt1+I++0uLvKQZI4VpDn9K/8l6+To?= =?us-ascii?q?jX8ig1ARZ6ap3ZwJaCPwIvMzGUSSYXP2jp8hGGYMsxF2GPbrg12LSzJkbEGyVq?= =?us-ascii?q?M66yoTAp6nC5vOXIagnPqK2yLtTbNMYWUTMUyBCXflcc2/Xv4IbC+Dapt6jjEc?= =?us-ascii?q?VbWnDZQk3BWquR7SxL9uL+6S8Sod48GwnONp7vHewElhvQd/CN6QhiTUFzl5?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0A/AwBi5Fxa/3oWGNZdHAEBAQQBAQoBA?= =?us-ascii?q?YM+A4FaJweEDIE5mSgFihqHYIVRghYPhTYChEoHQBcBAQEBAQEBAQEBaiiCOCQ?= =?us-ascii?q?BgkcGIwQZARsdAQMMBgMNAjUCAiIBEQEFARwGEwiKEgEDFQOMHpEdQIwTgW0YB?= =?us-ascii?q?QEcIYJqBYNfChknDVmBKwEBAQEBBQEBAQEBARoCBhKIFoFphQuBDkQEhQaCRSA?= =?us-ascii?q?BBJM8kCiCQYlDiUeCGYYdhAaHVJcRGSCBFyABN4FQMhojUjKBeIJFDxwZgWxaj?= =?us-ascii?q?QwBAQE?= X-IPAS-Result: =?us-ascii?q?A0A/AwBi5Fxa/3oWGNZdHAEBAQQBAQoBAYM+A4FaJweEDIE?= =?us-ascii?q?5mSgFihqHYIVRghYPhTYChEoHQBcBAQEBAQEBAQEBaiiCOCQBgkcGIwQZARsdA?= =?us-ascii?q?QMMBgMNAjUCAiIBEQEFARwGEwiKEgEDFQOMHpEdQIwTgW0YBQEcIYJqBYNfChk?= =?us-ascii?q?nDVmBKwEBAQEBBQEBAQEBARoCBhKIFoFphQuBDkQEhQaCRSABBJM8kCiCQYlDi?= =?us-ascii?q?UeCGYYdhAaHVJcRGSCBFyABN4FQMhojUjKBeIJFDxwZgWxajQwBAQE?= X-IronPort-AV: E=Sophos; i="5.46,364,1511827200"; d="scan'208,217"; a="8112769" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from unknown (HELO USAT3CPA12.eemsg.mail.mil) ([214.24.22.122]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 15 Jan 2018 17:32:33 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;575345c1-19aa-4ff6-9447-9cce667a46eb Authentication-Results: UKEL19PA21.eemsg.mail.mil; dkim=pass (signature verified) header.i=@gmail.com X-EEMSG-check-008: 28150002|UKEL19PA21_EEMSG_MP14.csd.disa.mil X-EEMSG-check-001: true X-EEMSG-SBRS: 3.4 X-EEMSG-ORIG-IP: 209.85.214.46 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BRAgCu41xahi7WVdFdHAEBAQQBAQoBAYNoAYEyJweEDIE5l0qBXgWKGodghVGCFoVFAoRKB0EWAQEBAQEBAQEBEwEBAQgLCwgoL4UkAwMjBBkBGx0BAwwGAwILNwICIgERAQUBHAYTCIoSAQMVjCCRHUCME4FtGAUBHIMLBYNfChknDVmBKwEBAQEBBQEBAQEBARoCBhKGP4FXgWmDLoFdgQ5EBIUGgkUgAQSTPJAogkGJQ4lHghmGHYtalxEZIIEXJgGCATIaI1IygXiCRQ8QDIIFIzeNDAEBAQ X-IPAS-Result: A0BRAgCu41xahi7WVdFdHAEBAQQBAQoBAYNoAYEyJweEDIE5l0qBXgWKGodghVGCFoVFAoRKB0EWAQEBAQEBAQEBEwEBAQgLCwgoL4UkAwMjBBkBGx0BAwwGAwILNwICIgERAQUBHAYTCIoSAQMVjCCRHUCME4FtGAUBHIMLBYNfChknDVmBKwEBAQEBBQEBAQEBARoCBhKGP4FXgWmDLoFdgQ5EBIUGgkUgAQSTPJAogkGJQ4lHghmGHYtalxEZIIEXJgGCATIaI1IygXiCRQ8QDIIFIzeNDAEBAQ Received: from mail-it0-f46.google.com ([209.85.214.46]) by UKEL19PA21.eemsg.mail.mil with ESMTP; 15 Jan 2018 17:32:31 +0000 Received: by mail-it0-f46.google.com with SMTP id c16so1710177itc.5 for ; Mon, 15 Jan 2018 09:32:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=0SpUnr4hm1Rx3lM3HpcXE95tSQjBzm+20FVHdiKpKCE=; b=SEDyHq3IozkIHUSXMzrcIPLEUDQne9Y8FfsXce3rKtG0CSfY/NBKodRYGRxASzuf6X pZcJZZ6YxbBxikNj+HUGPmJ61BplQMrr1PfzlYFNJFtn2VUkQHia9zJaComJ4bmgEKY1 MvBaO2f2itUSH/87mBYdLu9ke61GGzvxOybDY/shQfs0GfIFLgzFXjLK933BU6fGYI+1 pioFcEj4eFupmaB2rRS9DV1odV8SwJWuK/JQtb7UTuu6LRTREtoP210/Ro7Dn+hrbLXi uCf6PPrNWvq6kItOL81o5496J5bQvclOSSeQr/MDAGSWR0Kv+5ID4wVwnKEnR9V+iZbT MIpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=0SpUnr4hm1Rx3lM3HpcXE95tSQjBzm+20FVHdiKpKCE=; b=JRo6wuDSPXxZVh/k/O2dFHko+/ezU3NxvkSmCXj7uRPBzDeLWSZ50J/GBG99Xim5j5 E33tJ3zqJx3XGG2V3FrZ3LjYoAkfwKeQagTYGBGF8obmJGXKTkpkP1fBjc1NsnpcFPcs zV8Ee80yqyGd1f3VclYUWux/6RKdAOH9fX1rySdJ6HDEJu9ItcQK2V9ihPwGDLA+hJyh PYJlcGFANr3EwA+2fn2rYEUgS9oGTrYUGMQU5SZBRMZDHPgsvmlRV0mrGc7EiPpKvCmd R83A6HKK1J/zLZKAVsjgpg5z1GpJICI1jkzOG/9UqDzHPpRX4suAEghrvYCPwHqZVHrS EuTQ== X-Gm-Message-State: AKwxyteEdO51jLEgVFBRvZ0ZJcvxDDAqgmWIgUFkOuiDXewzAydUpLIn TAv35V0PG6gA75jrL9e9hFjBx9CRzT/m1LEkCR0= X-Google-Smtp-Source: ACJfBovkla5mnVXiQRDuLEDnwXRYssUTERaepl4koOhAmPOz+WwWMPvD90duAQ9sTuoLXtkx8gbaXEJLzOZDPSapzGE= X-Received: by 10.36.115.196 with SMTP id y187mr14739313itb.134.1516037549804; Mon, 15 Jan 2018 09:32:29 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.141.198 with HTTP; Mon, 15 Jan 2018 09:32:28 -0800 (PST) Received: by 10.107.141.198 with HTTP; Mon, 15 Jan 2018 09:32:28 -0800 (PST) In-Reply-To: References: <20180114153436.21916-1-richard_c_haines@btinternet.com> X-EEMSG-check-009: 444-444 From: Stephen Smalley Date: Mon, 15 Jan 2018 12:32:28 -0500 Message-ID: To: Richard Haines Subject: Re: [PATCH] libsemanage: Allow tmp files to be kept if a compile fails 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: Cc: selinux Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP On Jan 14, 2018 10:36 AM, "Richard Haines" wrote: Add new option to semanage.conf that allows the tmp build files to be kept for debugging when building policy. Would it be better to just retain the files by default if there is an error? Signed-off-by: Richard Haines --- libsemanage/man/man5/semanage.conf.5 | 8 ++++++++ libsemanage/src/conf-parse.y | 15 ++++++++++++++- libsemanage/src/conf-scan.l | 1 + libsemanage/src/direct_api.c | 21 ++++++++++++--------- libsemanage/src/semanage_conf.h | 1 + 5 files changed, 36 insertions(+), 10 deletions(-) struct external_prog *load_policy; -- 2.14.3 diff --git a/libsemanage/man/man5/semanage.conf.5 b/libsemanage/man/man5/ semanage.conf.5 index 8f8de55a..10cab65a 100644 --- a/libsemanage/man/man5/semanage.conf.5 +++ b/libsemanage/man/man5/semanage.conf.5 @@ -121,6 +121,14 @@ and by default it is set to "false". Please note that since this option deletes all HLL files, an updated HLL compiler will not be able to recompile the original HLL file into CIL. In order to compile the original HLL file into CIL, the same HLL file will need to be reinstalled. +.TP +.B retain-tmp +When set to "true", tmp directories (the sandbox at \fBstore-root/\fR[\fIpolicy-store\fR]\fB/tmp \fRand/or the final policy at \fBstore-root/final/\fR[\fIpolicy-store\fR]) will be retained after compilation to allow debugging of any build errors. Note that on a successful build the sandbox becomes \fBstore-root/\fR[\fIpolicy- store\fR]\fB/active\fR. +.br +The +.B retain-tmp +option can be set to either "true" or "false" and by default it is set to "false". + .SH "SEE ALSO" .TP semanage(8) diff --git a/libsemanage/src/conf-parse.y b/libsemanage/src/conf-parse.y index b527e893..f098e55d 100644 --- a/libsemanage/src/conf-parse.y +++ b/libsemanage/src/conf-parse.y @@ -61,7 +61,7 @@ static int parse_errors; %token MODULE_STORE VERSION EXPAND_CHECK FILE_MODE SAVE_PREVIOUS SAVE_LINKED TARGET_PLATFORM COMPILER_DIR IGNORE_MODULE_CACHE STORE_ROOT %token LOAD_POLICY_START SETFILES_START SEFCONTEXT_COMPILE_START DISABLE_GENHOMEDIRCON HANDLE_UNKNOWN USEPASSWD IGNOREDIRS -%token BZIP_BLOCKSIZE BZIP_SMALL REMOVE_HLL +%token BZIP_BLOCKSIZE BZIP_SMALL REMOVE_HLL RETAIN_TMP %token VERIFY_MOD_START VERIFY_LINKED_START VERIFY_KERNEL_START BLOCK_END %token PROG_PATH PROG_ARGS %token ARG @@ -95,6 +95,7 @@ single_opt: module_store | bzip_blocksize | bzip_small | remove_hll + | retain_tmp ; module_store: MODULE_STORE '=' ARG { @@ -268,6 +269,17 @@ remove_hll: REMOVE_HLL'=' ARG { free($3); } +retain_tmp: RETAIN_TMP'=' ARG { + if (strcasecmp($3, "false") == 0) { + current_conf->retain_tmp = 0; + } else if (strcasecmp($3, "true") == 0) { + current_conf->retain_tmp = 1; + } else { + yyerror("retain-tmp can only be 'true' or 'false'"); + } + free($3); +} + command_block: command_start external_opts BLOCK_END { if (new_external->path == NULL) { @@ -352,6 +364,7 @@ static int semanage_conf_init(semanage_conf_t * conf) conf->bzip_small = 0; conf->ignore_module_cache = 0; conf->remove_hll = 0; + conf->retain_tmp = 0; conf->save_previous = 0; conf->save_linked = 0; diff --git a/libsemanage/src/conf-scan.l b/libsemanage/src/conf-scan.l index 607bbf0b..e26c3494 100644 --- a/libsemanage/src/conf-scan.l +++ b/libsemanage/src/conf-scan.l @@ -54,6 +54,7 @@ handle-unknown return HANDLE_UNKNOWN; bzip-blocksize return BZIP_BLOCKSIZE; bzip-small return BZIP_SMALL; remove-hll return REMOVE_HLL; +retain-tmp return RETAIN_TMP; "[load_policy]" return LOAD_POLICY_START; "[setfiles]" return SETFILES_START; "[sefcontext_compile]" return SEFCONTEXT_COMPILE_START; diff --git a/libsemanage/src/direct_api.c b/libsemanage/src/direct_api.c index a455612f..5d2a443c 100644 --- a/libsemanage/src/direct_api.c +++ b/libsemanage/src/direct_api.c @@ -326,7 +326,10 @@ static void semanage_direct_destroy(semanage_handle_t * sh static int semanage_direct_disconnect(semanage_handle_t * sh) { /* destroy transaction */ - if (sh->is_in_transaction) { + if (sh->is_in_transaction) + semanage_release_trans_lock(sh); Is it safe to release the trans lock before deleting the sandbox? + + if (!sh->conf->retain_tmp && sh->is_in_transaction) { /* destroy sandbox */ if (semanage_remove_directory (semanage_path(SEMANAGE_TMP, SEMANAGE_TOPLEVEL)) < 0) { @@ -342,7 +345,6 @@ static int semanage_direct_disconnect(semanage_handle_t * sh) SEMANAGE_FINAL_TOPLEVEL)); return -1; } - semanage_release_trans_lock(sh); } /* Release object databases: local modifications */ @@ -1639,13 +1641,14 @@ cleanup: free(fc_buffer); - /* regardless if the commit was successful or not, remove the - sandbox if it is still there */ - semanage_remove_directory(semanage_path - (SEMANAGE_TMP, SEMANAGE_TOPLEVEL)); - semanage_remove_directory(semanage_final_path - (SEMANAGE_FINAL_TMP, - SEMANAGE_FINAL_TOPLEVEL)); + /* Delete sandbox unless requested by semanage.conf */ + if (!sh->conf->retain_tmp) { + semanage_remove_directory(semanage_path + (SEMANAGE_TMP, SEMANAGE_TOPLEVEL)); + semanage_remove_directory(semanage_final_path + (SEMANAGE_FINAL_TMP, + SEMANAGE_FINAL_TOPLEVEL)); + } umask(mask); return retval; diff --git a/libsemanage/src/semanage_conf.h b/libsemanage/src/semanage_ conf.h index c99ac8c7..f7bba754 100644 --- a/libsemanage/src/semanage_conf.h +++ b/libsemanage/src/semanage_conf.h @@ -46,6 +46,7 @@ typedef struct semanage_conf { int bzip_blocksize; int bzip_small; int remove_hll; + int retain_tmp; int ignore_module_cache; char *ignoredirs; /* ";" separated of list for genhomedircon to ignore */