From patchwork Tue Mar 28 21:41:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Iooss X-Patchwork-Id: 9650547 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 E724F601D7 for ; Tue, 28 Mar 2017 21:43:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DD4A9283F3 for ; Tue, 28 Mar 2017 21:43:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D12C42841C; Tue, 28 Mar 2017 21:43:34 +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 (emsm-gh1-uea11.nsa.gov [8.44.101.9]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1E0CD283F3 for ; Tue, 28 Mar 2017 21:43:33 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.36,238,1486425600"; d="scan'208";a="4387100" IronPort-PHdr: =?us-ascii?q?9a23=3AvupEnRV2ZvvEFrC5WSQXJwUdIGDV8LGtZVwlr6E/?= =?us-ascii?q?grcLSJyIuqrYYhaAuadThVPEFb/W9+hDw7KP9fuxBCpQv93Z6TgrS99lb1c9k8?= =?us-ascii?q?IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUhrwOhBo?= =?us-ascii?q?KevrB4Xck9q41/yo+53Ufg5EmCexbal8IRiyrQjdrMobjIptJqot1xfCv2dFdf?= =?us-ascii?q?lRyW50P1yYggzy5t23/J5t8iRQv+wu+stdWqjkfKo2UKJVAi0+P286+MPkux/D?= =?us-ascii?q?TRCS5nQHSWUZjgBIAwne4x7kWJr6rzb3ufB82CmeOs32UKw0VDG/5KplVBPklC?= =?us-ascii?q?EKPCM3/2HNjsx7kbxVrhSvqRdix4LYeZyZOOZ7cq7bYNgUR3dOXtxJWiJBHI2y?= =?us-ascii?q?coUBAekGM+laoYn9v1kDoQawCAajGOzhxSFHhmTt0K0m0eksCx3K0RY8E94Qtn?= =?us-ascii?q?nfsdX7NL0VUeCw1KTG1TTDYO9R2Tf58ofIaQ0qr/KLXbJ3asrR0lQkGgTDjlWR?= =?us-ascii?q?tYPlODeV2f4Ws2SB7upgUuWvi3U8qwxqpziiycgthpPOhoIPxVDJ7CN0y5s2K9?= =?us-ascii?q?2gUEN3fNGpHZRKuyyaKod6WN0uTm52tCog17EKoZ22cDUQxJkmxhPTceGLf5aU?= =?us-ascii?q?7h75SuqdPTV1iXR4c7ylnRmy61KvyujkW8mx11ZFszRKn8HXtnAIyxzT8s+HSu?= =?us-ascii?q?Zh/ku52TaAyQTT6uZcLEAoj6XbMZ8hwqMrlpYJrUTCHjP5mEXxjKOMcEUr5vOo?= =?us-ascii?q?5Pj9brXjp5+cM5d4igD4MqswhsyyGfk0PwcBUmSB+emwyafv8VP2TblUlPE6j7?= =?us-ascii?q?HVsJXAKsQaoq65DRVV0oEm6xunFDepztAYnXgBLFJYdxOLlpPmO1bTIPD+Efiw?= =?us-ascii?q?nU+snSx3x/HGIrLhApLNImLFkLf6Z7lx8UFcyA0tzdxH/ZJbFqkBIO7vWk/2rN?= =?us-ascii?q?HYDBg5MwquzOb7CNVyzIUeVHmNAq+eNqPStEWH5vkzI+aSfo8VoyzxK/8/5/7h?= =?us-ascii?q?lXU5g0MSfbG13ZsLb3C1BvZmI0eDbnXwgdcBCmAKvgw/TOz0k1CCXzpTZ2u9Xq?= =?us-ascii?q?0n+zE7Dp6mDZrZSoCqmryB0z+xHodKaWBeFlCMDXDoep2KWvcNbCKSJ9FukiYf?= =?us-ascii?q?WLivVYAuyBautBXgxLp/NOrU/S8Yuoz/29hp/eHTkgsy9TNsBcSHz26NV310nn?= =?us-ascii?q?8PRzIuwa9wvUl9ylCF0ahknvBVDsJT6O1TUgc7NJ/cyOp6B8r0Wg3fYteDUEym?= =?us-ascii?q?Tcm+ATEtUtIxxMcDbFthG9q4lBDOxDalA7gQl7OXHpM06b7c02L3J8lj13bMzL?= =?us-ascii?q?MhgEU+QstTKW2mgbZy9gjSBo7OlUWUjKOqdaAF0C7M8meP12yOs1tCUA5zUKXF?= =?us-ascii?q?Q24QalHQrdvn+kPIV6WuBqg/Mgtd1c6CLbNHZcPxjVpcXvfjOc/ebnmpm2iqHx?= =?us-ascii?q?aIx6iMbJLue2oHwCrSFlIIkwcJ/XaJLQI+HDuuo3rCDDxyElLie03s8fNkp3O9?= =?us-ascii?q?UkA0zhqKYlZk17qt+x4ZnOecSv0I3r4evychsTp0Fk6n393KE9qAuxZhfKJEbN?= =?us-ascii?q?M++lhH1mXZtxFmM5yjNa9ihVkecxlts0PpzRV3BZ1KkdI2o3My0ApyNaWY3Utb?= =?us-ascii?q?eDyFx5DwO6PYKnPp8R+1d6HW30vS0NGM+qcA8P44sUnsvBm1Fko+9HVqy9lV3G?= =?us-ascii?q?WY5pXOCwofSpbxUlsr9xh9orHVeDMx54TO1X1jKaO0qCPN28o1BOs5zRatZ8xf?= =?us-ascii?q?MK2eFA/1CM0aG9OjKPcsm1iuYBMEOfpd9KguM8OgafSGxLahPPx8kzK+kWRH/I?= =?us-ascii?q?d931qC9iVmTu7Iw4gKw+uD3gacSTfzkk2hvdvqmYBBfz0SGXC/ySf8Do5LeqJy?= =?us-ascii?q?ZZoLCXupI8Cv2tVxmoPiW39C+16nHF4JxMipeR+OYFPnxg1QyV4boXq5liuk1z?= =?us-ascii?q?Z0iS0mrrKD3CzSxOTvbBwHOm9PRGlmk1jsOpO5gMoEU0iyaAgljhyl5Vz1x6JD?= =?us-ascii?q?vqRwM3HTQVtUfyjxN2xiTKqwuaaeY85I8pMkqzlYUOS7YVCcRb7wuB8a0yLlH2?= =?us-ascii?q?RE3jA7cCumupLjnxx1kGidNmp8rGLFecFswhfS/NjcRf9K3joaXSV4kifYBly9?= =?us-ascii?q?P9mv4NWVmIzOsvumV2KgUJ1TcDXkzZiauCu9+2JqHQW1n+qvld3/DQg6zSj72s?= =?us-ascii?q?FwVSXPqBb8Zpfk176mPuJgcEhlH0T869dmFYFliIcwg4sQ2XcCjJWP4XUHiXvz?= =?us-ascii?q?Mclc2a/mdHoCXyMLw9rP7Af/wkFsNXWJx4blVnWaxMtsfNy6bn8Q2iI6889GEq?= =?us-ascii?q?GU46JYnSFtuFq3sRrRYeRhnjca0fYu62AVg+cSuAc2zSWSHLYSHVJePSPyixSE?= =?us-ascii?q?9de+rL9YZGy3a7i/yFJ+ncy9DLGFugxcRnD5dYo5EC9u6MVwLVLM3Gf16o76ZN?= =?us-ascii?q?nadcgTuQGMkxfck+hVL4o8luIQiip6PWLwpmEqy+8njR1uxJ26spKIK2N38KK+?= =?us-ascii?q?GB5YOSX/Z9kP9TH1kaZegsGW0pi1Hpp8BzoGR5ToTfenET4Is/ToKRqOGiUmqn?= =?us-ascii?q?iHAbrfAROf6EB+onLXCZ+rKnWXK2cBzdp4QhmdOFJQgBoPUTUnhZ42CBqqxNf7?= =?us-ascii?q?fEdi4TAR+0T4pQdSxeJmMBn/SGjfqxmyZjcyVpefMAJc7hte6EfNLcye8uVzEj?= =?us-ascii?q?lW/pK7qgyNNmubZwFTAGEHREOLGlfjPqO06tnY6eiYAei+IOXSbrWSs+BeUO2I?= =?us-ascii?q?xZ232It84zmMLtmPPmVlD/Aj30pMR3R5G8DHlDUTVywYjTjCYtWdpBii5i13td?= =?us-ascii?q?yw/+7zWA3x/4ePDaVdMcl38RCsnaiDL/KQhDp+KTtAzJMA33HJxKIa3FEIjyFu?= =?us-ascii?q?cDmsHK8auiHRSaLcgKhXDwQUaylrLstH87o83hVROc7ckt712KR4geAoBFdeT1?= =?us-ascii?q?PhnN2pZcsRI2ymLlzIGEOLOK6BJT3RzMH9ebm8RqFIjOVIqx2wvi6WE0n5PjuZ?= =?us-ascii?q?jznpTwuiMe9NjCGBJxxepI+9chdrCWf5StLpdhy7P8VzjTEsxr00nHzKP3YGMT?= =?us-ascii?q?dga0NNsqGQ7SRAj/VnBWNO9WRqLe+FmyaF6OnVMZcWvuV1DStqje5a5246y7RN?= =?us-ascii?q?5iFeWPN1gDfSrsJpo1y+ieaA0T1rUB5PqjZQmIKLpl9uOb7H+ZZcQ3rE5wwC7W?= =?us-ascii?q?GRCxQMuttkBcbitLxQy9jViaLzMy1O8tzO8ssAHMjUL8SHPGAmMRrzFz7eFBEF?= =?us-ascii?q?QiKzNWHDm0xdl+mf9maPoZgksJfsl4QBSqRAWVwuDPwaFF5qHNMcL5dsRD8kl6?= =?us-ascii?q?CUjNIQ73qksBbRXNlavozAVv+KGvrvKTmZjb5CZxYT3Lz3M58cNozh1ExkcFV6?= =?us-ascii?q?m57KG0XIV9BXviJhdhM0oFlK8HVmVGIz1Fjqah2z73IIEv60hgA5ig17Yes39T?= =?us-ascii?q?fs50w4Jl3FpScql0kxg9rliyiLcDHtNKewQZ1WCy3sukgtNZP7Rhx5bRe1nU1l?= =?us-ascii?q?KjjEQalej6FndW91iw/RoodAGflZTaJYehAQ3u2Xa+8u0VtCtiWt3VVH6vfdCZ?= =?us-ascii?q?t+iAsqdoahr3FA2gJnctE4PqnQJK1HzlhemK2OojOo1uA2wA8bOUkB6mWSdzAU?= =?us-ascii?q?uEYQLLkpOzKo/vBw6QyFgzZDfnYDWOAuov9x9UM9PP+Azz763L5FMUCxNO2fI7?= =?us-ascii?q?mfu2feic6CWkkw2V8Ql0lZ4bh21t8uc1CKWEA00rSeDQ4JOtbCKQxOdMVS9WLT?= =?us-ascii?q?cjuJseXD2ZJ1JZuyF+DyQe+IqqkUnlquHBw1EIQU8sQBAp6s3VnFIsfgKr4Fzw?= =?us-ascii?q?gi6xrvJFWEF/lGYgyEkC0Ao82ly593x4ZdLCkHAWphKSW3+qrXpggyjfWeRtg2?= =?us-ascii?q?fHYaUZYfNn8tQsK6gTRZv3NODTmszO0W1BWC7yX9piTMDDjwddxja+mIZRl0Et?= =?us-ascii?q?G55S0/87SqiV7Q6pjROnr6Osp4td/A8+MVvYiHBuhPTbZnsEfchpNYSGawX27L?= =?us-ascii?q?DN61IYL/a5M1YdzoDXa6UVy+izUvQ8f3ItmtMrCCgRv0SoZMrImbwDcjONe5Fj?= =?us-ascii?q?EZARd/uecD5aN7ZQAYbJo7ZwPoux45N6ylLweSys+uTHq1KTtKU/lfyv23Z6dJ?= =?us-ascii?q?wCoob++6zmYgT54hwuar9k4NQY0FgQvFxfa/fYVeVzb8GmBFcQXVuSU5j3RhNv?= =?us-ascii?q?o1wuonwxPIq1kdPCqNdOx1aGxJpN48BVSKIXpqEGY4QUGTjZbb6A62w78S5zdd?= =?us-ascii?q?n8pT0eBdrHj+v5rfYDWwWKyrqZTYqDcvbdkmoqJrKoPvOM2Gu43CnjbHVpnfrh?= =?us-ascii?q?WFUDKmF/pdgtVfOiZYQPhUlm47IcMGvIpA6Uw2Vsc4PbNCE7IjprGwZjpiFCIS?= =?us-ascii?q?wzIZW5mG3DMcnue2w6HamQuIcJQ+LBwEt41PjcADXC5weS4RvrKsV5vImG+eUW?= =?us-ascii?q?gEOh0T7ARW6AIHjI9wcfjv4JDUQ59U1z5Wv/V0XzPEFpl19lv7TmWWjkb9SPi6?= =?us-ascii?q?juOmwxldzPP23dkdQhJ/DlJdx+lOnEsyNL53M7UQvpLNsjKQb0P6umPtx/emJF?= =?us-ascii?q?lWzc3UbEX2ApPYu2TmTiAS/mYZSpNIyHHaCZsdiRF5aLoxqFVKPo+mZl705yY4?= =?us-ascii?q?yIRxA7m4Sceryk4/rXkcXSeqFMFOBvp6sFLNQjJlfY6kqJHkO5VUTW9Q/Jydq1?= =?us-ascii?q?hZkEVxPS6204BcK8RX7j4KQjdPvS2XvMGuR81bxc92E5gML89xunvnBKxEOJmR?= =?us-ascii?q?o3g3urP1yX/U4DE8v0mkyzqtAaO4SPhZ/2IGEAUzO2ueslUvD/cr8mrK6F/NqE?= =?us-ascii?q?10/+FBCriMlkhxoTd9HpFSBjlSz3ylKUp8TGVeueVANKvVa9BcQ+U1ZRK3Ohw+?= =?us-ascii?q?E+Im0FKN/U5qmHf2fTBythFa+i3GWAk0TTcagrHomTIEq8GnPSQVS5VHbDk7aC?= =?us-ascii?q?fFMQ2bkzhNvBlDc0FqR4wZAtFd9rEUx4tb5MzCSVq3JCEEWxxjOAQ40eZflUFd?= =?us-ascii?q?sUWYfzzdAhSydfrVtB14Y9uRptazLPvl5AdHlp/nsOcg+qUfQH2mnBagQczCo4?= =?us-ascii?q?/5rdKGrE2Oe7nkM+eke3/OUCDMjQyshbcjF5TK/zLcMBBBJJl+1HUpeoXuBnDT?= =?us-ascii?q?PRReOa0bI1RUVbpgZdVBuOBaaNdueLwV9q91GhKHWhTvFZStrPlBMFneXinRID?= =?us-ascii?q?ua8uOhu4LT8aLSRvX6asyK2XnHX7p9Po1m5jnjB7fqzYhe91Lt1fdj6kx2VVrL?= =?us-ascii?q?Pz2Podn6OgwL48yieVf4sZ0yATPaGpFwn2TxxktYbcoYXzWq8IgEyJNe8HvwU/?= =?us-ascii?q?x33VXzsOJI67lp8o0347d3yciqO6vdNfNavlJ5DRSOAAVl6IktCnBlR29Neu8R?= =?us-ascii?q?NOvRfaMBgMD2sOD3C7YY5wCJ++FCctvHIFzBmtOjBT6CTxxEgB0BpiQeLgeG0P?= =?us-ascii?q?6FgaB0Q96/peflwkIt/0S+LhkewbBx/4eL5LSHq/LMYhvMybgERrLqSdntrrQt?= =?us-ascii?q?vEOS4eMrlKIUdmxyeQ2nH/AXVtQByWf40aAq0SUsHtveELLm4vFOTG82njT6lJ?= =?us-ascii?q?xnGFUWAPwUF6KR/YtChmc4h/DZNtoOf6BAgGmPDxmkEqQGyXGx9SuaO2xlggzK?= =?us-ascii?q?0xHsQGO88F72ojV+QSvX1dvjlVBVVravD0dIQyWpIVN4sC+IPAfwttr4o6I17E?= =?us-ascii?q?8sMmzjqd2CinCsOK9NEM35P9ycJjM4pFQJg50tXtavw5wUGcKhINcN93Fzdv3e?= =?us-ascii?q?62ewni9ApadHgpDS4sCT+vXZB3mvlbaaq6mXxDBF1nc4oUw/6sq+Of3U4N2KWf?= =?us-ascii?q?uo3X4LTyhjowvBQwK1qrvDolASOEyEzEDLmIgQMdFCx3U410bm5O84QNIo7whe?= =?us-ascii?q?E4nNZvwYqTD0Ijv0zk6VY8grWSmGzztXAlX1HEFkF6cm3GL/otnJlWvQ+l0vXY?= =?us-ascii?q?RwbFDohR1pAIU+NUIt6UIYzjAFEQcTdRCRFKuoClj9LYsYSUgDbgyK3Lyheqcy?= =?us-ascii?q?3UB+2b2v6/HOYux7HaoCLO5djhSJnFhZBJ0ZrbEeTKh7e19H+67dvhLiBJT/X/?= =?us-ascii?q?j6iXowMuW4QsJb8cAcrHYi5xiwRhq+5pdZ7rYbjp+IerRCYZfSoMB2911n6iIX?= =?us-ascii?q?dixRnBh/iAu0UeEdpe/5+NfUrIGl6v2wW6YxWeoY6wI4B2Nkj5v/mFoju83Y1/?= =?us-ascii?q?9ASo3JjoTy6BtCI3+RuIfUyRZ8K+sOK56zfLl66nUHIzMTKG4JPdWLdfYz+TJt?= =?us-ascii?q?MC/U51xYGMwAf9QYPNDCmQpMkE3mRKlT9tbHGl+fE4pzb9on73brxzA1/5o8Vf?= =?us-ascii?q?zg6DyvKZDE8V5NO/JDjCNxlNPNv+UV2eDdCDQL7nmZZRl1xTmCy5qXB/bz4+qM?= =?us-ascii?q?0tfUWE0CHiIsVIddPjWC8xS9RuWpjJXpTh+U6sjrjZIibkKfWHixk74DsqlSCu?= =?us-ascii?q?NPlyT73jdfFoDpnf2VqMCj6HFKtlFdFoZ88wHFEr1FPppnIRT4itWrRk9kCyvw?= =?us-ascii?q?Ys7UbAQhuPaWxuoX5+V+Nlf+apEbIh0e1rL68mBZTg1wR77qplyZR/4eZMN6SP?= =?us-ascii?q?PYqXBY8Y1gJLEJPFiBo5zqqTBEqEsoDw8tab8wqCFad0bVkQ1RRan0or4BhREG?= =?us-ascii?q?Xd5/p0BMBXq6OHgi6DrfSaRVkK6RBeQJ/TWRVKMBT15lPT95QxOx3JVueqWmne?= =?us-ascii?q?pbsmxYgix9oOIm0zt8RBuzoSfsvb4C2So8+LGkszUMoXlFTuKYkyfUBlVM0u8H?= =?us-ascii?q?jaIdC3n471yzfmUDbYX14Ll9JsTg7pMt43IhbhU/ZycGR/ivCznsj6OUBYyCqN?= =?us-ascii?q?1ciwKWuMXVdLO9MCccOLI8yRLlWnh83RPTnBlt8GQRRDWv8sUoJIKnOcYq3iCo?= =?us-ascii?q?A3TUdE4Q4qNVt8v8rVwLTOw2aVNn2mlszsiHRikQRMPSGmc1jw4kaX5HcJJC8h?= =?us-ascii?q?IaCagogiiSsalC4w4UYS3YEoK79YnMhc3Iw2UyTc92xmLKoa2InpIq0GN/lNNy?= =?us-ascii?q?9SOOvGkSePHZU89rGXj/zIBfyfbxZ/+1qOAIVJNmyKi9UP8FKsSj+3W52JtkWk?= =?us-ascii?q?+h3bkfEUC2MOkdybfHSSulT3OXWfiTeWiWgzk5KlLy5QWvLlAvZ8dKq0g9M+Xc?= =?us-ascii?q?iZ5Ykw3sSqh0RiKWpV/a0GMvK+UaeBwquI2/YQwFUPYRZ/SAJegp2PA+ClsMbn?= =?us-ascii?q?/RHStxD++2sEKtk5ZgNnVl4EX6ff7t/R78PNuVABkEHpbQroRt9vyiWmKBJXhg?= =?us-ascii?q?wQVuPEl18ufSDEgxtu5AfJaSg9fQg8530egbePdxKSc9oMIcmpp/6YmI18eHaR?= =?us-ascii?q?TRzpfxJdHWpfiVGP/fwF4pemFdVLoWfwX16588PtEnR73ZBaFZsggEBagmXJwh?= =?us-ascii?q?MH/8+7pqIwN1bg7cf6+0gs3tpuKXeptUuWHZ4U8qICfboR0DxeS+TRZnYJCym3?= =?us-ascii?q?XyPJcwSypZr91qDhtpBpFPGs0HrwqjDZ6Zg6S7i9i2+0NhpeAFrbDwCvfR1NSi?= =?us-ascii?q?3oVxWZda6VaMPDbLC6lhml5lgfiqgvfczpnxDtvved0aW+h/Q27FcqHJE56+Kz?= =?us-ascii?q?KPP8L8flBJ86SY0L1nSBmRYzr5X6Wevi2+KPpk+Vk7ypB/fOfLwj0t96vb2Nru?= =?us-ascii?q?aG5FvSqjqH+JNIdF7FPUH+DeWAhUSfWd+mZ/AaIXdZf09PsJMdE6x9ic5xd84S?= =?us-ascii?q?9a0MuBOaehtVPM2kNnepLHNkvmxTg2VZMMIBuhLUsmmXXZpWjFAXRAMsikLtFg?= =?us-ascii?q?gNKUDhzr+klwlnghZmpAGmrzWdeRInMW28Okaw2M8wJHFdEDn/S4eUQgrK29Vf?= =?us-ascii?q?FoOolZmeWtrLgHishmKyXORMhcIiHRI7h6MDVNDuXPulcoeAALs6AvVYouZpiB?= =?us-ascii?q?PlkHMEGexiP21gTCzEL0e8ar1KaTLyYc6m9HwK7d0ThQuwm5vu6Ugsj5X7/FbJ?= =?us-ascii?q?H2XfjSMC0+WzGERDQyF1im+VOlu/oCofqZLn0TolcOYiKdEAQTvLxgrcDMDm/P?= =?us-ascii?q?nu1uZJ8Ki+qZWyD3UyJ1j7cyBiBXtUCMRPoDCAbWb3/9gGZGvgytOONM92r/b7?= =?us-ascii?q?KE3qpVR/AWAoxUf/2WWdTXYupeJzY2mTUdI+u8YdncoKwi0lLJUGsVCa/I+0OC?= =?us-ascii?q?TESOWPyT2yrrXZkJv4gzoico+NfQnihtE6TSPrafvCWj8oiigyadp+LeV3MhY0?= =?us-ascii?q?svgOINGGOB2gVPKHkYC9EJv0HgWrWAZ0hJ1H01iO9j2AQBeBptXX10031XnfG9?= =?us-ascii?q?GstDRV4SkmyuXOUMbEprAzMo4U+K/grybMQCucDUQW9e8qABSY8DI/Y15onXP7?= =?us-ascii?q?EQz+o30z58piw1rTmdXBthiVee/q7RGr9s7qFT7mk/ufdtVweARC2MXHLAz9+A?= =?us-ascii?q?CslIwS516VHj0NHP9rRrNbBdo4hiRlYNBjltDtWB7XZGS26ii1j6hAqyADnLeG?= =?us-ascii?q?FR2z0MPyFQM78twg=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2FQBACS19pY/wHyM5BdHAEBBAEBCgEBFwEBBAEBCgEBgwA?= =?us-ascii?q?pgWyOZKgwKIkqVwEBAQEBAQEBAgECaCiCMyKCQQYBAjcUIA4DCQEBFykICAMBL?= =?us-ascii?q?RURDgsFGASIIYFFBAGwGSYCg2iGb4ZOiRURAWiFGQEEiR6GQ4x/ggaIIIgcin6?= =?us-ascii?q?GQkiTIlh8CCQWLEmGWnOHJIIuAQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 28 Mar 2017 21:43:32 +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 v2SLhTXc031072; Tue, 28 Mar 2017 17:43:31 -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 v2SLgdGp054408 for ; Tue, 28 Mar 2017 17:42:39 -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 v2SLgbIN030851 for ; Tue, 28 Mar 2017 17:42:39 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1DvAgDN19pYhyIeaIFdHQEFAQsBgyuCFY5kpByEN4kvVwECAQEBAQECEwEBAQoLCQgohUUGgQlRVxmIQoFFBAGwGYQQhm+GTooPhRkFiR6GQ4x/ggaIIIgckUBIkyKBWyQWLIRRDIJGc4lSAQEB X-IPAS-Result: A1DvAgDN19pYhyIeaIFdHQEFAQsBgyuCFY5kpByEN4kvVwECAQEBAQECEwEBAQoLCQgohUUGgQlRVxmIQoFFBAGwGYQQhm+GTooPhRkFiR6GQ4x/ggaIIIgckUBIkyKBWyQWLIRRDIJGc4lSAQEB X-IronPort-AV: E=Sophos;i="5.36,238,1486443600"; d="scan'208";a="5996173" Received: from emsm-gh1-uea11.corp.nsa.gov (HELO emsm-gh1-uea11.nsa.gov) ([10.208.41.37]) by goalie.tycho.ncsc.mil with ESMTP; 28 Mar 2017 17:42:39 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AGdcepxKMv1+mLqd/C9mcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgRI/zxwZ3uMQTl6Ol3ixeRBMOAuq8C27Sd6/mocFdDyK7JiGoFfp1IWk1Nou?= =?us-ascii?q?QttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZr?= =?us-ascii?q?KeTpAI7SiNm82/yv95HJbQhFgDqwbalxIRi3ogndqtQaipZ+J6gszRfEvmFGcP?= =?us-ascii?q?lMy2NyIlKTkRf85sOu85Nm7i9dpfEv+dNeXKvjZ6g3QqBWAzogM2Au+c3krgLD?= =?us-ascii?q?QheV5nsdSWoZjBxFCBXY4R7gX5fxtiz6tvdh2CSfIMb7Q6w4VSik4qx2ThLjlS?= =?us-ascii?q?UJOCMj8GzPisJ+kr9VrhyiqRJ4wYHUbpqYOOZicq7HYd8XX3ZNUtpXWidcAo28?= =?us-ascii?q?dYwPD+8ZMOhAronyu1wOrR+kCgm3GejhyThIhnjt3a0hzu8sFgfG3A08ENIJtH?= =?us-ascii?q?Tbts71OL0TUeCyy6nI1i7DYuhT2Try54nEaBchoeuDXb9pd8fa1EohFxvdg1mN?= =?us-ascii?q?t4DoOymZ2vkRv2WU9eZtW/6jh3Qppgx+ujSixdoghpPIi48U0FzI6Dt1zJovKd?= =?us-ascii?q?GmVEJ2Y9ipG4ZKuS6ALYt5WMYiTnlouCkkzr0Gvoa2fC0FyZg63RLfc/uHc4yI?= =?us-ascii?q?4xL/SumePTd4hHRkeLKmmha971KsyurmVsm7yFpKryxFncfQtn0VyhDf9MyKRu?= =?us-ascii?q?Fg8ku91juDzQ7e5v1eLU06mqfXM5shzaQxlpoXv0TDBCj2mEDugaGLaksq5/Sk?= =?us-ascii?q?5vz8YrTnupOSKpd5hw/+PKk2n8yyDus5PhIJX2iB9uSxzLvj/UzlT7VNiv05iL?= =?us-ascii?q?LZvIrbJcQcoa65GBRV35045Ba4Ejem1sgXkmccLF5ffRKKgIfoN0vJIPDiAvez?= =?us-ascii?q?m06snytzx/DaIr3hBY3ALmPdn7flfLZ97VNcyQUowNBD55NbFrEBIPXpVk/3r9?= =?us-ascii?q?zXFAU1MwOzw+b5W51B0dYFVGaOBLKJGL/Dul+PoOQ0Kq+DY5FGliz6Lq0D5vXp?= =?us-ascii?q?iXYi0X4aerKylc8RaXu/Gv19ZUSeZmH3qtJdASENpAVoH7+is0GLTTMGPyX6ZK?= =?us-ascii?q?k7/DxuUI8=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0HYAQCS19pYhyIeaIFdHQEFAQsBGAEFA?= =?us-ascii?q?QsBgwCCFY5kpByEN4kvVwEBAQEBAQEBAgECEAEBAQoLCQgoL4IzIIJDBoEJUVc?= =?us-ascii?q?ZiEKBRQQBsBmEEIZvhk6KD4UZBYkehkOMf4IGiCCIHJFASJMigVwkFiyEUQyCR?= =?us-ascii?q?nOJUgEBAQ?= X-IPAS-Result: =?us-ascii?q?A0HYAQCS19pYhyIeaIFdHQEFAQsBGAEFAQsBgwCCFY5kpBy?= =?us-ascii?q?EN4kvVwEBAQEBAQEBAgECEAEBAQoLCQgoL4IzIIJDBoEJUVcZiEKBRQQBsBmEE?= =?us-ascii?q?IZvhk6KD4UZBYkehkOMf4IGiCCIHJFASJMigVwkFiyEUQyCRnOJUgEBAQ?= X-IronPort-AV: E=Sophos;i="5.36,238,1486425600"; d="scan'208";a="4387060" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from mx1.polytechnique.org ([129.104.30.34]) by emsm-gh1-uea11.nsa.gov with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Mar 2017 21:42:38 +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 3BD375646B8 for ; Tue, 28 Mar 2017 23:42:37 +0200 (CEST) From: Nicolas Iooss To: selinux@tycho.nsa.gov Subject: [PATCH 2/7] libsepol: make process_boolean() fail on invalid lines Date: Tue, 28 Mar 2017 23:41:47 +0200 Message-Id: <20170328214152.17545-2-nicolas.iooss@m4x.org> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170328214152.17545-1-nicolas.iooss@m4x.org> References: <20170328214152.17545-1-nicolas.iooss@m4x.org> X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Mar 28 23:42:37 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 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 load_booleans() to use uninitialized name and/or val when setting the boolean into the policy. Rework process_boolean() in order to report errors when a boolean definition is incorrect. This issue has been found using clang's static analyzer. Signed-off-by: Nicolas Iooss --- libsepol/src/genbools.c | 59 +++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/libsepol/src/genbools.c b/libsepol/src/genbools.c index c1f540558bf1..d79433531f76 100644 --- a/libsepol/src/genbools.c +++ b/libsepol/src/genbools.c @@ -34,31 +34,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) { - ERR(NULL, "illegal value for boolean " - "%s=%s", name, tok); - 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) { + ERR(NULL, "illegal boolean definition %s", buffer); + return -1; + } + strncpy(name1, tok, BUFSIZ - 1); + strtrim(name, name1, namesize - 1); - } + tok = strtok_r(NULL, "\0", &ptr); + if (!tok) { + ERR(NULL, "illegal boolean definition %s=%s", name, buffer); + 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) { + ERR(NULL, "illegal value for boolean %s=%s", name, tok); + return -1; } return 1; }