From patchwork Fri Nov 17 13:09:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Carter X-Patchwork-Id: 10062713 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 A6D126023A for ; Fri, 17 Nov 2017 13:09:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 972AC2A7FA for ; Fri, 17 Nov 2017 13:09:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8BB372A843; Fri, 17 Nov 2017 13:09:49 +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 UCOL19PA10.eemsg.mail.mil (ucol19pa10.eemsg.mail.mil [214.24.24.83]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 913342A7FA for ; Fri, 17 Nov 2017 13:09:48 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.44,409,1505779200"; d="scan'208";a="381880902" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.2]) by UCOL19PA10.eemsg.mail.mil with ESMTP/TLS/AES256-SHA; 17 Nov 2017 13:09:48 +0000 X-IronPort-AV: E=Sophos;i="5.44,409,1505779200"; d="scan'208";a="5930779" IronPort-PHdr: =?us-ascii?q?9a23=3AIg2ItRO0gGw0UzpPDMIl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0L/v5rsbcNUDSrc9gkEXOFd2Cra4c06yJ7Ou8ByQp2tWoiDg6aptCVhsI24?= =?us-ascii?q?09vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7?= =?us-ascii?q?Ovr6GpLIj8Swyuu+54Dfbx9HiTahfb9+Nhe7oAfeusQZgIZpN7o8xAbOrnZUYe?= =?us-ascii?q?pd2HlmJUiUnxby58ew+IBs/iFNsP8/9MBOTLv3cb0gQbNXEDopPWY15Nb2tRbY?= =?us-ascii?q?VguA+mEcUmQNnRVWBQXO8Qz3UY3wsiv+sep9xTWaMMjrRr06RTiu86FmQwLmhy?= =?us-ascii?q?cdMz4y7X/ZhMp+gqlGpB6tvgJzz5LRbIyTKfFwfL7SfckCSGRBQMhfWS9PDISh?= =?us-ascii?q?YYsXDecNIOhVoJfmp1YVsReyGROhCP/1xzNUmnP727Ax3eQ7EQHB2QwtB9YAv2?= =?us-ascii?q?7RrNrrL6cZTP64w7PSzTXfcfxWwyr25Y/KchEvvf6DR6hwcdbPxUQ0CwPEjkmf?= =?us-ascii?q?qYziPz+P0OQNqHKU4/BvVeKolW4qsgd8qSWsyMc0koTFm40Yx1/e+Sh53Yo5P8?= =?us-ascii?q?O0RUFlbdK+DZddsTyROZFsTcM4WW5ovT43yrgBuZGmYicH0I8nxxvDa/yfdIiI?= =?us-ascii?q?/w7jWP6RIThmgHJlf6qyhwqo/ki6y+38S9K03ExWritFjtbMtncN2wbV6sebUf?= =?us-ascii?q?ty4l2t2TOO1wDX8u1EIEY0mrTHK5M537I9mZUevV7DEyPrgkn6kqCbels+9uS1?= =?us-ascii?q?8+jnZ6/ppp6YN496kAH+NaEul9SkAesmNggOXm6b+fmz1bH65kL5R6hKjvsqna?= =?us-ascii?q?bHq5DXPtgbp66lDA9V1YYv8RC/Dyy839gCknkHK0xFdAqdj4f1I1HOPOz4DfCn?= =?us-ascii?q?jlSulzdrwerJPqHhAprXKHjOi7XhfbF7605Z0gUz1sxf6IxOCrEaOv7zXVXxtN?= =?us-ascii?q?PABB8jLwO02/rnCMl61o4GW2KPALWWP7/RsV+T4eIvJeiMZJEOtTbzL/gl+vHv?= =?us-ascii?q?gmQkmV8bYampwIEbaHeiHvRpO0+Ze2bjgs8dEWcWuQozVOLriFyGUT5WeXmyRb?= =?us-ascii?q?kx5j8lB427CofDXJqigKSb3Ce8HJ1ZeHxJCkyWHXfvbYWEVO8GaDiOLc95jjwE?= =?us-ascii?q?Sb+hRpc82h6ysQ/6zLxnLvbJ9iADq5LsysJ15+zSlBE18zx4FcKd3H+RT2tshG?= =?us-ascii?q?MHWyc23LxjoUx60lqMzLR4jOZCFdFI+/xJVQI6OoLGwOxhF9D+QATBccmVSFy+?= =?us-ascii?q?WNWpHSkxTs4tw98Je0t8G9SjjhfF3yexBr8Vk6WHBJ0y8q7G2Xj+Pdx9y3XH1K?= =?us-ascii?q?k/kVYqWM1POnO6hqRn7QjcG5bJk1mFl6atbakTwjbN+32ZzWqPp0FVSxZwXr/f?= =?us-ascii?q?XXAefUvWtdD56VneQLCwE7gnNRFBycGaIKtQdtLplUlGROvkONnGbWKxgX2/BR?= =?us-ascii?q?CUybONd4rnYGAd3D3cCEQdiAAS822GORI5Bie7rGLUFCZuGk73Y0Pw7el+r2u2?= =?us-ascii?q?TkwuwAGJaE1hyqG4+h0PivyfTPMTw6gIuCA7qzV7BFy9xc7ZC8Kcpwp9e6VRec?= =?us-ascii?q?ky70pd1WLYqQN9JIetILp+iV4baQh3uFnu1xpvAIVajccqtG8qzBZ1Ka+AylNO?= =?us-ascii?q?ai6X0Iv/Or3SJWj+5havZLDK2lvGytaZ5r8P6Ogkq1XkpAypDUQi829g09lOz3?= =?us-ascii?q?uR/Y7KDAwVUZP/V0Y47R56q6vcYiYj+4PezWdsPrWssj/ex9IpA/Moyxi6cNdb?= =?us-ascii?q?LKOLChXyE9YBCsiwNuMqgUOmbg8BPOxI8640JcymfeOc2KG3JOZggC6mjWNf7Y?= =?us-ascii?q?Bhz02D6it8RfTM35se3/6Y2Q6HWCvmg1e6rsD7g4ZEai8OHmCn0yjrGJZRZrFu?= =?us-ascii?q?fYYMEWquJcy3xtF6h5HzQH5V70SsCE0c2M+uYxaSaEb93QJI30QNvXOngTe4zy?= =?us-ascii?q?BzkzwxsKqf3TDBw/jldBodIGJEWGlijVDqIYi7lN0aWEmobw4zmxu/4kb23a9b?= =?us-ascii?q?pL5wL2PLW0dHYzD2L31+Uqu3rreCZ89P6Ig0sSlOS+Szf1SaSr/7oxsH3CLuBH?= =?us-ascii?q?BexCg6dzGsu5X2gwd6hHibLHltsHrTYdtwygvH5NzAWf5R2SILRDN/iTnTAliz?= =?us-ascii?q?IcOp8smTl5bNqe2+TH+hWYFIcSXxyoOAriS773VwARKjh/CzhsHnEQ8i3C/4yd?= =?us-ascii?q?ZqUz7IoQ3/Yob10aS6KuRncVd0BFPm7Mp6AI5+mJMqhJ4MwXgamomV/X0fnGfr?= =?us-ascii?q?K9pbxKb+Y2QVRTERxd7V/Bbq2Fd4I3KU3IL2SG+dwtB7a9mhZWMWxzg94NxUB6?= =?us-ascii?q?ea67xEhyR1rUSioQLXf/d9gi8XyeEy534Cn+EJpA0twz2DArAUAEZVJjLslxKV?= =?us-ascii?q?4NC+tqlXYnigcaSo3kpkgd+hFK2Coh1bWHvhYpctBzJw7sFkPV3Q0X3z9oHldM?= =?us-ascii?q?Debd0JsB2YiRDAj/JaKJgpjPoFmTJnOX7hvX0i0+M7gwZh3ZemvIiALmVg56y5?= =?us-ascii?q?DQBFOT3yfcMc4CntjbxZnsaUwY+gAolhFi8MXJvyQvKiCCgSuuj/NwaSDD08rW?= =?us-ascii?q?+WGb/FEg+b7EdpsW7PE4yxOH6NP3QZy8ttRAWGJENDmg8URCs1koQ/Fg+02Mzr?= =?us-ascii?q?aF156SwJ5l7kthtMzfplNwPlXmbRvguoby07SJyYLBtW9QxN/VvaMcmE4uJ0BS?= =?us-ascii?q?FY8YWrrBaRJWyDewRIEWYJV1SKB1D5ILah+MLA/PKeBuqiKPvOeq6DpvZCWPeN?= =?us-ascii?q?356v1ZFm/zmUPMWVInZiF+E72lZEXX1hHcTZgS8ASzQPly/WYc6bpQ28+jZrrs?= =?us-ascii?q?Cx8fTrXhjg5Y2TBLtTK9pv/wq6gaCZN+6fnCx5MypX1osQxX/Uz7gSxEYShD91?= =?us-ascii?q?eDazF7QAtDLNTKXLl69WEREUdT18ONFP76Im0QlHIdTbhc/t1r5kkv41DE9IWk?= =?us-ascii?q?f6lc2uYcwKInq9NE/cBEqRL7SJOyHEz9vsYayiTb1QjeNUtwC/uDuAD0DiPi6D?= =?us-ascii?q?lyTyVxy1P+BDlj2bPAdZuIG7aBptDnLjTN3+YB2hLNB3lSE2waEzhn7SLmEcMD?= =?us-ascii?q?d8c0RLrrCL8CxXnO5wG21b4XpjN+WEnDyZ7+bAIJYMrfRrGjh0l/5d4Hki0bRV?= =?us-ascii?q?4ztLROJrlybJqd5uu0+pku+KyjV9URpOri1EhIWEvEl4PqXZ7JZAU27e/B0R9W?= =?us-ascii?q?WQFwgKp9x9B93zvKBQz8LDlLj0KDZD7d3U+9ATB9LTKM2ZM3osKgbmGDnRDAQZ?= =?us-ascii?q?VzGrLn3fi1ZbkP6M6n2ftoI6pYT0mJoSVr9bU0Q4FvAaC0RhAtMPO5J3XjQqkb?= =?us-ascii?q?6VksEI+Wa+rBnWRMVfoJ/LTPSSDuvzKDyBl7lLewMIwa/kLYQULoD73VJtZUN+?= =?us-ascii?q?nInRGErQWstNojF7YQ8yu0VN83l+Qnc12037dgOn+GUTGuKsnh4qlgt+Zvwg9C?= =?us-ascii?q?3y7FcsOFXFvjEwn1Uxmdj+mj+RcSTxI7q3XYFYEyr0rVY+M5PhTwZzcwKygVRu?= =?us-ascii?q?NC3YSLJJk7tgaWdrhRfBtptIH/5cS7BLbwEUxfGWfPgny0pTqj+gxUNd4uvFE5?= =?us-ascii?q?RinhMwcZGwt3JAxx5jbNktKKPNPqVJ0FlQib+VviKzzO8x2hUeJ0ED8WOJZiEH?= =?us-ascii?q?pFEINqMnJyq0/u1g8wqClCVfeGIUTfolvupq9l8hO+SH1y/g17lDKlqvOOyZLq?= =?us-ascii?q?KZvHPNlcGOQlMtzE8IkFNF/bdu28c5b0WUT1wvzKeWFxkRLsrNNwVVb8tU9HjO?= =?us-ascii?q?cieDqvnCwZVwP4qhDO/oVvOOuLwSgk26AAYjB54M4dgZHpmwzEHYKt/qLKIEyR?= =?us-ascii?q?Uo4wTrOFWFDfRSdR2WkTcGo9uww4Rt0YlbOD4dHX13MT+r6bbPug8qnP2DUc8s?= =?us-ascii?q?bXceX4sLKmw5V9W/my9ZuXRACz+33fgCxQeZ7j/zvCLQACDyb9p+fvuUYw1jCM?= =?us-ascii?q?2u8zUl76e2kULX8onZJ2ziLtttpNnP5PgAqJmaFfNbU6N9s1zGlIlCR32mSWnP?= =?us-ascii?q?EcS6J5LocYkjccT0CmqmUly4kz81QNrxPNepLqiMnw7oQJ1Zv5SF0z84NM+yDD?= =?us-ascii?q?ceFw13p+EZ66J2fRcDbIYjYR70qwQ+MLSyIB2e0tWvX2mtKTxWT/1EzeuifrJZ?= =?us-ascii?q?0jAiY/O9xnY7Up46yOy3/lIXS5ERkhHS3/CjaJdCUSLrAHxSZx3PpTYll2hmLu?= =?us-ascii?q?sy2P0wwAnPsVYHKD2LaPZpZ3Zav94iAVOSIHN2CmU8R1+dgorD4hKs374I8CtH?= =?us-ascii?q?mtZYy+tFv2bivpXHejKjRLSrqYnJsyonddUnrbd9PpDjIsuHsZPenybQTJrLvw?= =?us-ascii?q?2ETiG1CeRVlsJXICJCT/lCgXslNtAeuYpd9UoxUd8zJ7lVB6k2pbCldyZkDS8U?= =?us-ascii?q?zS8WTI6B0iYNguGg1LvekReQbYktMAcevJVEnNQdTzZ8YjkCq6+7S4XWi2iER3?= =?us-ascii?q?ARLwcJ8ARM4hgMloxrc+Dk4YrITYNMxCVMr/JyTCTLCoFi90HnRWGOnVj4VPKh?= =?us-ascii?q?nvSo3QJU0PLjzN0bVwB6CUdD2+ZWjEspJapwK6kIoIHKtDqIeln7vGLp0+SmI1?= =?us-ascii?q?ZQxdfTd13iA4rPrXD8XTEE+X0IWY9Pz2nSFYgVkwp8c6sruElAIIW9dUrk4Twr?= =?us-ascii?q?2ZhpFaGiVc+331YlsWoGRyCyHtpBEe5mqkjYWDl4bJ2wtZrqJY1SQndO952ZtV?= =?us-ascii?q?hZil9hMymjyZpTM8tN+CIDXCBToTWBu9u/UM9D2choAJIXP9hwpWz9F71eOJiN?= =?us-ascii?q?vXI5p6bjynnH9DAgqF263im8G7ekT+JF+G0TAh4mJ2qCpUUzDeYg72nf/0vRvV?= =?us-ascii?q?Bz+udUGqKAjV5toDpnGJBBGCpJ32i/L1tvVHlGr/laKKPNfsxGXfY9eB+vNAYi?= =?us-ascii?q?FfM920yJ+l90kmnnbyNusQtV5j7SUxMyVSYLnrfngScepd2/OT8GV5JIai0sbz?= =?us-ascii?q?/eKwKHgy9YoQpfZlpxW5AeH9ZF4a0U0pVS/sreU0ajMyUFUAZlNgIi3vpVjVRD?= =?us-ascii?q?v1mAeSDBEQqocu7CsgFtfciPssGmMe/0/BpDioP7quA37bsDR3yhmQ2pX9/es5?= =?us-ascii?q?XwttqQtkuBbK34KfGzYWfdTDjQihC9nbUkAIPQ/yjUKwpbL4N1yWQ/bJjkFG7L?= =?us-ascii?q?OQhGJ6MHKEpaT696b85GrvpdZ89+d6YD4bVtCQ6fRhPzBIyvq+FLLlTJSjTYIS?= =?us-ascii?q?WB6Ou/rp/N4rHGVejvfMqMx23AQ65tOJd19yX7Ea/w0YBC4kr2xutt9kRiRFjA?= =?us-ascii?q?NyCMt9XhJgUO5MW4d0viuJMpHSnMD5drjHrt3FxAeNYLQy236pQX1olV6HHqSe?= =?us-ascii?q?J3ykLzqvFd96F46Ykr5LBk0cG0JabOJvRdtU9oGAOUCh9r9pUqB2h/XHtRb/QU?= =?us-ascii?q?KPrecqUVl8fuq/r4F6YP8h2a5/RZacfbJ0HGgsSwFiuTSRhakwcatT4bLgyc2u?= =?us-ascii?q?Wem6BoSMaqu+752l4s41ekNBIGyq5i5Zuc8KqSuODXdwfRzaQDWqXyQsPztbEs?= =?us-ascii?q?tkOJ6P0qirEBZ2t1Yxe9H+gFTM4dwWXgwr42wiIwCc/DGKjg+PFbXXIjgj3gg4?= =?us-ascii?q?x9H0kRGv4MH7qL/IFek3w9m+PHNtwZbLpCmmeJFR6rCLMCz2Ck6zePKml/nh7O?= =?us-ascii?q?yw3wQX+07FLurC95QDHDwM3/nUdOTbm4G1tSUDS1NkNitzOPJgXovsLtuasp9E?= =?us-ascii?q?E2LnDktNWVmWS6ObNXBMP+K8aeISk1uFIXlIc+RsGr2Y0ABdW9J8oe/29kYfvD?= =?us-ascii?q?8WOrlDVBrL1di4rZ+MGV9e3dHWO8gK2Ct7WN2DdYx2AgvV4l9tCvKvHO5tONQ/?= =?us-ascii?q?Sy1GYdVjx/tBXFXx60rLzbsl8VNFeT0EjRhIwFItFZ3Hc/1kH85+gvWtEz+xtE?= =?us-ascii?q?FobGefwCoSr/ODzuwVaQe9g3TDWR0yNLHlLpFll1ALQ82Hjus8LNj3jQ/UMnS5?= =?us-ascii?q?JteEzmihx3Dpk4Jlg26FcN2CoDDBIBaRaFA7G0HU7lN5cLVVAfaRSb27i3Yqg3?= =?us-ascii?q?0ldpwryx+O/TbfdxB64MNvZBkAGOnEJUGo8NsaEERrJzZUNd/rbNpgf+E4jnQ+?= =?us-ascii?q?TmlX0oOP26XM9a99wZt3wl4gq4XBqv95ND77cdiJCVea9JepzMs95m70Zn/zED?= =?us-ascii?q?bCpNjwZjjxmhS+ATuPjj4sTHsJqv8uuhSKQtSP8L+BUvG2t+iJ/wgFQiod7Jze?= =?us-ascii?q?dcVpPahpj/8AxXJH6Koona2QFmKeUSM4KrYKpg93IfKigbIHIOO8aWa/Yi7CJ2?= =?us-ascii?q?NTXT5kZNAsUSatMEMsvNnhpUik7yWL1J8MrUBEOYAZ9pd88092r31Cw18ZwkX+?= =?us-ascii?q?bv9DC2Povf40hQMf1MiitsldTCpPUawPfJBygX5GOWax5rzS+YzJmNEfnw9/2W?= =?us-ascii?q?yN7IT1MGAjI2U4BFKTqA/gynRuy1mI/1XQOU7s/znY8xdUORRny3h6QFsadMHP?= =?us-ascii?q?VeiiX6wDhRDIT1iO+Us9a27mtYqEFHGp5p7RLZAKVfIol7ORPgm8mqWEhzHC3/?= =?us-ascii?q?ddrQdhozpeWWx+AM4/5kO0v5f48bLQoOy6jm5npNUgtuVLn2s06bXe0PattmRv?= =?us-ascii?q?fEo2tb6I16La8AIkSdqIbsrjhWtFA8GBUpZ6MorjxGaknOmxVYW6nwuL4HhAoT?= =?us-ascii?q?T9p5uUtXFGKrP2I+4TvHWrhPgKmXFvMV7i2ZTrYSXEVwLiN+XxS11Y1se7upnf?= =?us-ascii?q?FHqmRGnid8oPg2zTNrXx68uSzwp6IXxz0s4ra4tC8OuXZdVOWRjz/ICUlfzPQN?= =?us-ascii?q?laocF3fi6VmnbXkfbYv9/LpnKtrk9YU75XQwfwkjdTUcXeu8EyHwk7+IAouXvd?= =?us-ascii?q?JZhR6Nu8bObbioICgQLLs9yhXjR35j3QjYhhpo9nUEQim45t8+OIq9Idolxjav?= =?us-ascii?q?GWXDb1kD/KVJsNfquF4QSOs2bk9hwHl90seZWyIBXsvPG3w6jgI8c2VLbIpD6Q?= =?us-ascii?q?MGF6kvmjuIpq5G/gUObzfOHIWl/Y3QncnT1Hk4StdqwXnWqbOZiZMw131lgMh0?= =?us-ascii?q?7i+IuHQdbeDYVNVsAnfr3IdF1eP+f+mtsvwASIZ+xrSuTvsCMsi7+WSow5hrW0?= =?us-ascii?q?6lxrEbH1WnKu8DwqnUXz2iSW2CVuSBa3KMkCohMk7u+RmoKUU6aclSr08nM+vN?= =?us-ascii?q?moBTmhbkUbN1WiWQv0HUwHYkMeMAeAI8oJ2ndBASTO4Ne+icIvAjwPo6CFQSdH?= =?us-ascii?q?LJBS92BPWtsV6xnYh0J2lg4V/kbuvz6AzmNsWdGgUcG47AspFx4eC6Rn6GOXJ4?= =?us-ascii?q?yB1yPU909/rQFlgosu9cco2RncTLh9lg0O4KbfFtMSontt4UgIJj5pGe0N2Wfh?= =?us-ascii?q?HJ0pbyOdbVr+CdA/LF00sqemBaUrweYQ7u+YU6P9g5VKPXHbtYuxQcGKc7TIYm?= =?us-ascii?q?N2fr+6F+NBlzfRLJZLSonsnqofqGZplOqH/V6VI/NzzRuwAFyvyoTQx7aI2qh3?= =?us-ascii?q?ryIJAsXD5BqcNiCgd+FotVB8wAtxanA4KTmKyjid+x/kR6u/UQsarxEfDHz9K5?= =?us-ascii?q?0J90X5dE5EyHJjHRBLNkgk59lOS9nu/A0oXtCcPlYd4ET+Z7QmvZZbLHHYiyMS?= =?us-ascii?q?yONdzme05H8r+c17R5Xg+XZC/nQ6rV/BGjYe5p5UQ915xQYPvYzDtr6arSntT1?= =?us-ascii?q?eTJ1vCCm+FyAMZZEpHfDH/DTRVoAS+WO+Xx5R4ULfID086EIKtVkz9+CtVogpA?= =?us-ascii?q?9e2deIdvDy5nTH3Vh2INeBdEY=3D?= X-IPAS-Result: =?us-ascii?q?A2BYBAAY3w5a/wHyM5BcHAEBAQQBAQoBAYMQLIFSFBOPEo4?= =?us-ascii?q?xmF8QgXopigtBFgEBAQEBAQEBAQFqKII4JIJKAiRVAwkCSAgDAWwFiAFOgUQNr?= =?us-ascii?q?AY6izSDNIIHgz6IL4JvDIMUBYEtAZFajzQClH8Nk0oCl2wmDSWBdCoKAh8rgWm?= =?us-ascii?q?BU4IYRByCBVmKVgEBAQ?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 17 Nov 2017 13:09:46 +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 vAHD9Fg2013373; Fri, 17 Nov 2017 08:09:23 -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 vAHD9Cph006309 for ; Fri, 17 Nov 2017 08:09:12 -0500 Received: from moss-lions.infosec.tycho.ncsc.mil (moss-lions [192.168.25.4]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id vAHD9BSd013367 for ; Fri, 17 Nov 2017 08:09:11 -0500 From: James Carter To: selinux@tycho.nsa.gov Date: Fri, 17 Nov 2017 08:09:52 -0500 Message-Id: <20171117130952.28527-1-jwcart2@tycho.nsa.gov> X-Mailer: git-send-email 2.13.6 Subject: [PATCH] libsepol/cil: Create new keep field for type attribute sets 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: Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Daniel Cashman discovered the following: When using cil_db multiple_decls, the different cil_attribute nodes all point to the same underlying cil_attribute struct. This leads to problems, though, when modifying the used value in the struct. __cil_post_db_attr() changes the value of the field to based on the output of cil_typeattribute_used(), for use later in cil_typeattribute_to_policydb and cil_typeattribute_to_bitmap, but due to the multiple declarations, cil_typeattribute_used() could be called again by a second node. In this second call, the value used is the modifed value of CIL_TRUE or CIL_FALSE, not the flags actually needed. This could result in the field being reset again, to an incorrect CIL_FALSE value. Add the field "keep" to struct cil_typeattributeset, set its value using cil_typeattribute_used(), and use it when determining whether the attribute is to be kept or if it should be expanded. Signed-off-by: James Carter --- libsepol/cil/src/cil.c | 1 + libsepol/cil/src/cil_binary.c | 8 ++++---- libsepol/cil/src/cil_internal.h | 1 + libsepol/cil/src/cil_policy.c | 2 +- libsepol/cil/src/cil_post.c | 2 +- libsepol/cil/src/cil_reset_ast.c | 1 + 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/libsepol/cil/src/cil.c b/libsepol/cil/src/cil.c index 3fe68af8..5a64c2bc 100644 --- a/libsepol/cil/src/cil.c +++ b/libsepol/cil/src/cil.c @@ -2064,6 +2064,7 @@ void cil_typeattribute_init(struct cil_typeattribute **attr) (*attr)->expr_list = NULL; (*attr)->types = NULL; (*attr)->used = CIL_FALSE; + (*attr)->keep = CIL_FALSE; } void cil_typeattributeset_init(struct cil_typeattributeset **attrset) diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c index c0ca60f2..431cd9cd 100644 --- a/libsepol/cil/src/cil_binary.c +++ b/libsepol/cil/src/cil_binary.c @@ -567,7 +567,7 @@ int cil_typeattribute_to_policydb(policydb_t *pdb, struct cil_typeattribute *cil char *key = NULL; type_datum_t *sepol_attr = NULL; - if (!cil_attr->used) { + if (!cil_attr->keep) { return SEPOL_OK; } @@ -632,7 +632,7 @@ int cil_typeattribute_to_bitmap(policydb_t *pdb, const struct cil_db *db, struct ebitmap_node_t *tnode; unsigned int i; - if (!cil_attr->used) { + if (!cil_attr->keep) { return SEPOL_OK; } @@ -1442,7 +1442,7 @@ static int __cil_should_expand_attribute( const struct cil_db *db, struct cil_sy attr = (struct cil_typeattribute *)datum; - return !attr->used || (ebitmap_cardinality(attr->types) < db->attrs_expand_size); + return !attr->keep || (ebitmap_cardinality(attr->types) < db->attrs_expand_size); } int __cil_avrule_to_avtab(policydb_t *pdb, const struct cil_db *db, struct cil_avrule *cil_avrule, cond_node_t *cond_node, enum cil_flavor cond_flavor) @@ -2525,7 +2525,7 @@ int __cil_constrain_expr_datum_to_sepol_expr(policydb_t *pdb, const struct cil_d if (rc != SEPOL_OK) { if (FLAVOR(item->data) == CIL_TYPEATTRIBUTE) { struct cil_typeattribute *attr = item->data; - if (!attr->used) { + if (!attr->keep) { rc = 0; } } diff --git a/libsepol/cil/src/cil_internal.h b/libsepol/cil/src/cil_internal.h index 136a0049..8393e391 100644 --- a/libsepol/cil/src/cil_internal.h +++ b/libsepol/cil/src/cil_internal.h @@ -531,6 +531,7 @@ struct cil_typeattribute { struct cil_list *expr_list; ebitmap_t *types; int used; // whether or not this attribute was used in a binary policy rule + int keep; }; struct cil_typeattributeset { diff --git a/libsepol/cil/src/cil_policy.c b/libsepol/cil/src/cil_policy.c index 6d4987c4..99eb53c2 100644 --- a/libsepol/cil/src/cil_policy.c +++ b/libsepol/cil/src/cil_policy.c @@ -1085,7 +1085,7 @@ static void cil_typeattributes_to_policy(FILE *out, struct cil_list *types, stru type = i1->data; cil_list_for_each(i2, attributes) { attribute = i2->data; - if (!attribute->used) + if (!attribute->keep) continue; if (ebitmap_get_bit(attribute->types, type->value)) { if (first) { diff --git a/libsepol/cil/src/cil_post.c b/libsepol/cil/src/cil_post.c index 3e013c97..a2122454 100644 --- a/libsepol/cil/src/cil_post.c +++ b/libsepol/cil/src/cil_post.c @@ -1369,7 +1369,7 @@ static int __cil_post_db_attr_helper(struct cil_tree_node *node, uint32_t *finis rc = __evaluate_type_expression(attr, db); if (rc != SEPOL_OK) goto exit; } - attr->used = cil_typeattribute_used(attr, db); + attr->keep = cil_typeattribute_used(attr, db); break; } case CIL_ROLEATTRIBUTE: { diff --git a/libsepol/cil/src/cil_reset_ast.c b/libsepol/cil/src/cil_reset_ast.c index 8a13a1c1..43e6b88e 100644 --- a/libsepol/cil/src/cil_reset_ast.c +++ b/libsepol/cil/src/cil_reset_ast.c @@ -186,6 +186,7 @@ static void cil_reset_typeattr(struct cil_typeattribute *attr) attr->expr_list = NULL; } attr->used = CIL_FALSE; + attr->keep = CIL_FALSE; } static void cil_reset_typeattributeset(struct cil_typeattributeset *tas)