From patchwork Wed Dec 21 18:21:01 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Iooss X-Patchwork-Id: 9483607 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 ECC7B601D2 for ; Wed, 21 Dec 2016 18:23:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E38CE28458 for ; Wed, 21 Dec 2016 18:23:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D887A2847B; Wed, 21 Dec 2016 18:23:30 +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 28BAE28458 for ; Wed, 21 Dec 2016 18:23:30 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.33,384,1477958400"; d="scan'208";a="1768139" IronPort-PHdr: =?us-ascii?q?9a23=3AgnozQREIcP5lSsk+yj89e51GYnF86YWxBRYc798d?= =?us-ascii?q?s5kLTJ79pMu6bnLW6fgltlLVR4KTs6sC0LuN9fC6Ej1fqb+681k6OKRWUBEEjc?= =?us-ascii?q?hE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAAjwOhRo?= =?us-ascii?q?LerpBIHSk9631+ev8JHPfglEnjSwbLd8IRmsrgjdqMYajI9gJ60s1hbHv3xEdv?= =?us-ascii?q?hMy2h1P1yThRH85smx/J5n7Stdvu8q+tBDX6vnYak2VKRUAzs6PW874s3rrgTD?= =?us-ascii?q?QhCU5nQASGUWkwFHDBbD4RrnQ5r+qCr6tu562CmHIc37SK0/VDq+46t3ThLjlS?= =?us-ascii?q?kINyQ98GrKlMJ+iqxVqw+lqxBm3oLYfISZOfxjda3fYNwaX3JMUMZPWSJcDI2y?= =?us-ascii?q?bIwBAOgPPeZArYTxulUDohSiCgejGuzv0SRFhmP00KAgz+gsCx3K0BImEtkTsH?= =?us-ascii?q?rUttL1NKIKXO6tzanH0TLDb/dM1jfm9YPGcRchofaXXbJrbMHczk8vFwLZgVWX?= =?us-ascii?q?rYzqJSiV2v4Ms2ic6OpgTvmvhnUiqwx+rTmj3MAsipPGho8MzF3P6CZ3wJ4tKN?= =?us-ascii?q?GlR0N2bsSoHZtNuy2AKYd7Td0uT3t1tCoiyLALu4S3cDUExZkp3RLTdeCLfomS?= =?us-ascii?q?7h/tSuqcJypzimh/d7KlnRmy9FCtyuj7VsapzllHtjFFktzQtnAV0BzT99SHRu?= =?us-ascii?q?N9/ki/3TaP0Bje6v1eLkAulKrbNoUhzqQslpsTrUvDHij2lF/wjKCKbUUr5vKk?= =?us-ascii?q?6+HmYrXivpOcNol0hR/iMqk2h8CyDus1PhIOUmSG4+iwyrLu8VPjTLlXlvE2l7?= =?us-ascii?q?PWsJHeJcQVvK65BApV35446xmhCzem0dIYnWQILV5cYx2HiJXpO1fSL//mFvey?= =?us-ascii?q?mEiskTd3yPDGOb3tGJPNLmPZn7v7crZ97FBcxBIpzd9D/5JUFq0BIPXrV07xtd?= =?us-ascii?q?3YCRk5Phexw+bjEdl914UeVXiJAqCDKqPSsl6I5vwxLOWWYo8apir9IeA/5/Hy?= =?us-ascii?q?lX85hUMdfa6x0JQJcHC3BO5mI0SCYXf3mtcOC30KvgslTOzyjF2NSyJcaGioU6?= =?us-ascii?q?I7/DE7B5qsDZ3fSYC1nLyBwCC7E4VYZmBcEF+MF2vnd4SfW/oXbSKSOs5hniUf?= =?us-ascii?q?VbmvUI8tzxautBX1y7B/NOrb5jUYtY7/1Nhy/+DTlgs99T9zD8SAyGyNTHt7nm?= =?us-ascii?q?APRz8rxqx/plZ9ylib26hin/NYDcBT5+9OUgoiL5HT0vZ6C9HsVQLbZdqGUkqp?= =?us-ascii?q?QtC8DTE2VNIxzMcEY1xhFNW6khDDwy2qDqcVl7OVAJw09qXc0mP1J8Zg13bG06?= =?us-ascii?q?whgEM8TstIL22mibZ19xLPCI7Rj0WZi6GqeLwH3C7D7meDynGOvF1DXQ5rV6XF?= =?us-ascii?q?Wn4eZk7MotT//E/CSaGhCag/OAtb1cGCMrdKasHujVheSvbsItDeY36vlGeqHh?= =?us-ascii?q?aF3a2MY5Twe2oGwSXdDVIIkwcJ/XaJLQI+HDuuo3rCDDxyElLie1/s/vRjp3O6?= =?us-ascii?q?VEA0yxqHYFFm17qw5hEan+ecS+8J0rICpighty1+HEyh0NLOF9qAuw1hcb1aYd?= =?us-ascii?q?M85FdH0XzWtxdmM5O6Ma9inFkefx5wv0P02BV9Ep9AntQyrHM20ApyLrqV305b?= =?us-ascii?q?eDOEx5//JLPXK2bp8R+za67ZwEve0MqI9acV8vg4rUvsvB2xHEo473pny8VV02?= =?us-ascii?q?eb5pjSEgoSUI7+Ulow9xhgvb3Vfik954TS1X1jKqS0tj7C29QzC+s/zRasZdBf?= =?us-ascii?q?MLmLFAXqCc0VG9CuKPA2m1iudh8EOOFS9LUoP8+/bPuJxqqrPOdmnDK7gmVK+5?= =?us-ascii?q?t90lqN9yp6S+7Hw40Fz+ue3gSZSzf2lE2hvdzvmYBYeTESGXKyyTLjBI5VYq19?= =?us-ascii?q?Y5wLBnupI8y53dh+nIPtVGJD9FK5AFMGwsCpcwKIb1PhxQ1QyVgXoXu/lCug1T?= =?us-ascii?q?N0jjUporCF0yDU2Ovicx4HOnJMRGlkllrsJJS4j9YdXEe0dQQpkgWq5VrizahB?= =?us-ascii?q?uKt/N3XTQVtPfyXuKmFiVrK8uaSEY8NU9pMnryFXUOCiblCAULL9pQUV0z/7FW?= =?us-ascii?q?tE2D87by2quon+nxFii2KSMnBzrGHCdMFz2xjf4sfcRfhP0ToaXiV4jiPXBlek?= =?us-ascii?q?Ndmz4dqUj4vDsvy5V2+5SJ1TdzTkwJietCu9+GJqAQezn/atld37CQI6yzP018?= =?us-ascii?q?F2VSXUqxbxepHr2L6nMeJjZURnGF7869Z6G41nnIs/npcQ1WIdhpWP8noNiX3z?= =?us-ascii?q?PslD2aLicHoNQiYGw8bP7wj43E1sMGqJyJj/VnWB3MRhfcK3Yn4N2i0j9cBKE7?= =?us-ascii?q?2Y7KdDnStouFq3sRzeYfZ6njcHxvsh9mQWg+cXtwox1i+dGKwdHVFEPSzwkBSF?= =?us-ascii?q?996+o79RZGazdriw0VFznd6/A76fpQFcQmz2eo84HS937MVwLk7D0GHp5oHjYt?= =?us-ascii?q?nQYsoZtgeInBfYk+hVNJUxm+IFhSpnJW39p30ky/YnjRxpxpy6upaIK3l2/K2l?= =?us-ascii?q?GBFYLiP6a9kV+j7zkaZUhtyW0Jy3HpV9BjULW4PlTfeyHzIWsfToKRqOECEmpX?= =?us-ascii?q?iBArffGxGQ6Ft9r33TCZ+rL2+YKGMfzdp8WBmXPFZfjxwMXDUmgp45ERinxNb7?= =?us-ascii?q?fEZ3/DwR40T3qh9LyuNoLBTwSHvQpAKyZjczUpifIwJc7hte6EfNLcye8uVzEj?= =?us-ascii?q?le/p27tgONMnSbah9GDWEIQEyEHEzjPrev5dnG6eeYAPaxL/rUbrWKs+BeUO2I?= =?us-ascii?q?xZ232It84zmMLtmPPmVlD/AjwkpMQ2t2FNrfmzUOVywXkDnAb8+Fqxii5CJ7tM?= =?us-ascii?q?e/8O7kWAj3/4uAF6NSMclz+xCxmaqMKvWQizhjJjZXzJMD32HIxaME3FEIiCFu?= =?us-ascii?q?aiOtHq4auS7JUaLQnLVYDwQCZyNvM8tI7KI93g5XNc7dlNz1yqZyjuQpBFddSV?= =?us-ascii?q?zhhsapaNQRI26nKlPIHkmLO6qdJTDQ2MH4e728RqdfjOpKrB28ozCbHFH/Pj6b?= =?us-ascii?q?jTnmSwivMf1QjCGcJBFRo4C9chlqCWjlV9/pdwO0P8R2jTIsx704nHTKNXQTMT?= =?us-ascii?q?JkaUNCsqWQ7T9EgvV4A2FO9HVlIvOamymH9OTYLY4WvuVtAiRxje1a4XA6xKBS?= =?us-ascii?q?7CBLXvB1nzHSrtF2qVG8juaP0iZnUAZJqjtTmIKLukBiNb/D9plHWHfL4hQN4n?= =?us-ascii?q?6KCxQNudRlCcbitLxXytjKiK38MixC887O8csaGcfUNNqNMGA9PhrxBD7UEAwF?= =?us-ascii?q?QCaoNWDfg0xSjuqf9niSrpg0pJjjhoYOSqNbVFwyE/MVFF5pHNocL5drRjkki6?= =?us-ascii?q?KUjNYU5XqiqxncXMRavpbbVv2MBfXgNjOZgqdYZxsSwbL1NoMTNpXl1Exkb1l1?= =?us-ascii?q?hoXKG07LUtBKrSxtdAg0oF9C8HJmVG08x1rlah+x4H8UDfO0mAA5hRF6Yek29z?= =?us-ascii?q?fs5Ew3JkbQqys2i0kxmtTljSqXcDHvMKe6RZtWBDbst0gtLpP7RB54bReskkx/?= =?us-ascii?q?KjjLXahRgKdgdW1wkwDcuIFPFuNbTa1KeB8Q3++YZvUy3VRatCqn2VdN5fHZBp?= =?us-ascii?q?t6iAsqbZmsompd1AJkat41I7HfK7RNzlhRna+BpDGn1vo2wAMEIEYN6myScjYS?= =?us-ascii?q?uEMULrkmOzao/ut05AOfgTRDZmkMWOcxov9x7Ew9If6AzyXu0r5YNE++K/GfL7?= =?us-ascii?q?mYu2jclc+EWFUw2V0Ul0Nd57h5zd8jc1aIV0Ao1LaRGQ4JOtTfJgFOdcVS8mTT?= =?us-ascii?q?fSGVsejW2516I4C9GvrvTe+Uu6YemlikExoxH4QQ8sQBGYGh0EXfLcf9MrEFzx?= =?us-ascii?q?Qs5APwKVWKCvRJZQiHkDAdo8Gw1JV3x5VSJikBAWVhNiW6/q3XqREugPqCWtc2?= =?us-ascii?q?f3gbU5AYOXIxXc21hzRWv29cDDWt1OIW1hSC5SfmpivMFDn8c8ZjZPCMaBNvEt?= =?us-ascii?q?G3+S8w866qiV7X6ZjeKGb6Ncx+tdPV7+MVuYqHAetOTbZhq0fch5VYR3uyXm7T?= =?us-ascii?q?EN61Ip/wa5Usbd30EXu1T12/ijIvQMjqJtqtKLaHgR3wT4ZOrIabxCwjNdO6Fj?= =?us-ascii?q?wGARhwo+AD675iagIbZpo6YRjotwM4N6OlOwqXydSuTHyrKTdPQflf0P+2Z7pJ?= =?us-ascii?q?wCowduW60mcvTokmz+mr9k4AXIoFgQ/Yxfu4fYZRTDbzFWJHewXUvyU5jWhgOv?= =?us-ascii?q?w1wuclzxPCqUMcPCyTdOx1dGxEuMkxBVyPIXV3Dmo4Q0GTjY/Y7wGxwb8d5Cpd?= =?us-ascii?q?kMxS0eFft3j+pJDfaiq2WKO3sZXVrzYgbd8+rq1rN4zjI9eJtJPZnjzbV5neqh?= =?us-ascii?q?SLXjOgGfdGndZdOz5XQP5NmW45I8MGopZB5VA3VsggO7xFELMsqayyaTp4ES4S?= =?us-ascii?q?yjcUV5md0zMfmeq81L7alxiKfJQkLhMErI1IgsEBXC5ufiMeuKijWp3KmG+GUG?= =?us-ascii?q?cEPBwe4hhL5AIEko9wf/7q4JDUTJBS1zFWo+h4UizRFpln71H7UH2ZgUDkSPW9?= =?us-ascii?q?lOykxRhSw+j20tkcQxFyElRdx/xMmUs2Nr53L6gQvojFsj+MdEP6s2LtyPeoJF?= =?us-ascii?q?ZL083Uckf0DIzbumrgSicc42EbRZdTyHHDEpQfiwp4Z7wwpFpWJYCme0D+6icl?= =?us-ascii?q?x4R1Bba4TtykyEw/oXYAWSiqD8JLC/t6v1LPRD1lf5erpY3rOplIXmBQ+Jydq1?= =?us-ascii?q?JYkEp3MC600ptcJN9T7TESRjRPpi+dvNSqQs1ZxcB2F4MMIst4u3rlAqxEIoWR?= =?us-ascii?q?o3sstrzs0XLZ+jE8sFamxDqoAaO4SfxW/3EGEAUzO2ueslUvD/cr8mrK/VDNqE?= =?us-ascii?q?p7/+FHBrWUjEVxpzh8HpZSBjZJy3+lLlJzTGVYvOVAMqjVddJTQ+Uqbx+1JxM+?= =?us-ascii?q?DeIm31CO/UxsgXf5ZClyuxBG+yzBWgk7TjMZgrHzlj0CssunIyMVS4pUbTU9aC?= =?us-ascii?q?fIMwKbljpNvBlFb0FlRosUDctb9LEDxYtb4M7CRli2KS0fWxxiLA042+JFlUFf?= =?us-ascii?q?qEWYZTzdDQ2wePbNtR14Y9yco9O3I/Ti4ghHkJ/nv/4l+KkZQX2phxGtS8jEr4?= =?us-ascii?q?Dgrt2KqleOdKDgPuKnb3/OUCTAgBKtiboqFJTF4y/TMA9HJJZg0nokfYLtCWjV?= =?us-ascii?q?MhRaP6gbPVZUVbhmadVapeBXf9Vkd7gU9q9tHB2HWgjiGIiorPlYMFnfWyjRLy?= =?us-ascii?q?Kc/eOhu47T66LSSfT4bMyW23nHW753Pot96TTjA7fqypNe9VDr1fdx7U56Ul/G?= =?us-ascii?q?Mz2brNv9OAwL4tWidlH4sZ0tBz/WB41wkHX1zEFaa8UXWzGq8IgfyJ5B9HbwU/?= =?us-ascii?q?x33Vbuv+BJ6rlk7ZU346pzxseqJKfSLvBavlF7AhSOAQVq7JotCnBlR29Neu8R?= =?us-ascii?q?NOvRfaMBgM/zreD4Dbca5wCT++NDc9fHIFvBmsanADGGVRNEhBsBqSIdLgaE1f?= =?us-ascii?q?6KgbV0ScG+pej9wE0t/UOzLhsbzLBp+YeE+7aHpO7NYBvX1rgIQK/qRtn8rr40?= =?us-ascii?q?oUOd+eUklKISemxyewCnEvISVsgTxmf6yqAl0DwjHtjfH736/v5DTHU5kijmm5?= =?us-ascii?q?9jA1UcAukUEqaT/YRCgmc4nPTUNtsScq1Zm2aPExukHqUDyX6t5SuXOnNqggrS?= =?us-ascii?q?0xHqXGO88EP2rTJiQSTS1dvjlVBVVravD0dIQyWpIVN4sC+IPAfwstr3uLg67E?= =?us-ascii?q?YyMmP+r9KBjmqhOLRQH83kP9yROiw0qV0YjZErQdyvw48bE8KnINgN6HF+cufe?= =?us-ascii?q?62SzniBduahHg5TR4tqJ+vTXGnmtlLaapKmMxD9GzHg4oVA/5cq6OvHI+dKKX+?= =?us-ascii?q?yi13wNQCdnpwvBQxm1p6Tfr1APPEyG0FzGmIIUMd5E2nk4zFvp5PA5QNI09gVR?= =?us-ascii?q?CJrPZ+8YqTD0Ijv0zk6VY8grWSmGzztXAlX1HEF9GKg4xm3wucXJmmnU+1AzSY?= =?us-ascii?q?l/aUvnhQdvD4oiNUIt6UIYwi4CEQgLdRCUErWoBUDkLYsLS0cDbwiI06agdqcx?= =?us-ascii?q?w0Jz3qul5PXPYuxkG6oNKvFdgxaMnFhaH5IbqqgeT6x8elBD7q7Xpw7iC4f9U/?= =?us-ascii?q?jgi3UwKeW/QtpG/sABq3si/gG/SgKh6ZZC9bkUkoyHe7VfYZfSoMBz8Vto6SQI?= =?us-ascii?q?dixXjxh1lwm5XvwEpOD//tjbt4Kl5f2vVKY2SeQY7Ro0B2Vij5voml8jvNXX2v?= =?us-ascii?q?xARY3SlIvw7hpCI2OQuIbdyRlzM/ACK4WxfLZv738HPTQRJ2oSPdqKbPkx+zdt?= =?us-ascii?q?Py/P51NeAsMNa9QYPNDOmQxNkU3mRrVT9svdGl+FBIZ+bNgo4HDryD8p8Zs9XO?= =?us-ascii?q?Hg6CW1JZzF7FFCIelDjCNym9LGvuQVxuDSCCcP63mDdxd12j+Cy4WKC/vo4eWM?= =?us-ascii?q?0s/bV1ccES4wTYhQPyeN+Q2oRuq0iJXmSBiU5dXpgJIjbk6QQGK+nLgduKZWDe?= =?us-ascii?q?FAkjn73iRZFo3tiPKaqcCs53VLtl1HC4tz6RzFGLlBMZV7Ixv4i9KrSlJ6BiTh?= =?us-ascii?q?ZMHebgAut/aOxucQ/+V+MFPzZYAFLRIC17L67n1VQgx1SLHoulaZXOQRZMZpSf?= =?us-ascii?q?7fqnBa95hgKq8VM1SHopzlsCtIokgsAAA1cL8wsiBadk7WkQ1QXKb0vqIAigQC?= =?us-ascii?q?XtNivE9MGHi/OGQg6DrbW6VVi7ORCP8O8jmJSKwBTVloODtkQxypwJVuZ6epnf?= =?us-ascii?q?dfv2NJgix9u+Mq3yV7ShWzvyPspqQN2S8v+byjuzUBvGZKTuOAnCvSDlVD1vsK?= =?us-ascii?q?h78GC3n+8Vy8fGUDbIzq7bllIsTg9Y8h724jbhUjey0GQPmvCiDxj6OOGYyPs9?= =?us-ascii?q?NciQWTuMXPc7+8NywSOak8yR75QXhyzBTelg5y8GQXWjWg8MMkJIKlNMYk2Cqn?= =?us-ascii?q?A27beU0I4qNUrcTxtFkLTPAsZVNm2mVj3dCNRjcRS8zXB2Y1kg8kZH1GcJ1d5x?= =?us-ascii?q?8aGa0ojy2Gv6Zc+AEbfivUHp6j+obOgcfCwWM9QstyxmLKuq2FgYsn0HJhm9Nz?= =?us-ascii?q?4C+BpnASd+jDXs93BXjz0IZfxvDka/WrrO8HVJNsyK69X/8aLsmj5Wy21Y1oWk?= =?us-ascii?q?+lxrUeB125MOsCxrfHTSioUmiYWeWXc2iWgTk1KEny5QOnLlcvcsdFs1c9Mvfe?= =?us-ascii?q?hp5bjwDhTbJ0RiCLqF/HzWwsLeAaeBwyuIu9fQwFUvIRbfCGJecy2P0+FEcMb3?= =?us-ascii?q?jRECtzCu+2sl2tnI9gNnVi+0r6YuPt8gb4P9uUABUEF5DVroJp8/ygWm2BIWNg?= =?us-ascii?q?zAF1PERs7OjQCVIxtvNHfpaKmdjQgMh70fIbd/hzLCIxoNkTmphs6YOMyseFbQ?= =?us-ascii?q?nRzoruJdHSuvWYG/rfz0AwdWFAXLsZZgf154shM948XL3TGqBZsgoACqggR5wh?= =?us-ascii?q?LHzx9KByLAN8aALRY660gsbyrOKRepRUv2PW7k43LCrEtR0M1Pi0TQ1jb5+0nH?= =?us-ascii?q?jzIZEwRjdEr9JzEBtmGJVAF9kHrwq9DJ6egLu7hMOp+0Nmp+8KtrL9CvDW1NS5?= =?us-ascii?q?2IVxWoJV5VeQMTbUBalrnl5lgfqojvfHyJnxBtvoeckYW+hjXm7FdrjGE52xKz?= =?us-ascii?q?KWIML8elJJ/KCH3bJ8UxWReDr5ULScuC2jLvVk7l0xypZkc+rL0Dwt87bb1cP1?= =?us-ascii?q?Z2FfuCiutmaJNJ9F41zRGezeXg5bSeaf8Gl7A6Ibd430+/kSMdY62tiT/xFz7C?= =?us-ascii?q?he0MuCO6Whqk7M2kRmdZPUNUfp3yc5WZIWIBSkKkYsgHXWqnLaAXhGKcikM8Zt?= =?us-ascii?q?is6PDhPx/0lxhX0tZmlZF2rzW9iRPWkb28SjZAyF8w5FAMoDn+6pdk4iqKKyUf?= =?us-ascii?q?NnN45Gmeq0rrUHl8hmKyXUS8hHMCHcNrh2PiBeDu/XvlgnfgYEs6QpWocyfZWO?= =?us-ascii?q?JEIHMFycyS7pzArCyEv0eMa22KaPPikW7m1Nz6jZ3jhUuwm5pfGZj9XmUL/DcJ?= =?us-ascii?q?72XP/SMCwiVjyBWzQyEECp9kmgu/oFuvqYPGgerkoTYiKIBw4ZvrpvosTIDm/P?= =?us-ascii?q?he1je4UHhPKAVCDzTy13j7E/BjtNtUCQQ/oDEhTWb3DhgGpAogCiIOFD/W79Zb?= =?us-ascii?q?2C2qVVQ/AWApdLcvCBWNTXYvdSJzMpljUCJOa8ZMfQr60n3V3UV2cZCLfH9Fmf?= =?us-ascii?q?TE6QX/ydyCnmUpkVvogupyoo4cjcnyFtHKTUJLafoDiu/pS/jCaCtu3UTnMtbF?= =?us-ascii?q?AtgOIeHGmBxwFNKG4eBN4OokHtQ7CPZ0JX2XI3jeJhwQQMeAVuUnF01H1Zguq9?= =?us-ascii?q?ENVDSVEIlGOuXOEGbFdvATMy+E+K5RfyYcYBucDIXGJe8KEDSY8DI/kp8oXXP7?= =?us-ascii?q?EQwPkx1jJ8vCM6qzmdD09ajg+d6KrQEqd8yaFD6GQ75Px2QF+AQynecmnGzYqm?= =?us-ascii?q?DdhDxSFwrnD4z8DUpPxiNKNGp4FlB1cHGSB2Jtfb/TBFSmz03RW9sAu1HDSZOj?= =?us-ascii?q?IW/CgEKTYDdulr0+8o+CrPI83M7UKWqrIJtFqgCQHNDKG9npNMFJLHzwK9PA9K?= =?us-ascii?q?ejKvHos+i/FKj81aNaUmbo+6CkuHLw/5FRmwvnwcsh/wreL4XoJx3mwCn/B0e5?= =?us-ascii?q?nSVI4QAIychWl1?= X-IPAS-Result: =?us-ascii?q?A2HVBAA0yFpY/wHyM5BdHAEBBAEBCgEBFwEBBAEBCgEBgwo?= =?us-ascii?q?BAQEBAR+BZI5DrHQmh2NTAQEBAQEBAQECAQJfKIIzGoIcBgECNxQgDgMJAQEXK?= =?us-ascii?q?QgIAwEtFREOCwUYBIhLBAGqYyoCg2iHIoY2hiiCQxEBhX0BBIhlkhKBeodqh0i?= =?us-ascii?q?KRoYYkjNXaB9RhV9xhiqCLgEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 21 Dec 2016 18:23:28 +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 uBLINSmB021326; Wed, 21 Dec 2016 13:23:28 -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 uBLIMI7G034177 for ; Wed, 21 Dec 2016 13:22:18 -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 uBLIMCXj021001 for ; Wed, 21 Dec 2016 13:22:18 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1AyAAAeyFpYhyIeaIFdHAEBBAEBCgEBgzUBAQEBAYIDjkOoYoQzh2hTAQIBAQEBAQITAQEBCgsJCR2FGQaBCVFXGYhsBAGqY4QUhyKGNoYogz2FFQWIZZISgXqHaodIkF6SM4FdUYMTDIJAcYhYAQEB X-IPAS-Result: A1AyAAAeyFpYhyIeaIFdHAEBBAEBCgEBgzUBAQEBAYIDjkOoYoQzh2hTAQIBAQEBAQITAQEBCgsJCR2FGQaBCVFXGYhsBAGqY4QUhyKGNoYogz2FFQWIZZISgXqHaodIkF6SM4FdUYMTDIJAcYhYAQEB X-IronPort-AV: E=Sophos;i="5.33,384,1477972800"; d="scan'208";a="5887164" 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; 21 Dec 2016 13:22:14 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3AN9yTzRFF14Ym2Hil8JJt2J1GYnF86YWxBRYc798d?= =?us-ascii?q?s5kLTJ78rsywAkXT6L1XgUPTWs2DsrQf2rGQ4/qrCDNIyK3CmUhKSIZLWR4BhJ?= =?us-ascii?q?detC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+?= =?us-ascii?q?KPjrFY7OlcS30P2594HObwlSijewZb1/IA+1oAnPucUbhYlvIbstxxXUpXdFZ/?= =?us-ascii?q?5Yzn5yK1KJmBb86Maw/Jp9/ClVpvks6c1OX7jkcqohVbBXAygoPG4z5M3wqBnM?= =?us-ascii?q?VhCP6WcGUmUXiRVHHQ7I5wznU5jrsyv6su192DSGPcDzULs5Vyiu47ttRRT1ji?= =?us-ascii?q?oMKjw3/3zNisFojKxVvg+vqRJ8zYDTYo6VOuFzcr/Bcd4AWWZMRNpdWzBHD4ih?= =?us-ascii?q?b4UPFe0BPeNAooflplsBsRy+BQ22C+P01zRGhXj23aoh0+Q6DArL2wogH9MSv3?= =?us-ascii?q?TTqNX6LrwSXfq0zKnPyjXDdOhW1Cz46IXHfREtu/aMXah/ccfIz0QkCgDLjk2I?= =?us-ascii?q?pID4IT+Y0v4Bv3WH4+dvT+6ihXIrpxt/rzWg3sshiIvEipgIxl3K+yh12pg5Kc?= =?us-ascii?q?G5RUJhb9OoDp1dvDyAOYRsWMMtWWRotT46yrIYvZ67ezAHyJEoxhLCcfCHa4+I?= =?us-ascii?q?4hbjVeaNPzh3mHJleLS+hxar7Eiv1PfwVs6u0FZFtiZFk9/MuW4R1xHL98SLVP?= =?us-ascii?q?9w8l281TqT2A3f8O9JLVwumafVJJMt2rswmYASsUTHEC/2gkL2jKqOe0s55uam?= =?us-ascii?q?9vjrb639ppKSNoF0lBnzPaYhlMGnBOQ1PQcPU3Kc+eSm273u5Uv5QLRWgf0xlq?= =?us-ascii?q?nWqovaKd4apq6+BA9VyZ0j5g2kADehzdQYm2UII0xeeB6diojkNF7PLOr/Dfel?= =?us-ascii?q?jFSgiC1ryOzePr39HpXNKWDOkKz/crZ56k5czhczzN9E6pJICrAOPPLzWkjruN?= =?us-ascii?q?zeFR82KRa4w+ngCNVjhcsiXjeUD6uYNr7CmUOZ7eIoZe+XbckavyiuBeIi4qvI?= =?us-ascii?q?jHQ+nVYGNYiu2oAMICS+H/9hJ0yCJ3vrhcwaOWJWrkw5VuO82w7KaiJae3vnB/?= =?us-ascii?q?F03To8Eo/zVYo=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0GNAADyxlpYhyIeaIFdHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgwoBAQEBAYIDjkOoYoQzh2hTAQEBAQEBAQECAQIQAQEBCgsJCR0?= =?us-ascii?q?wgjMYgh4GgQlRVxmIbAQBqmmEFIcihjaGKIM9hRUFiGWSEoF6h2qHSJBekjOBX?= =?us-ascii?q?lGDEwyCQHGIWAEBAQ?= X-IPAS-Result: =?us-ascii?q?A0GNAADyxlpYhyIeaIFdHAEBBAEBCgEBFwEBBAEBCgEBgwo?= =?us-ascii?q?BAQEBAYIDjkOoYoQzh2hTAQEBAQEBAQECAQIQAQEBCgsJCR0wgjMYgh4GgQlRV?= =?us-ascii?q?xmIbAQBqmmEFIcihjaGKIM9hRUFiGWSEoF6h2qHSJBekjOBXlGDEwyCQHGIWAE?= =?us-ascii?q?BAQ?= X-IronPort-AV: E=Sophos;i="5.33,384,1477958400"; d="scan'208";a="1768037" Received: from mx1.polytechnique.org ([129.104.30.34]) by emsm-gh1-uea11.nsa.gov with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Dec 2016 18:22:13 +0000 Received: from localhost.localdomain (32.206.133.77.rev.sfr.net [77.133.206.32]) (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 663FB5647EF for ; Wed, 21 Dec 2016 19:22:12 +0100 (CET) From: Nicolas Iooss To: selinux@tycho.nsa.gov Subject: [PATCH v2 4/7] libsemanage: simplify string utilities functions Date: Wed, 21 Dec 2016 19:21:01 +0100 Message-Id: <20161221182104.16967-5-nicolas.iooss@m4x.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20161221182104.16967-1-nicolas.iooss@m4x.org> References: <20161221182104.16967-1-nicolas.iooss@m4x.org> X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Wed Dec 21 19:22:12 2016 +0100 (CET)) 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 Use string functions from C standard library instead of ustr. This makes the code simpler and make utilities.c no longer depend on ustr library. This changes how semanage_split() behaves when delim is not empty (NULL or "") and the input string contains several successive delimiters: semanage_split("foo::::bar", ":") returned "bar" and now returns ":bar". This would not have any impact in the current code as semanage_split() is only called with delim="=" (through semanage_findval(), in libsemanage/src/genhomedircon.c), in order to split a "key=value" statement. Signed-off-by: Nicolas Iooss --- libsemanage/src/utilities.c | 59 ++++++++++----------------------------------- 1 file changed, 13 insertions(+), 46 deletions(-) diff --git a/libsemanage/src/utilities.c b/libsemanage/src/utilities.c index f48ffa489d14..fa86cc77dc56 100644 --- a/libsemanage/src/utilities.c +++ b/libsemanage/src/utilities.c @@ -26,7 +26,6 @@ #include #include #include -#include #define TRUE 1 #define FALSE 0 @@ -74,64 +73,32 @@ char *semanage_split_on_space(const char *str) { /* as per the man page, these are the isspace() chars */ const char *seps = "\f\n\r\t\v "; - size_t slen = strlen(seps); - size_t off = 0, rside_len = 0; - char *retval = NULL; - Ustr *ustr = USTR_NULL, *temp = USTR_NULL; + size_t off = 0; if (!str) - goto done; - if (!(ustr = ustr_dup_cstr(str))) - goto done; - temp = - ustr_split_spn_chrs(ustr, &off, seps, slen, USTR_NULL, - USTR_FLAG_SPLIT_DEF); - if (!temp) - goto done; - /* throw away the left hand side */ - ustr_sc_free(&temp); - - rside_len = ustr_len(ustr) - off; - temp = ustr_dup_subustr(ustr, off + 1, rside_len); - if (!temp) - goto done; - retval = strdup(ustr_cstr(temp)); - ustr_sc_free(&temp); + return NULL; - done: - ustr_sc_free(&ustr); - return retval; + /* skip one token and the spaces before and after it */ + off = strspn(str, seps); + off += strcspn(str + off, seps); + off += strspn(str + off, seps); + return strdup(str + off); } char *semanage_split(const char *str, const char *delim) { - Ustr *ustr = USTR_NULL, *temp = USTR_NULL; - size_t off = 0, rside_len = 0; - char *retval = NULL; + char *retval; if (!str) - goto done; + return NULL; if (!delim || !(*delim)) return semanage_split_on_space(str); - ustr = ustr_dup_cstr(str); - temp = - ustr_split_cstr(ustr, &off, delim, USTR_NULL, USTR_FLAG_SPLIT_DEF); - if (!temp) - goto done; - /* throw away the left hand side */ - ustr_sc_free(&temp); - - rside_len = ustr_len(ustr) - off; - temp = ustr_dup_subustr(ustr, off + 1, rside_len); - if (!temp) - goto done; - retval = strdup(ustr_cstr(temp)); - ustr_sc_free(&temp); + retval = strstr(str, delim); + if (retval == NULL) + return NULL; - done: - ustr_sc_free(&ustr); - return retval; + return strdup(retval + strlen(delim)); } int semanage_list_push(semanage_list_t ** list, const char *data)