From patchwork Tue Jan 31 16:54:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Smalley X-Patchwork-Id: 9547757 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 A54D560425 for ; Tue, 31 Jan 2017 16:52:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 96BD81FF13 for ; Tue, 31 Jan 2017 16:52:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 89CB9283FD; Tue, 31 Jan 2017 16:52:56 +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]) (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 AD9641FF13 for ; Tue, 31 Jan 2017 16:52:55 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.33,315,1477958400"; d="scan'208";a="2759931" IronPort-PHdr: =?us-ascii?q?9a23=3A3140kBT3iySaPQktrMaqdyksK9psv+yvbD5Q0YIu?= =?us-ascii?q?jvd0So/mwa68ZheBt8tkgFKBZ4jH8fUM07OQ6PG8HzJdqsbR+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6?= =?us-ascii?q?KfroEYDOkcu3y/qy+5rOaAlUmTaxe71/IRG5oAnLt8QbgYRuJ6UyxxDUvnZGZu?= =?us-ascii?q?NayH9yK1mOhRj8/MCw/JBi8yRUpf0s8tNLXLv5caolU7FWFSwqPG8p6sLlsxnD?= =?us-ascii?q?VhaP6WAHUmoKiBpIAhPK4w/8U5zsryb1rOt92C2dPc3rUbA5XCmp4ql3RBP0ji?= =?us-ascii?q?oMKjA28HvTisdtkqxVphyvrAF7z4LNfo2ZKP9yc6XAdt0YWGVBRN5cWSxfDI2h?= =?us-ascii?q?YYUBDO0PPf5aooXgqVYBogexCwayC+P00TJImn370Lcm3+k7DQ3KwgotFM8Ovn?= =?us-ascii?q?TOq9X1Mb8fX/2pzKbW1TXDb+1Z2THg44bVdxAuu/WMXbZufsvR1EIiEBjFgUiL?= =?us-ascii?q?qYH+IzOU1vgCs2ic7+Z6U+KvkHQopxt+ojio2Mchk4/EjZ8WxFDc7Sh13Yk4KN?= =?us-ascii?q?KiREN7fNKoCoVcui6EO4dsX88vRXxjtjwgxb0co5G7eTAHyJEgxxHCdfOKa5OI?= =?us-ascii?q?4hf/VOaJJjd4mW5ldKq/hxms9UigzfXxVtWu31ZQrypFj8LMumoR1x3T9seHSv?= =?us-ascii?q?x98l2n2TmTzADc9vtIIUU1larfM5Ihw7gwmYQPsUnbAyP7l0r7gLWWe0k54OSk?= =?us-ascii?q?9evqbqv8qpOBL4N0jxvxMqUqmsyxG+Q4NQ0OUnCA+eui0L3j/Ev5QKhFj/Evia?= =?us-ascii?q?bZt43aJcIHqaGnGA9YyZoj6hajADem19QUh38HLElfdx6dgIjpPE/OLOjiDfij?= =?us-ascii?q?m1SsjCtrx/feM73jBZXNKGLMkKvhfbln7U5R0wgzzddZ55JREL4BO+7zVVHrtN?= =?us-ascii?q?zDFBM5NBa0w+n/AtVnyoweQX6PArOeMK7Ks1+I5PggLPWPZI8Ovzb9Lfkl5+D1?= =?us-ascii?q?gH83nV8dYKao0oAKaHC+AvRmPl+VYX32gtcOCW0KpBYxTPT2iF2eVj5ef3izX6?= =?us-ascii?q?M45jE+Fo2mF5zORo6zj7Oc2ye7BIdZZnhcClCLE3fnaZmLW+sWZCKVOM9hnSQO?= =?us-ascii?q?VaK9RI85yRGuqAj6xqJ6IeXI/y0YspTj1MRo6+DIixE96yZ0D8Wc0mGKSWF4hG?= =?us-ascii?q?UISCEq3Kpnu0xy1k+D0bRkg/xfDdFc+u9JXR0gNZPH0+N6DNXyVR7bcdeSVFaq?= =?us-ascii?q?WNOmDi8tTtgp2d8Bf159G8m+jhDExyerA74Ul7uNBJEv96Lc22H9J8d7y3rc0q?= =?us-ascii?q?kulUMmQshONW24mKFz7Q7TCJDVk0+Bjaalabwc3DLR9GeE1WeBollYXxRqUaXE?= =?us-ascii?q?RnASfVPWos7j5kPDVL+uEbAnPRFdxsGcMKdKbcfpjVpeTvf5JNvee36xm3u3BR?= =?us-ascii?q?uQyLOMdpDle2MB0yXcE0gJiAUT/W6HNQQnHSegrXneACZpFVL1bEPm6fN+p2+j?= =?us-ascii?q?Tk8o0wGKaFVs17mv9R4WgvycVuge3rEetycirDV0AUyx39XMC9qPvwBhZrlTYc?= =?us-ascii?q?sh4Fdb0mLUrxZyMYG6L6BjmFEeaR96sFny2BVyEIlAltIqrHwyxgpoNa2YyE9B?= =?us-ascii?q?dy+f3Z3oOr3YNG3y/BSoa6PN3lHezcqW+qAK6PsisVnjuxupFkU6+XV9z9ZVy2?= =?us-ascii?q?ec5onNDAcKSpLxXFw39x9hp7HGeSQ9/IXU1XpiMKmxqDDC3cglBO07xRa8Z91f?= =?us-ascii?q?Kr+LFBfuE80GAMijMOIrlEKtbhIYIu9S7rU0Mti4d/SYwq6kJ/tgnDe8gWRA+o?= =?us-ascii?q?B93VqG9zBgRe7Qw5YF3/aY0xObVzjhkVihs9r4mYRfaD4OGWq/zDTrC5RKZq1u?= =?us-ascii?q?Z4oLD3mhI9GvzNVkm5HtQ2JY9EKkB14e3s+peB6Sb1jj0g1LzkkYu2KomTG/zz?= =?us-ascii?q?BulDEptKWf1jTUw+v+bBoHJnJLRG56gFfyIIi7k8waXE+ybwQziBSl5UH6x65U?= =?us-ascii?q?pKlkK2nTQEFIcDLsL2FlSKewsaCCY8FX4pMyrSpXSPi8YUydSrPlpxsa0jjjH3?= =?us-ascii?q?dHyDAgaT6qvpT5nxpniGOSN3tzt2LZecB2xRfe+NPcXuRd3jwYSylkkTPXHESz?= =?us-ascii?q?P8G1/dWIkJfOqvq+V2WlVp1Xbybr15+PtCy15GBxGh2/guy8msb9HQg9yy/72M?= =?us-ascii?q?FgVT/Uoxbkfonry6O6PPp/fkZyGV/879B2FZtknoQrg5EQ3WQahpKT/XcclGf/?= =?us-ascii?q?LdNb2aXiY3YXQz4E3cLV6hD/2EJ/NnKJ2575VnKFz8tieda6ZHgW1zk+789UDq?= =?us-ascii?q?eU97pEkjVpolaiqgLRe/d9lC8HyfQy8H4an/0JuA01wyWDBLAdAFJVPTLqlxuV?= =?us-ascii?q?79CytqNXa3izcbKozkpxgcihDK2eogFbQHv5Yo0tHTJ07shkLF3M0WHz64H9dN?= =?us-ascii?q?ned90TsAeYkxDaj+haMJgxjOYFhTJ7OWLhun0o0/Y7ggZz3ZG+ooeHM39i/KSl?= =?us-ascii?q?AhFGLD34fN4T+irzgqZEhcaaxZuvHpJ8GjURQJTnU/yoEDUItfToKQmCCjs8pW?= =?us-ascii?q?mHGbDHBw+Q9F9mr27TE5CsL3yXKmMWzdN+RBmaIUxSmw4UUysnkZ4+DACl3tTh?= =?us-ascii?q?cF1+5jAT+FH3tgdMxvhvNxnlXWfVvB2oZSssSJiDMBpW6RlP50LPPsya6uJ8AT?= =?us-ascii?q?1Y/oG7owOXMWGbYRpHDX0SWkOYHV/jJqeh6cPG8+eGGuq0N+HObqmWqexCS/eI?= =?us-ascii?q?woqi0pF88zeCLMmPO2NtD/k82ktDRn12AdjWmzAVRywQjSLNYNaRpA2g9S1vss?= =?us-ascii?q?C/7PPrVRrp5YuVEbRSKc1v9gu4gaeCLe6Qnzp5KThZ1pMK33DIzqQQ3F8IhCFq?= =?us-ascii?q?bTWtFq4AtSHVRqLKhqBXFwIbaz90NMZQ96IzwBJCNtDditP0yr54ieU4C1ZbWl?= =?us-ascii?q?P/hM6lf8sKI3uyNFnfHkaEKKyGJSHXw8Hwea6zVKZQg/tOuB2/ozaUCVHjMy+Y?= =?us-ascii?q?lzbzVBCvLPtMgzuBMBxapYG9dAxiCXL6QNL6bR27M992jToszb0ymHzKKXYWMS?= =?us-ascii?q?JgfENVsr2Q8SRYj+1kG2Nb8HpqN+aElDiC7+TDMZYZq+VrDT57l+1E+3Q20b1V?= =?us-ascii?q?4z9YRPZtgivdssZuo026kumI0jdoSxtOqjlMhIKNpkhtJLvW+YJBWXne+hIB92?= =?us-ascii?q?KQCw4Fp9F9EN3gp7hQysTTlKL0MDpN6d3U8tECB8fKM8+HN2IhPgTvGD7RFgQF?= =?us-ascii?q?TDqrOnrYh01Siv2S8WeVrpcioJj2hJUOUqNbVEAyFv4CFkRlG9kCLI1tXjMjkL?= =?us-ascii?q?+UksgI6mGkrBnWWspavYvKWe6VAfXqNDmWl6JEZwcSzbP+M4sTKpXx21Z+ZVli?= =?us-ascii?q?gITKB03QUMhOoixhag87vl5A8H15Tm091ULqdB+t4GMTFf6zmx45lBFyYeIz+z?= =?us-ascii?q?fw+103PEbFpDMskEktntXomTaRfyDrI6e0RoxWCC30t1MtMpzhRQZ1dg6ynU1+?= =?us-ascii?q?ODfCWb1Rk6NqdXp3hw/EpZtPBflcQLVeYBAO3vGYee8n0U5ApSWn3kJI/urFCY?= =?us-ascii?q?F/mwstf56st2hA1BxjbdIvI6zfOrZJxEBKhq2Spi+oyvwxwAgGKkkQ92OSfigI?= =?us-ascii?q?t1EWObkiJiql5fZj5hKYmztEYmQMUOAqov1y/EMnJ+uA1z7g06JEKk2pKuOQNb?= =?us-ascii?q?2Zu2ndms6TWV4/zFkIl1NC/bl4yscsbVabV101zLuQCxQINdDOKQdLYMpO7HLT?= =?us-ascii?q?ZzqBsf3RwZJpOIWwDu7oTfWQu6kJmUKrBgApH5gL7sQaBZSjyl3XLcL9IL4C0x?= =?us-ascii?q?Ut6xzhJE+ZA/RRZBKLjDAHrtm7zJ9wx4lSODcdAGR6MSis6bbXoBIqjOCEXNcs?= =?us-ascii?q?bXcQRpEEOW4uWM2mhy5ZuGxNDCKp3eIdyQiC6SL8pyvLATbgaNpjYeubagl3CN?= =?us-ascii?q?Gq4zk/9ba5iULP+JXEO276LchiusPI6e4CpJaHEfNVQqN7s0fAm4lVXHOqU2nX?= =?us-ascii?q?EdGpPZTwbZcjbcDsAHagTlO/ky41T9v2PNu1MqiIgAToRYFIsImb3DEuLtKyFj?= =?us-ascii?q?AeGhhqvO4P/qR8ahMfY5Ajex7nqxw+N7CjIAefytihWWKtKTpKQPZB1eq6YrxW?= =?us-ascii?q?zywrbu+80nQtVYo1z+it/k4LXZ0KgAzeyeylZ4ZATSj5AmZddBnXpSoli2hhMf?= =?us-ascii?q?4/zfwhzxPOqlQTKS2EdPJ3Z2xepNEzH0mSIHVsBmo/XV+cgpLJ4hSw0LAK4ytd?= =?us-ascii?q?g9FU3PVKsHjjv5/fZDasV7KuqZjOriUvc8Mpo6xrPozlOMeGs4nenjPHRpnKrg?= =?us-ascii?q?KFSDK6F+ZdmtVIOiJYRvhIln0lOcwBvYpB8lI/WN4jKbJVFKQioaunZiZjDS4X?= =?us-ascii?q?0SAWTZiA3CAYjue6xbTaig+acI4+PxwcrJVCntwdXjZsYiwDuaCuTIrWl2qLS2?= =?us-ascii?q?QRJgcc8xhM7hoaloBsZuDl/JbITJhUxj5Muf10SCzLGYJz+lvnUGGZm0b4R+ul?= =?us-ascii?q?k+yo2wJSw/bs0tgUWB5/FUhdyfxZllEtKL1tLakfoJLKuCeSdUzmpGLt1PemJF?= =?us-ascii?q?5JxMzabVH3EIrFtWv5Ui0d43IURpRCyHDBGpsMjQV1cqErpE9DIIq+YEbx+yQk?= =?us-ascii?q?x5h1H7m/Tc2k3UwlrWsARyuwENpMEOBmsFPWWD15eJ+nspPlNItOQmVI4p2St0?= =?us-ascii?q?9ZkFlxMy6+0ZdcKsdN4iISUzhLvzqducW9SNFZ2c52FJIMJc9/tGn7GKNBIpeR?= =?us-ascii?q?onk2tafoyn7W4Tw8t026xDqrEa+iU+1Z53EeGhkuJ2mGpUkvFfEj8mHO8l3Ws1?= =?us-ascii?q?B0+OlaBr6TjUVxvjl9H5ZOBipX2nC/NVhzSmdJs/lCIqTPb8NcW+UyZQOoOxEm?= =?us-ascii?q?Cf4m2EmJ8FponXvlZix9rRFW+ybDUAkoTSMVmKvimSUCqsG7Pj8XU5JIYi87by?= =?us-ascii?q?jfLwKUhDtaswtBZEFyQ5AWHNJF9K8B3YdO+crCU0msIzkfXBN+LgI4zeZflUlb?= =?us-ascii?q?vUWafiDSExGleuvRvR1sY8iRttKpI+rk8wtdjIPorvw4/b0ZR3K6gQ2tXczer4?= =?us-ascii?q?jku9KRuEuBaLv0Pu+hbXLPVzXDkRewhbI4AJbQ5CjTLBBXK59kxno4eZLhE3LE?= =?us-ascii?q?PQxaJ6IHIEpWTbp6ZstbreBafcBkZL0E+atqBhKZWBzjBpCgrP5bIVnNXzjeKT?= =?us-ascii?q?uO8vCnq4LJ8bPdUfTgZtCLx3vfW6J3JYt65iPmFLf2yoJe4U322up39kxmV1fG?= =?us-ascii?q?NTyBrM77KQMP/sWicVHivpIxFzPMHJhwiGbtxl1Hd8cPXy2q6ooXx41E53vrVO?= =?us-ascii?q?J41lTzsPdI+Ll66Ik35LRpxtmoJavILvRaq0BnCACOBgp27pUtHHR/R2dJb+AM?= =?us-ascii?q?LvfeZ78Ugt3oq+/tDaAX7weV++NBY9vdO07BgtW/Ci2bSRFcngcOsyQaLgyH1/?= =?us-ascii?q?6BgaB0V92ope3k2kIp/1i+LwIJzLF36oeC4aqEvujXbwHezbIcQKjlWtvzrqgw?= =?us-ascii?q?u0OV/fAklqQBemp7Yw29F+gSS9ASy3z8za8wyyIsCMTDE6jm+PFdS3IzhijglI?= =?us-ascii?q?xlH1UKBvMUGqKG/YJanmojmuzZMNgWfrpDmmaJGx6kCKUNyWW36yuNPWlqng3O?= =?us-ascii?q?0wzqQWyt9lP2qjV4QSTUxdf5jkVVTqW3BVtVXyexP094sS+APA3stNXtoqQ59k?= =?us-ascii?q?A2MmvjtNKWj2usI7ZXEsLwJdCGJik0vl0XhoUrRtOzwYAbBca9INAJ/X5idPTe?= =?us-ascii?q?732kkzRdo6ZHgIrT+dqV9enWHXa+ia2at7SNyypCxng+o14/9siqNuvS6N2SX/?= =?us-ascii?q?Soy2ERQj97uwvaWh64qqfWr14KNkOW10fLgpYFPslD3Xk/1EHp+vQsQM4p+AVZ?= =?us-ascii?q?DIbAaOsIpSrvNzvs3Vaff9U3WzGc0ztWG1L4Clx4F7Y82W3upsLJlHHQ+1IySo?= =?us-ascii?q?l2aUPnmQR9D58kJkI19FgX3i0DHBAMaRGaFr6nH1jqIJAfVUcddRSIwqS1dr0w?= =?us-ascii?q?3U1pzbOl/PXTYvBkB6oRKvZdiRaDk0NaGpINv6wRWrB8e15B9K7PvAfiFoznUu?= =?us-ascii?q?P6mno3KPK6XNpV8d0Dt3sl+AawXQCs6ZBZ77YUkJqIbLJLYYDQvMBg6Edq/SYP?= =?us-ascii?q?eTZRgBdjjxO4X+ccpPrg4tTCq5qn9OKuVKcrR+UK+Bk5HHx+gIHsgF8/odHW2e?= =?us-ascii?q?BcSpfWiYjl8wBCPWSKuIDE3Bl4M+YOLJirfLl4/XUdOyceP24OPcaRa/Qk/y9t?= =?us-ascii?q?Kivc51hYDcMKe9wVJ9fCmQFbik3oRLFc7NHbFUWCC4dubcwo6XT4yCwt+5smTu?= =?us-ascii?q?ng8CO2JYzY71xVMPNMlj9sm8zepOgV2vfSDCkX4WWHZBh12CyC1oKNB+z2/eqS?= =?us-ascii?q?1NHeT0kGETIuU4dBODqC/hSqRuWrm5XvTgOU7cjzjJUldE2OQnyxnaIFsrtDEO?= =?us-ascii?q?NbjiX0wCJeF4DviP6Ptdqj9ndXvEVdEIlv9R3FBLlfPpJjNBvklMmkXFRzCzDj?= =?us-ascii?q?d8HTchouvOuWyfkW4+ViKUTxeY8bLggDy7Lg5npfVhFuR6LuvlaFQeIRY8NrSP?= =?us-ascii?q?bDrnBT9YJgJLEAMUOYpJzrtDhIrk45ABMnab83tDxadVLOkBdTW6nqpL4KkhEc?= =?us-ascii?q?XsJhuU9QBWKwP3oz5zXbWqROl6mdEeEb/DqVQKwPVUVoLyx/Tgi62JVrYbSpm+?= =?us-ascii?q?5IvnlBniNnr/ggyyZmSwekuS3wu6IN3iot+LO/tDUBv3xJVPmRkyfMCVVe0fsL?= =?us-ascii?q?jKYcC3D56Vy/YXkOd5Xy4Lh5Jcv68Yku/nU/bQ8lfyIYQeSqEzvwgL+QAoyTrN?= =?us-ascii?q?JcgwaAuMTQbbCpKygfLbA9yQ/+SHh81Qjehwxk8GwRQjWv9NUkPpmyOd45xiq0?= =?us-ascii?q?HmjWbFQM7b1HsMv/sV4GV+U3ZklnwGp9zsiLXCsNS9LTG2wtlAgrdX1EcI5f6R?= =?us-ascii?q?8dD6QojTKIvq5I/w4KZDfUFp+o+pLXncfO2HkyUc1mxmTIqa2ZnpkqymFqm8to?= =?us-ascii?q?7i6Sv3Qfb+7YU89sA3jr0Ydfze3+Z+mzve0cTYtmyaihUOUcPcW5/mu2wppqUF?= =?us-ascii?q?e/xrsCB1q5LPMDxrDDXie5SG2YXP+Gc3SNnzklMU79+x2oIkcxaMhUs083KvHC?= =?us-ascii?q?iYJElw39TbN0QT2dpVrazGwgMuMacBk7uIW9dAwJS+4RYfaTJe40zP04FlQMc2?= =?us-ascii?q?fDHTFqBO+urV6tgI97Nm177krkZ+Tt7hvrMMCWGhkDDY7asoBx9uKnSW6bPn9g?= =?us-ascii?q?1hJyNlFu9+jDD1QxqvNcc5GJkNjIgNR71fQKd+1jMC06vt4TlJlu6YyT0MeNah?= =?us-ascii?q?He0Ir9JcvSoviDGP3fzkIqem5AXroeewP16J0wPsQlVL3LAbtZoRMcCLA0QJM/?= =?us-ascii?q?M2fx9bl0Ix1ofw/QZbS0h8zqqfyRZptQuXDa9FUwLD3Tuxcb0Py7URR7b4y2h3?= =?us-ascii?q?X1OJ0xSCpBr8dsChR6AoRCAMYArwu7A56Ohq63kdix+1l1u+USq6r/FujK1Mil?= =?us-ascii?q?34V2R5Va4kiLMyjKCalzhkRqlP+yguvB0pbtFcPiY80LW/ZhTm7DdLDGAp21Ki?= =?us-ascii?q?iSNcLkZ05G77mc3ap9UhWQYiD5QqWHuDSgNPVl+kU71pd4cfHSzDM36bHb38H+?= =?us-ascii?q?Z2ZBpiestXSJLodQ7ETWBezCWBJZUeGF/3hhHa0Wa4v06egPPdstztiA4wl88i?= =?us-ascii?q?5C39WdI6e7tULM2Vx0dYjdLET33yY2QpQKIBulPUsrm2/ZpWzXAW5AIci8Nclt?= =?us-ascii?q?nNGVAwTo50ZrhW4tZm9BGmzvRdqKJ2gb2sS+axOO9AJKCdYDguG2dVQ/tq2oRu?= =?us-ascii?q?liIo9FlvmytLUbjdZpLDnCRMpAMCHTK795JSFcDvjJpFg0Yh4EtKU1Wog1ZZiS?= =?us-ascii?q?Ok8HNlmPyT/qxwvYzUL0b8Cs1LqOICsO6XpI1LXJ0TxNpwmipfaZmdfvUKvHY5?= =?us-ascii?q?7qRvLSKzQqVjWbRTQ0DEao9kyptOYEvfqCPGcfuUoYYyyIBw4PvaBvqt7QAnXU?= =?us-ascii?q?me15c50AnOqaVDzoSC1kiKoyAT5GtU+WTPUYDwnWbmHugG5HtQy8Iv9D52nlb7?= =?us-ascii?q?yFxqZPXewZHJdMeOWDQ9TEYfBeOysoljIBNea+et3cqKw50kjJTWsCCKTI8keR?= =?us-ascii?q?TEuITfyd3T7rWp8Vv4cssCoy5t3QhjN3E7jPP7uHvD6u/Iu4gzqZtODdTWQtfV?= =?us-ascii?q?I6gPgDAGiAxxlALnsIC9cLt0HxWqSAfVpD1Go1ieJy3B8BYAZzUnpo0n1Sh/u9?= =?us-ascii?q?H9NWRkMajGOpWv0JcE54ACk2/UCU/g2hKeAH7NveQ25Y66skVZsWLP5u7pLefq?= =?us-ascii?q?QX3qUHxjVj9Rcmvj2dAlUVtQeM967dDeoo3bFZzXUp9PFxGEeUSnXQdXaRmdnu?= =?us-ascii?q?MN5G2So7+SOs7MHTpO04ceECqg=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2FhBADav5BY/wHyM5BdGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgyiBWRGOUahLKIg3VwEBAQEBAQEBAgECXyiCMxuCIwI3FCALAwMJAhcpC?= =?us-ascii?q?AgDAS0VHwsFGASJQA2uMyYCixUmj1YCEQFoggAMgw0FjzR+iyWRfgKBd4hWDIY?= =?us-ascii?q?bApJ/WHYeBwIRCBsPO4Q8HIF/V4VuDxeCFgEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 31 Jan 2017 16:52:53 +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 v0VGppSg030205; Tue, 31 Jan 2017 11:52:01 -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 v0VGpnBe014757 for ; Tue, 31 Jan 2017 11:51:49 -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 v0VGpmHW030199; Tue, 31 Jan 2017 11:51:48 -0500 From: Stephen Smalley To: selinux@tycho.nsa.gov Subject: [PATCH] selinux: fix off-by-one in setprocattr Date: Tue, 31 Jan 2017 11:54:04 -0500 Message-Id: <1485881644-17740-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: Stephen Smalley MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP SELinux tries to support setting/clearing of /proc/pid/attr attributes from the shell by ignoring terminating newlines and treating an attribute value that begins with a NUL or newline as an attempt to clear the attribute. However, the test for clearing attributes has always been wrong; it has an off-by-one error, and this could further lead to reading past the end of the allocated buffer since commit bb646cdb12e75d82258c2f2e7746d5952d3e321a ("proc_pid_attr_write(): switch to memdup_user()"). Fix the off-by-one error. Even with this fix, setting and clearing /proc/pid/attr attributes from the shell is not straightforward since the interface does not support multiple write() calls (so shells that write the value and newline separately will set and then immediately clear the attribute, requiring use of echo -n to set the attribute), whereas trying to use echo -n "" to clear the attribute causes the shell to skip the write() call altogether since POSIX says that a zero-length write causes no side effects. Thus, one must use echo -n to set and echo without -n to clear, as in the following example: $ echo -n unconfined_u:object_r:user_home_t:s0 > /proc/$$/attr/fscreate $ cat /proc/$$/attr/fscreate unconfined_u:object_r:user_home_t:s0 $ echo "" > /proc/$$/attr/fscreate $ cat /proc/$$/attr/fscreate Note the use of /proc/$$ rather than /proc/self, as otherwise the cat command will read its own attribute value, not that of the shell. There are no users of this facility to my knowledge; possibly we should just get rid of it. Signed-off-by: Stephen Smalley --- security/selinux/hooks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index a5398fe..6a047bf 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -5882,7 +5882,7 @@ static int selinux_setprocattr(const char *name, void *value, size_t size) return error; /* Obtain a SID for the context, if one was specified. */ - if (size && str[1] && str[1] != '\n') { + if (size && str[0] && str[0] != '\n') { if (str[size-1] == '\n') { str[size-1] = 0; size--;