From patchwork Fri Apr 7 20:44:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Iooss X-Patchwork-Id: 9670625 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 DEEF360364 for ; Fri, 7 Apr 2017 22:36:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D035724DA2 for ; Fri, 7 Apr 2017 22:36:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C2DB92861C; Fri, 7 Apr 2017 22:36:21 +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 emsm-gh1-uea11.nsa.gov (smtp.nsa.gov [8.44.101.9]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C173524DA2 for ; Fri, 7 Apr 2017 22:36:20 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.37,168,1488844800"; d="scan'208";a="4720131" IronPort-PHdr: =?us-ascii?q?9a23=3AbV+1tBDmywZaRp5PUjRGUyQJP3N1i/DPJgcQr6Af?= =?us-ascii?q?oPdwSPr6oMywAkXT6L1XgUPTWs2DsrQf2rSQ6/+rAzVIyK3CmUhKSIZLWR4BhJ?= =?us-ascii?q?detC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+?= =?us-ascii?q?KPjrFY7OlcS30P2594HObwlSijewZbJ/IA+qoQjTucUan5ZuIbstxxXUpXdFZ/?= =?us-ascii?q?5Yzn5yK1KJmBb86Maw/Jp9/ClVpvks6c1OX7jkcqohVbBXAygoPG4z5M3wqBnM?= =?us-ascii?q?VhCP6WcGUmUXiRVHHQ7I5wznU5jrsyv6su192DSGPcDzULs5Vyiu47ttRRT1hi?= =?us-ascii?q?gHLTo5+3zJhMJ2gqxQvRatqwViz4LIZY2YMud1cKHActMAXWdPXthfWTFPDI2/?= =?us-ascii?q?aIUADeQBPf5aooXgqVYBogexCwayC+P00TJImn370Lcm3+k7DQ3KwgotFM8Ovn?= =?us-ascii?q?TOq9X1Mb8fX/i0zKbUyjXDa+lZ2Szg44bLdRAhpuqMXaltesfWz0kvFh/KjlKU?= =?us-ascii?q?qYP/JDOZzOUNs2+c7+p7TuKikGsnpg5+ozS1wccskIbJi5sTx1vZ9it52J44Kc?= =?us-ascii?q?C3RUN0e9KpEIZcuzuEO4Z5XM8uWXxktD45x7Ebo5K2fSkHxI46yxLBd/CLaZaE?= =?us-ascii?q?7g7hWeuXPDx2nmhqeKiliBa36UWgz+r8WdSq31tStSpFl8XMtmgK1xzO9siLUv?= =?us-ascii?q?t98Vml2TaIzw3T9vtLIVo1larGMJ4t2KIwl5oPvkTDGS/6gkP2g7ONdko44OSo?= =?us-ascii?q?7uXnYrH+qp+dMY97lB3+P7wzlsGwDuk0KAgDU3WB9eii27Dv41f1TKhSgv0ziK?= =?us-ascii?q?bZsZTaJcoBpq6+Bg9Yyp0j5Ai7Dzen1tQYgHYGIEtedxKAkojpPU3BL+7jDfqk?= =?us-ascii?q?n1StkCtkx/DBPrH7BJXNNWLMnK3ufbZ69U5Q0BAzwsxH55JIFrEBJ+r+Wk32tN?= =?us-ascii?q?zeFBA5Lwy0zPzhCNhm1IMeXmSPAqqDP6PJrV+H+PgvI/KWaI8Sojb9JOAv5+Ty?= =?us-ascii?q?gn8hhV8dYa6p0IMVaHC6BPtpP0aZYWHrgtcHEGcKoBEzTOLuiF2fXj9cfGuyX6?= =?us-ascii?q?Qg5jEmEo6mCp3DRo+1irybwCi7BoFWZnxBCl2UH3bodoGEW/ISZyKIOcJhnCIL?= =?us-ascii?q?WqWmS487zx6urBX6y71lLuXK5iIYqYjv1N9v5+3cjRsy7yB7D9yB02GRSGF5hn?= =?us-ascii?q?4HSCMz3KB4p0x91kqP3LNmg/NGD9xT5vJIUgA8NZLGyex1FczyUBrbftiVUFam?= =?us-ascii?q?XsmmATYpQ90s398BeVx9Fs6+gRDE2iqlH6Ual6eXBJAu9KLTwWTxLd5ny3nazK?= =?us-ascii?q?khk0UmQsxXOGymh69/8A7TCpXMk0WdjqqqdKIc0DTL9GiZ12qOv0BYUBBuXqnf?= =?us-ascii?q?W3AQeFfWp8zj5kzeV7+uFagnMgxZxMGcMqtFcMfpjVRdRPr4INTReXixm2arBR?= =?us-ascii?q?aQwrODdpbldHsH0CXaEkgEnBgZ/WyaOggmGiehv2XeASRgFVL1eUzs9/VxqHKg?= =?us-ascii?q?TkIvygGKd0xh26Ou+h8bnvyQUfQT3qgLuC05sTV7AE69387KC9qHvwdhf79TYd?= =?us-ascii?q?A64Fdazm/ZtBZyPp+nL6B/nFIedB53v0z23RVtFopAidQqrG8tzAdqM62XzUlB?= =?us-ascii?q?dzKG0pDqIbDYMHX9/BW1Z67RwFHe386c+r0T5/Qgt1XjoAapG1I583VpydlV1G?= =?us-ascii?q?Cc5onRAQoJV5LxVUg29x1gqLHceCU94Z3b1WF0O6murjDCw84pBPciyhu4cdZQ?= =?us-ascii?q?KqeEFBPsHM0AHMijM/IqlEazbh0fIeBS8bQ4P8S8d/uJwKSrJvpvnCq6jWRb54?= =?us-ascii?q?Bwyl6M+DdhRe7JxZkFx+qV0ReAVzf5kFiuqNv3mZxeaTEUAGW/1TDuBJRNaa1q?= =?us-ascii?q?YYYLFWCuLtWxxtV/g57tX2BX9EW4ClwcxsCpYx2SY0b63Q1K2kQduWanljegzz?= =?us-ascii?q?xojzEpqbKS3DLPw+v+aBoHPXRLSHN+glfsJoi0id8aUVOsbwgokhuq/1z6x69B?= =?us-ascii?q?qKR4NWnTTl9CfzLqIGF6Tquwqr2CbtZL6JMpqiVXTP2wYUuERb75ohsa1T7jHm?= =?us-ascii?q?RFyTAgbzGqu5P5nx1mh2KGNnpzqmTWed1ozxfF+NPcXeJR3iYBRCRgkznXAVy8?= =?us-ascii?q?P9238tWOi5jDte6/Wnm6Vp1ObSbr1pmMtCyh5W1lGRe/hey8msX7EQgm1i/2z8?= =?us-ascii?q?FqWj/VrBb4eIXkzb62PvlgfklsGF/87Mx6F5p7kocsgpEQ3mQVio+T/XUZjWf5?= =?us-ascii?q?Kc9b1r7mbHoRWT4LxMbY4Av7101lNXKE3IH5WWubwst6Ydm1fH8W1jg678BQB6?= =?us-ascii?q?ee9KZEkjdtolqksQLRZuBwnikbyfQz83ManecJtxctzimHBLAdA1VYNzT2lxuU?= =?us-ascii?q?99C+sLlXZGG3fLiozkV+gNShAaqerQFdRHb4eo4uHSFq4cV5Kl7M12fz6o78ct?= =?us-ascii?q?nKcd0TrgGUkwvHj+VNMJI+jOcKhS55NmLlp3IlzfI7ggJ03ZyhoYiHMHti/Lii?= =?us-ascii?q?AhJCLT31YN4T+ivxgqlAkMaW2JqvHpp/FTkRWpvnU+6oGioItfv7LwaODCE8qn?= =?us-ascii?q?CDFLrRBwCf7ltmr3XKE52wOXGYOmQWzdJ4RBaHPExfmgcUXDckkZElCgCm3svh?= =?us-ascii?q?cF125joJ/F73tgNMyv50Nxn4SmrfoR2najMwSJeBMBpW8htN6F3OPMyY8O1zAz?= =?us-ascii?q?pY8YG7owyVNGOXfQJIAn8VWkacHVDsIqGu5cXc8+ifHue+NeHCYLuUpexbTfiI?= =?us-ascii?q?wZWv04t98jmWKsqPO2NuD/oh2kpMRXp5AdjWmy0TSywLkCLAd8CbpA2i9SJqtc?= =?us-ascii?q?Cw6vLrWB7o5YuUELZdK8lg+xWsjaeELe6Qiz5zKSxE2ZMU2X/I1L8f0UYUiyF0?= =?us-ascii?q?bTatCawAuDXDTKLRgK9XFAIbay1yNMtO9a082BVCOc/BhdPxzLJ4ieQ1C1hdX1?= =?us-ascii?q?z7hs6pfdAKI326NF7fHEaEKq+JKiPNw8H2faO8TqZdjORKuBKupzmXCUjjPi6M?= =?us-ascii?q?lzPxTRCgLflMjD2HPBxZoIyyaQ1iBW/nTNLncR27LMR3gSctwbIqmnzGL3UcPi?= =?us-ascii?q?Z4c0NMqL2Q8CxZj+5jFG1B9HplMPKElzyX7ubCNpYWqvxrAiJum+Jd+nQ6xKNf?= =?us-ascii?q?7DtYS/xthCvSstlurkm9kuaV1DpoShVOpShQhI+QpkVtI7vZ+YNPWXna5xIB92?= =?us-ascii?q?OQBAoWp9F9EN3gp7hQysTTlKL0MDpN6NPU/cQbB8jSM8+ILWQuPgHoGDHOCgsJ?= =?us-ascii?q?VzmrNXvQh0ZFivGd6mWVroQmqpjrgJcBULBbW0YrFvwEEUllG8QCL4lxXjMhi7?= =?us-ascii?q?GbjcoI6mG5rBjeXslauYrHVv2KC/X1NDmZlaVEZwcPwb7gMYQTMYj711Z4all9?= =?us-ascii?q?nYXFBUzQUstXoi1mcAA0o15A/2R5Tm02x03qcBit4GMJGf6ygBE2lhN0Yf4x+z?= =?us-ascii?q?f0/1c3Ol3KqTMzkEgxndXqnyuccDv2LKe+U4FZFTb0t1QxMpP8RgZ6cxe+nUp6?= =?us-ascii?q?OzfYX7hRladvdXh3iA/AvptCAfhcQrNebx8U3vyXZPIo0U9Aqiq9w09H/ujFCZ?= =?us-ascii?q?p4mAssb5Gss2pK2xh/Y94tOazQOK1Jw0BKhq2QpS+nyPo+wBUCKEYN626dYy8I?= =?us-ascii?q?uFYVObkhKSqo5vZs5hKCmjdZfmgDSeYqqOpw9kwhI+SA0z7g07lbJ0+sMOyfKa?= =?us-ascii?q?WZtHXems6MQ1M9zVkHmFdf/bhxy8sjdFCUV083xruLCxsJLdbCKR1Sb8dK6Xfc?= =?us-ascii?q?ZziOseTQzpJuJIiyDProTfWJtKcamUKrAhomH5kW7sQAApmt0FvULcH5I74Z0R?= =?us-ascii?q?8t/hjkJE2ZDPRVfxKGiCoIo9qhw5Bt0oldPCsSAXtmPCWs/LnXpRIqgOCZU9ss?= =?us-ascii?q?ZncaQ40EOWgsWMGjhy5ZuHdADTmw0u4DzgiN8SP8rDzKDDbgd9pjeOuUZRR0Bd?= =?us-ascii?q?Gy/jU/6ba5iVjW85XZPGz6OtJiusLV5eMdvZaHBOteTaNhvEfEh4lYW3uqXnbU?= =?us-ascii?q?EdGrI5jwao8sbcH7C3uhTlO/jDc1QNvrM9a2MqiEmwfoSphIsIODxjAsKde9Fi?= =?us-ascii?q?0CGxd3v+wD57h8ZA0ZbJo9fR7otx8zN6O4IAeAztqiWWCtJiVKT/NH1+W1e6RX?= =?us-ascii?q?zzYwbu+90HYgUpA6z+yw8U4RRJELjgrTyuuiZ4heSyf8AWZRewPRqiolj2JhLP?= =?us-ascii?q?o9wv8jwBPUtlkRKyqEdOhoaGNYod4zHVaSIHVwCmo/QV+Tl5HO7RWt378I+StR?= =?us-ascii?q?hthU0fBfvHj4oJDffCqmWLa3ppXNryogcd8mrrVqPoP9JMuLr4nRkSHBTJbOqA?= =?us-ascii?q?2FSzS1F+Bam9RKJyJYWvZIk3k/OcMaoYpB9VYxVsAmKrxAFaksp7SqaT56Ai4X?= =?us-ascii?q?1iIWSp2P0ycDguim3bvWjBCQcI4tMBYcqpVNnsMdUzJqYiMZvKKjTYPWl26YRW?= =?us-ascii?q?gLJwcT6R9M6hoZmIFtZO7o/I3GQYRQxD5RpvJ7TjHEFoJ091fhTGGZn0T4Qu27?= =?us-ascii?q?k+O1xQJS0O7s0t4DVR5lFEdS2v1blkQtKLB4MaUQuJDFsiOQf0PgoG3t0PemJE?= =?us-ascii?q?VWycDMbV33FpDFtW3nXSAH5X0UX5VAyG/BGpQWkgp5bqkrpFFNIICpekb++zIk?= =?us-ascii?q?yJ5zH7m9T8yrwUgqrWoeTSewD9VBE/1msE7QWDB9bZGnsonqO5VTQm9V+Z2SsV?= =?us-ascii?q?RZnV5sMyGn15VTNdtB4jkWXDhAuT+dpse9SNVf2c9qCJ8BOs1wu23gGKNCIpSR?= =?us-ascii?q?oGY7ur3uyn/Y5zAzq022xDOtFK+kV+hZ5XERGh01J2SCrUkiF+os8mHO8l/Ttl?= =?us-ascii?q?B74eJbCaaTjUVroDdwBZdOBi5X2nCjKlR8VnhGs+FBJ6TSfM1QWf4yZQWgOxYm?= =?us-ascii?q?D/4pw1SJ/V1onXf+eyFyuRFa9DrbXwkoTiQVg7DtmDMYqsG7OT8VVZNIbTM9by?= =?us-ascii?q?jbMQKXgyZXswhDa0tyQZAWHs5F+60H3YtT5sfCVUGsKSQeURx+Kg441OFQmVRF?= =?us-ascii?q?sEqGZSDXFRCoeurXsh1rYceRq9akLPTj8wddkIzntP03+r4eSHK4gQ2tWc7Rr4?= =?us-ascii?q?viud2QrEeOc734M+Kka3/bUDfMlQywhasjD5TS/SjTNxRUJoJnxnU6epjuF3TL?= =?us-ascii?q?PQhYKK0GPUZbU751acleqOBAe8BkYLoJ+bNqBh+fXRzvFpCgoOVEI1rOSznTND?= =?us-ascii?q?mO8uu6oY3P97PdUvTgataKx3nZX6J9Jo165iXjG7f2zY9e/VL72u1z+UxnSVjJ?= =?us-ascii?q?KTyBoc/lJgMM+smtaFXusYEuHTzLHph8inztyV9cd8APWS2l7IwYyI9F6Hb3Ue?= =?us-ascii?q?94ylPzsPFI+LZ59Yk6+KtpycCpJafINftVr0lnAgSOBgpw8pUhGm9/R3peYuUJ?= =?us-ascii?q?MvfeYbwZjdzyq+DwD6EX9AeV9PJHZtTaPEzBh82/Ci2GSRNeggcBqDkaLg+C2P?= =?us-ascii?q?6ZgaN0Ttylpefh0EI3/1e+NgIGzKxq5Yqc56WIovXYYgDMwrgCQKfmXMTzrq4j?= =?us-ascii?q?u0mK//0riKYOenBpYw2gCOUdVNQSxn3nzaAxySIjCd3DEqnl+P5eU3I5gjPglI?= =?us-ascii?q?x8H1oMHPMUBqCH/YNEnmc3g+bZLMEZcrhemmaTEh6pCr0CxmSt6yuZOmllhQzB?= =?us-ascii?q?3A/rTGOv9lD2qzR4QSzWw9fljEVVSqG9BV1OUCqxJU94rDSPMRLutNrzoqk17U?= =?us-ascii?q?c2Mmn+uNKMkmuhNqlXENfkJNyAOyk0uU4YjIEsRty1x48XA929IM0e8HtmdPvR?= =?us-ascii?q?93urkzNdo6dAn4fe5MCV9enQHXmklaKasK+BxDFfyng/plE/8cutNvTB6tyFWf?= =?us-ascii?q?io0HwRTyhnsQvbQxG1sqDbr0wTOUGTzEjEgogKMc9C3Xkk1kDm4/MuQMkv+wVf?= =?us-ascii?q?CInAYe8CpTHpNzfux1aQfc43XDGE0zRLBlL1DUV4GK8k1WL0p8LJkHfd9kYmRo?= =?us-ascii?q?ZuakPnggZ3AJ8gKUI371gXwDQMHhQRaRyBC7GoH0vlJ5MeVUcfcRSHwKS6eqAv?= =?us-ascii?q?0E1xw7Ov4fTebeliCKsNKPldlA+OnF5UGp4Mt60RXq58cUdH9KHLvgjiF5TnX/?= =?us-ascii?q?/+mHoxNPy6WNpV/twCuns5/Am/WwSv5otZ47YckpCIebZOYYLQs8Bk80dn+TkP?= =?us-ascii?q?ezRWjxh+lBO4X/oTpOLi4tjHqJqn8PuuVKI2SuoL8Bg7GnpxgIHtgFA5ptHXzf?= =?us-ascii?q?1TRpfSiYTl/wBHO2SKt5rC0xlgNeoOLJqmfK56+HUbOyceJ3wPPd2Ma/k/+iNt?= =?us-ascii?q?Kyvc51hDAsMKeNMZM9HAmRhOhU31RL5T9sTaGliCC4dwbcwo7HT4yCoz8ZQiVu?= =?us-ascii?q?bs8ji2JYrQ71tVJfNMkD1slM7epOgS2ffSFDIX7medaxdvxCON1YKABOvx/eWD?= =?us-ascii?q?ydHUS0kJHjUsXIdHOTqO4wqnSfSplJ/xSAOb9tfzgI4idEKXXnGxk74KsrxSHu?= =?us-ascii?q?5ciiX2xTxeFoHph/2Ls9qj8nZXtkZdHIZ18xLFBL1VPo9nNhTgismrWk98CzPw?= =?us-ascii?q?eM7KcBoupO2WxuAL7+VlKUT+YY4bIhQZy7P18ndVShVhSKT2v1mDR+4RYsVpSO?= =?us-ascii?q?/cpHBP9Y1gM7MPPESapJHyqzdIr1Y2ABMmaLAutTFac0jOkxdTW6nqpL4BhAwc?= =?us-ascii?q?UcR6uU9XA26wPnwx5ybfX6RPkKaREOAV8imUTqEWXEVnLjh+Qwis1JtzdLWnm/?= =?us-ascii?q?FHsmVbniJyu/Uq3DlmSwG6uSLyva4N3igg+L6gvjUbpXNFVvmekzvPCVhbzvQK?= =?us-ascii?q?iqccC3D45VOgYHkDaJby76RmJMTh84kh+Hc/YRQ4ci0YXOSgFTv/j6eVDYyOqt?= =?us-ascii?q?5cggCCuNnWZ7+pMScSLqg9yQ7kR3Vl0wjeggxn8G0QTzWk8d8rOYS9OcE+xiay?= =?us-ascii?q?HmjbblkM6LtTsMTtrV4LUPc2aVR5zWVhzMeHSCMNRMjUFmc7lAckb3tLcI5Z5R?= =?us-ascii?q?8cCaYoni6CvrNa8QEMfDfUDoOl95HfncfM3nk8Q8llxmbSpqCenZMq13tlm9Jo?= =?us-ascii?q?4SKUvnQdafDYWdd2Anfvzodf1fD+Z/K1v+AFSItnyKyhUPgGMsmi5Wu5xo5nWk?= =?us-ascii?q?qkxrQCBVq2LvUPxrDBUyeqUWeYQ/iEc3CQnzYlNU7//QWoLlwyaMpRs089M/fN?= =?us-ascii?q?hp1CmA3lS790QDufpUPDxmw5Lewabx42uJugewESSe4RZuucJespwPAlClsDdX?= =?us-ascii?q?zJHSxwC+Cot16hho57NGt84U/ie+Ti7hjmMMeOGhkDCYPVtYB++fqmRm+aIn9g?= =?us-ascii?q?yBpyPFVo9+fBCVs+q/VQc5GLndjfn957y/IKd+9xMS0hvd4egppj6Y6Q0MiQax?= =?us-ascii?q?HQwJHyJdXbovWDBv3fyEMqenpEXbUFewP14J46PsU4W73VErtVpxMcBbI1QJY5?= =?us-ascii?q?LWf+6Ll0LB9vcg7WfLm0jNflpuaKZptMuXDb9VMxLCbZux0G1PO0Vwh7YI6wi3?= =?us-ascii?q?X1OpAwSSpLr8dxBRt+AItPB8QAohKpAp6MgqG7isO+9F1htu8PsKrwFurK28qj?= =?us-ascii?q?04V2RZha6lSBPCzNC6lznkRlkuOyj+/H0pn1F8zvYssEVOxhTW7edr/GH5mwKi?= =?us-ascii?q?6UOs3iZUFK6bic36xlUh+JfiD2Q7KGtDG4NPVj+Ug7zo14fOzOzD0i9r3b3Nry?= =?us-ascii?q?Z3pHpie4tnOJNYFQ7FrNBeDEWBJUU/WF+n5/HaILdYv06PsOMds6zdiH/QZz6D?= =?us-ascii?q?VC0M2YI6muqUPC1V57dZLFI0vzxSk5QZMFLQ+8MUQym2/ZrGrSAXBHIci5Jslh?= =?us-ascii?q?mtGVDgbi50Npg2EienZBGnb0RdeWIWUb3tixaxGK9AJKCdYDmPW6eVA5tq20V+?= =?us-ascii?q?ZoPpRFmeO3tLQIi9ppLDvPRMdCNSHKMLB2JiZRDvnIpFUwYB4Lqbs1WoAuapWV?= =?us-ascii?q?PUMHNluAySP1zQvf3k30d8Cs2LyPICkI7nVN16jF3iRUpwmlpfaZhdXuUL/DY5?= =?us-ascii?q?7tRv7SMTQqVjWBSDQsFUam40yku/sZvPaCJ2cQvEwUaDqICAEPvqBvscTQDmjL?= =?us-ascii?q?lO1heZ0Kg+qaWzrxSC1jj6cyADxEtUWSTPoCDwXWaGXhgGVEsgy4OvBM5W7lb6?= =?us-ascii?q?GfxqdNQOwWDI5MfeGYTtbbYv1eOSknli8YOOe9eN3cqaw10lTWQmsFC6PI7kGR?= =?us-ascii?q?TFaKQvyAwDLmRYcVv48yuios4d/QmzF4HLnGP7aYvT6h7pC3gDyeueLASml+K3?= =?us-ascii?q?Ay1fkPBGiH3QloNHAPC9ZTvlrkBKGHeRViznUs3MRv0BgIcR87c3ppyWYeyPC8?= =?us-ascii?q?EcpdQEVSjWSpW+YuaQxnSjQq8hnZsUXJfdUctJWLFCdl/bwWRN9YdaEl?= X-IPAS-Result: =?us-ascii?q?A2FVBAASFOhY/wHyM5BdHAEBBAEBCgEBFwEBBAEBCgEBgn8?= =?us-ascii?q?pgWyObKguKIljVwEBAQEBAQEBAgECaCiCMyKCQQYBAjcUIA4DCQEBFykICAMBL?= =?us-ascii?q?RURDgsFGASIKYFFBAGtBSYCg2iHDIZOiRgRAWiFGQEEiSWGRY0OggeQRIsHhkZ?= =?us-ascii?q?IkzdYfQglFi1Jhl1zhwuCLgEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 07 Apr 2017 22:36:19 +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 v37MaHrJ006861; Fri, 7 Apr 2017 18:36:18 -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 v37MZ06q029330 for ; Fri, 7 Apr 2017 18:35:00 -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 v37MYxbJ006432 for ; Fri, 7 Apr 2017 18:34:59 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1A/AQAaE+hYciIeaIFdHAEBBAEBCgEBgyqCFY5sqFGJaFcBAgEBAQEBAhMBDAsLBiWFSAaBCVFXGYhKgUUEAa0HhBCHDIZOihKFGQWJJYZFjQ6CB5BEkU1IkzeBXCUWLYRUDIJGc4k5AQEB X-IPAS-Result: A1A/AQAaE+hYciIeaIFdHAEBBAEBCgEBgyqCFY5sqFGJaFcBAgEBAQEBAhMBDAsLBiWFSAaBCVFXGYhKgUUEAa0HhBCHDIZOihKFGQWJJYZFjQ6CB5BEkU1IkzeBXCUWLYRUDIJGc4k5AQEB X-IronPort-AV: E=Sophos;i="5.37,168,1488862800"; d="scan'208";a="6009911" Received: from emsm-gh1-uea10.corp.nsa.gov (HELO emsm-gh1-uea10.nsa.gov) ([10.208.41.36]) by goalie.tycho.ncsc.mil with ESMTP; 07 Apr 2017 18:34:58 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AP8aV/BOD4CHZHqJAxDAl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0LfX7rarrMEGX3/hxlliBBdydsKMazbKJ+Pq5EUU7or+5+EgYd5JNUxJXwe?= =?us-ascii?q?43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRp?= =?us-ascii?q?OOv1BpTSj8Oq3Oyu5pHfeQtFiT68bL9oMBm7rwrdutcLjYB/Nqs/1xzFr2dSde?= =?us-ascii?q?9L321oP1WTnxj95se04pFu9jlbtuwi+cBdT6j0Zrw0QrNEAjsoNWA1/9DrugLY?= =?us-ascii?q?TQST/HscU34ZnQRODgPY8Rz1RJbxsi/9tupgxCmXOND9QL4oVTi+6apgVRnlgz?= =?us-ascii?q?oFOTEk6mHaksx+grxGrhyvpBJxxIzbYI+OOfZiYq/QZ88WSHBdUspNUSFKH4Oy?= =?us-ascii?q?b5EID+oEJetWt4j9qEcJrRu6HwasH/7kxDxPhn/xxq06yPkqHAbA3AwhA90Ot3?= =?us-ascii?q?DUo8/uNKsIUOC1y67IzS7Yb/5N3Dfw54fJfgomofGWUrJ9aMzcwlQsGQPdllic?= =?us-ascii?q?tJLpMjeP2ugQr2SW4PBsWOyzh2I9pQx8rSCjy8QxhoXTh48Yy0rI+ThnzIopP9?= =?us-ascii?q?G0VlJ3bNyiHZBNrS+VLZF2TdknQ2xwuCY11LkGuZmjcSgPx5Ur2gTTa+SAc4iM?= =?us-ascii?q?4hPjSPieLit4hHJjebK/nguy/la6xu37TMm0305GritDktbSqnAAzwHf5taDR/?= =?us-ascii?q?dn40utxTmC2xrd5+1YO0w5m6XWJ4YkwrEql5oTtUrDHjXxmEXzlKKYa1kq9PW0?= =?us-ascii?q?5+n/YbXquoKROpFshwzwKKojgsm/DOs3MwQUWGib4+u82aXl/U34XLpKifk2nb?= =?us-ascii?q?PCsJzAJMQboam5AxRO0os48Bm/CCqm0NIEknYZN1JJYheHgofmOl3UJ/D4F/i/?= =?us-ascii?q?j0y2kDh33/DGIqHhApLVI3jYjrjhebd960hByAs81t1f+5JVBa0BIPL0QEPxss?= =?us-ascii?q?fYAQUjPwy7xObnFoY16oRLQm+LA6mEIIvOoFSI4aQpOODKa4gL6xjnLP1wwf/l?= =?us-ascii?q?inswghc8eq6yxtNDbnGzGfBvOAOYZn33mf8ETXdMuRAxGr+5wGaeWCJeMi7hF5?= =?us-ascii?q?k34Ss2Xdqr?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0FTAADmEuhYciIeaIFdHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgn+CFY5sqFGJaFcBAQEBAQEBAQIBAhABDAsLBiUygjMggkMGgQl?= =?us-ascii?q?RVxmISoFFBAGtB4QQhwyGTooShRkFiSWGRY0OggeQRJFNSJM3gV0lFi2EVAyCR?= =?us-ascii?q?nOJOQEBAQ?= X-IPAS-Result: =?us-ascii?q?A0FTAADmEuhYciIeaIFdHAEBBAEBCgEBFwEBBAEBCgEBgn+?= =?us-ascii?q?CFY5sqFGJaFcBAQEBAQEBAQIBAhABDAsLBiUygjMggkMGgQlRVxmISoFFBAGtB?= =?us-ascii?q?4QQhwyGTooShRkFiSWGRY0OggeQRJFNSJM3gV0lFi2EVAyCRnOJOQEBAQ?= X-IronPort-AV: E=Sophos;i="5.37,168,1488844800"; d="scan'208";a="5747135" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from mx1.polytechnique.org ([129.104.30.34]) by emsm-gh1-uea10.nsa.gov with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Apr 2017 22:34:57 +0000 Received: from localhost.localdomain (81-66-120-207.rev.numericable.fr [81.66.120.207]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id DA246564677 for ; Fri, 7 Apr 2017 22:44:57 +0200 (CEST) From: Nicolas Iooss To: selinux@tycho.nsa.gov Subject: [PATCH 3/6] libselinux: make process_boolean() fail on invalid lines Date: Fri, 7 Apr 2017 22:44:28 +0200 Message-Id: <20170407204431.8572-3-nicolas.iooss@m4x.org> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170407204431.8572-1-nicolas.iooss@m4x.org> References: <20170407204431.8572-1-nicolas.iooss@m4x.org> X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Fri Apr 7 22:44:58 2017 +0200 (CEST)) X-Org-Mail: nicolas.iooss.2010@polytechnique.org 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: MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP When security_load_booleans() calls process_boolean() to parse a boolean definition, process_boolean() returns a successful value when it fails to use strtok_r() (e.g. when there is no "=" in the parsed line). This leads security_load_booleans() to use uninitialized name and/or val when setting the boolean into the policy. This issue has been found using clang's static analyzer and is similar to the one which has been fixed in libsepol with commit 76f8c04c197f ("libsepol: make process_boolean() fail on invalid lines"). Fix it in the same way. Signed-off-by: Nicolas Iooss --- libselinux/src/booleans.c | 58 ++++++++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/libselinux/src/booleans.c b/libselinux/src/booleans.c index ba9d9348e2c7..49452756ffb2 100644 --- a/libselinux/src/booleans.c +++ b/libselinux/src/booleans.c @@ -342,30 +342,42 @@ static int process_boolean(char *buffer, char *name, int namesize, int *val) { char name1[BUFSIZ]; char *ptr = NULL; - char *tok = strtok_r(buffer, "=", &ptr); - if (tok) { - strncpy(name1, tok, BUFSIZ - 1); - strtrim(name, name1, namesize - 1); - if (name[0] == '#') - return 0; - tok = strtok_r(NULL, "\0", &ptr); - if (tok) { - while (isspace(*tok)) - tok++; - *val = -1; - if (isdigit(tok[0])) - *val = atoi(tok); - else if (!strncasecmp(tok, "true", sizeof("true") - 1)) - *val = 1; - else if (!strncasecmp - (tok, "false", sizeof("false") - 1)) - *val = 0; - if (*val != 0 && *val != 1) { - errno = EINVAL; - return -1; - } + char *tok; - } + /* Skip spaces */ + while (isspace(buffer[0])) + buffer++; + /* Ignore comments */ + if (buffer[0] == '#') + return 0; + + tok = strtok_r(buffer, "=", &ptr); + if (!tok) { + errno = EINVAL; + return -1; + } + strncpy(name1, tok, BUFSIZ - 1); + strtrim(name, name1, namesize - 1); + + tok = strtok_r(NULL, "\0", &ptr); + if (!tok) { + errno = EINVAL; + return -1; + } + + while (isspace(*tok)) + tok++; + + *val = -1; + if (isdigit(tok[0])) + *val = atoi(tok); + else if (!strncasecmp(tok, "true", sizeof("true") - 1)) + *val = 1; + else if (!strncasecmp(tok, "false", sizeof("false") - 1)) + *val = 0; + if (*val != 0 && *val != 1) { + errno = EINVAL; + return -1; } return 1; }