From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-5.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,NICE_REPLY_A,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 3178 invoked from network); 6 May 2022 17:07:33 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 6 May 2022 17:07:33 -0000 Received: (qmail 7869 invoked by uid 550); 6 May 2022 17:07:29 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 7837 invoked from network); 6 May 2022 17:07:28 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zhasha.com; s=wirbelwind; t=1651856837; bh=FGius3MIWcrspW03ZcW8TFPfGBY1hGamk0U2DJGlTGc=; h=Date:From:To:Subject:In-Reply-To:References; b=kEkIW9Sj616h5MBk0jf7wqsottvAEl3VStFWBr8YiuRQ/krsT6z/uCjyd6CZuoj+W FEYLahWF0M8d6Y6WEajdv/PO6rll6Et8hERulueVrDuxOlvJTvw25+ulGUSzt3/wjB rxMd7e5LESSq8lC7Nvm/kxMojVNotQuoqZbbWKro= Date: Fri, 6 May 2022 19:07:16 +0200 From: Joakim Sindholt To: musl@lists.openwall.com Message-Id: <20220506190716.0d0483778c4bf15daddc22a3@zhasha.com> In-Reply-To: <20220504201010.GZ7074@brightrain.aerifal.cx> References: <20220504201010.GZ7074@brightrain.aerifal.cx> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.33; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Fri__6_May_2022_19_07_16_+0200_gZiM4/S=.g1Gt8XZ" Subject: Re: [musl] [PATCH] pack posix_spawn file actions into extraneous padding This is a multi-part message in MIME format. --Multipart=_Fri__6_May_2022_19_07_16_+0200_gZiM4/S=.g1Gt8XZ Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Wed, 4 May 2022 16:10:10 -0400, Rich Felker wrote: > On Fri, Feb 04, 2022 at 08:09:13PM +0100, Joakim Sindholt wrote: > > On Sat, Jan 29, 2022 at 02:43:28PM +0100, Joakim Sindholt wrote: > > > I've written this patch that packs posix_spawn file actions into the > > > posix_spawn_file_actions struct padding. I'm not sure if the way I've > > > split the code up is desirable. Maybe the faexpand() function needs a > > > different name and to be in its own .c file; or maybe a different > > > approach is preferable. > > (I noted on IRC that we could also solve the problem of the "density" > of the coding space by using the 32 bits of __pad0[1] to store type > information for the 16 slots, but this does not seem necessary.) Since close and dup2 are as densely packed as possible without getting into bit packing, and those two are by far the most common cases, and since open, the only remaining action that you might reasonably want to call many times, also requires malloc every time (for the path), I don't see a need to add complexity to the reader. We should also consider the complexity of adding new actions. > One change I think I would like to make is not using the names __pad0 > and __pad directly in code. It's ugly. Instead, fdop.h could do: > > #define fa_cnt __pad0[0] > #define fa_ops __pad > > It might also make sense to define a macro for the fa_ops array limit > > #define FA_OPS_MAX_CNT ... > > using sizeof on a compound literal as appropriate. I agree and I have integrated all of these into this new patch. On multiple occasions I had to hunt down bugs related to confusing __pad and __pad0 but I wasn't sure if this solution was acceptable. > We could also for consistency (not using __ junk names from the public > header directly) do > > #define fa_chain __actions > > Not sure if that's the best name for it but it seems to make things > make more sense than writing __actions in the code that's no longer > using the pointed-to data as the actions list. Visually it's nicer just to be consistent with the other 2 fields being fa_*. Furthermore I have split faexpand into __faexpand in its own .c file to avoid increasing the .text size of all the add* functions. > I think I'm happy at this point with just doing "strace tests", but > sometime between now and next release I would like to get a better set > of tests into libc-test that cover usage of sufficiently many ops to > require allocations. Something like a test function that takes a list > of operations and builds both the file actions object and a shell > command to evaluate that the file actions were executed correctly, > using: > > read x <&%d && test "$x" = %s > > and: > > ! 2>/dev/null <&%d > > to assert that each fd is either closed or reads the expected content > (expected content could be temp files with different content in each). Testing manually with strace is still a fair bit of work if you're trying to hit the weird corner cases. I think it makes sense to just make the tests now. It might take a little while before I get to it though. This patch still appears to work fine. I have also attached the skeleton program I manually modify to test it. --Multipart=_Fri__6_May_2022_19_07_16_+0200_gZiM4/S=.g1Gt8XZ Content-Type: application/octet-stream; name="0001-pack-posix_spawn-file-actions-into-extraneous-paddin.patch" Content-Disposition: attachment; filename="0001-pack-posix_spawn-file-actions-into-extraneous-paddin.patch" Content-Transfer-Encoding: base64 RnJvbSBiMjVkNWM4MzA1NDA5YzM0YTg3NGI1MjcwMDE5OTYyMTllMTMzN2M3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FraW0gU2luZGhvbHQgPG9wZW5zb3VyY2VAemhhc2hhLmNv bT4KRGF0ZTogRnJpLCA0IEZlYiAyMDIyIDE5OjQyOjE0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g cGFjayBwb3NpeF9zcGF3biBmaWxlIGFjdGlvbnMgaW50byBleHRyYW5lb3VzIHBhZGRpbmcKClRo ZSBwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnMgc3RydWN0IGNvbnRhaW5zIDIgaW50IHBhZGRpbmdz IG9mIDIgYW5kIDE2CmludHMgcmVzcGVjdGl2ZWx5LCBtYWtpbmcgdGhlbSBpZGVhbCBmb3IgcGFj a2luZyBmaWxlIGFjdGlvbnMgaW50by4KVGhlIGVuY29kaW5nIHVzZWQgaXMgc2ltcGxlOiBfX3Bh ZDBbMF0gY29udGFpbnMgYSBjb3VudCBhbmQgX19wYWQKY29udGFpbnMgdGhlIGFjdHVhbHMgZWxl bWVudHMuIFRoZSBtb3N0IGltcG9ydGFudCBhY3Rpb25zLCBkdXAyIGFuZApjbG9zZSwgYXJlIGVu Y29kZWQgYXMgMiBhbmQgMSBpbnQgcmVzcGVjdGl2ZWx5LgoKSWYgdGhlIGZpcnN0IGVsZW1lbnQg b2YgYSBzZXF1ZW5jZSBpcyBuZWdhdGl2ZSwgdGhlbiBpdCdzIGEgY2xvc2UgYW5kCnByb2Nlc3Np bmcgc3RvcHMgdGhlcmUuCklmIHRoZSBzZWNvbmQgZWxlbWVudCBvZiBhIHNlcXVlbmNlIGlzIHBv c2l0aXZlLCB0aGVuIGl0J3MgYSBkdXAyIGFuZApwcm9jZXNzaW5nIHN0b3BzIHRoZXJlLgpJZiB0 aGUgc2Vjb25kIGVsZW1lbnQgaXMgbmVnYXRpdmUsIGhvd2V2ZXIsIHRoZW4gaXQgY29udGFpbnMg YSBjb21tYW5kCmFuZCByZXF1aXJlcyBwZXItY29tbWFuZCBzcGVjaWZpYyBwcm9jZXNzaW5nLgpJ biB0b3RhbCB0aGVyZSBhcmUgNSBmaWxlIGFjdGlvbnMuIFRoZWlyIGVuY29kaW5ncyBhcmU6Cgpj bG9zZTogLWZkLTEKZHVwMjogZmQsIHNyY2ZkCmZjaGRpcjogZmQsIC1GRE9QX0ZDSERJUgpjaGRp cjogSU5UX01BWCwgLUZET1BfQ0hESVIKb3BlbjogZmQsIC1GRE9QX09QRU4sIGZsYWdzLCBtb2Rl CgpTb21lIGZpbGUgYWN0aW9ucyBuZWVkIGEgc3RyaW5nLiBXaGVuIGEgc3RyaW5nIGlzIG5lZWRl ZCBpdCdzIGFsbG9jYXRlZApvbiB0aGUgdGFpbCBlbmQgb2YgYSBuZXcgZmlsZV9hY3Rpb25zIHN0 cnVjdC4gV2hlbiBhIHN0cmluZyBpcyBuZWVkZWQgb3IKYW4gYWN0aW9uIHJlcXVpcmVzIG1vcmUg c3BhY2UgdGhhbiBpcyBhdmFpbGFibGUgdGhlbiBhIG5ldyBzdHJ1Y3QgaXMKYWxsb2NhdGVkIGFu ZCBfX2FjdGlvbnMgaXMgc2V0IHRvIHBvaW50IHRvIGl0LiBBbGwgdGhlIGVsZW1lbnRzIG9mIHRo ZQpmaXJzdCBmaWxlX2FjdGlvbnMgc3RydWN0IGFyZSBjb3BpZWQgdG8gdGhlIG5ldyBvbmUuIFRo ZSBuZXcKZmlsZV9hY3Rpb25zIHN0cnVjdCwgYmVpbmcgdGhlIHNlY29uZCBpbiB0aGUgbGlzdCwg YWx3YXlzIHBvaW50cyB0byB0aGUKbGFzdCBmaWxlX2FjdGlvbnMgc3RydWN0IGluIHRoZSBsaXN0 LiBGcm9tIHRoZW4gb24gdGhlIHN0cnVjdHMgYWxsIHBvaW50CmJhY2sgaW4gcmV2ZXJzZSBvcmRl ciB1bnRpbCB0aGV5IHJlYWNoIHRoZSBzZWNvbmQgb25lIGFnYWluLCBjcmVhdGluZyBhCmxvb3Au IFRoaXMgcnViZS1nb2xkYmVyZyBtYWNoaW5lIGV4aXN0cyBiZWNhdXNlIHRoZXJlJ3Mgbm93aGVy ZSB0byBzdG9yZQphIGxhc3QgcG9pbnRlciBmb3IgYXBwZW5kaW5nIG5ldyBhY3Rpb25zIGVmZmlj aWVudGx5LgpBcyBhIHJlc3VsdCBvZiB0aGlzIGJhY2t3YXJkcyBhbGxvY2F0aW9uLCB0aGUgYWN0 aW9ucyByZXF1aXJpbmcgc3RyaW5ncwphcmVuJ3Qgc3RvcmVkIGluIHRoZSBzYW1lIHN0cnVjdCBh cyB0aGUgc3RyaW5ncyB0aGVtc2VsdmVzLiBSYXRoZXIgdGhlCnN0cmluZyBnZXRzIHN0b3JlZCBp biB0aGUgbG9naWNhbGx5IHByZXZpb3VzIHN0cnVjdCB3aGVuIHJlYWRpbmcuCgpUaGlzIHBhY2tp bmcgaXMgZmFyIGZyb20gb3B0aW1hbCBidXQgaXQgaXMgdmVyeSBzaW1wbGUgYW5kIGl0IGFsbG93 cyBmb3IKdXAgdG8gMTYgY2xvc2UsIDggZHVwMiwgb3IgYW55IGNvbWJpbmF0aW9uIG9mIHRoZW0s IHdpdGhvdXQgbmVlZGluZyB0bwpjYWxsIG1hbGxvYy4gQXQgd29yc3QgaXQgY2FsbHMgbWFsbG9j IGFzIG11Y2ggYXMgYmVmb3JlLgotLS0KIHNyYy9wcm9jZXNzL19fZmFleHBhbmQuYyAgICAgICAg ICAgICAgICAgICAgICB8IDE3ICsrKysrCiBzcmMvcHJvY2Vzcy9mZG9wLmggICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAxOCArKystLQogc3JjL3Byb2Nlc3MvcG9zaXhfc3Bhd24uYyAgICAg ICAgICAgICAgICAgICAgIHwgNjYgKysrKysrKysrKysrLS0tLS0tLQogLi4uL3Bvc2l4X3NwYXdu X2ZpbGVfYWN0aW9uc19hZGRjaGRpci5jICAgICAgIHwgMTUgKystLS0KIC4uLi9wb3NpeF9zcGF3 bl9maWxlX2FjdGlvbnNfYWRkY2xvc2UuYyAgICAgICB8IDExICstLS0KIC4uLi9wb3NpeF9zcGF3 bl9maWxlX2FjdGlvbnNfYWRkZHVwMi5jICAgICAgICB8IDEzICsrLS0KIC4uLi9wb3NpeF9zcGF3 bl9maWxlX2FjdGlvbnNfYWRkZmNoZGlyLmMgICAgICB8IDEzICsrLS0KIC4uLi9wb3NpeF9zcGF3 bl9maWxlX2FjdGlvbnNfYWRkb3Blbi5jICAgICAgICB8IDE5ICsrKy0tLQogLi4uL3Bvc2l4X3Nw YXduX2ZpbGVfYWN0aW9uc19kZXN0cm95LmMgICAgICAgIHwgMTEgKystLQogc3JjL3Byb2Nlc3Mv cG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX2luaXQuYyAgIHwgIDQgKy0KIDEwIGZpbGVzIGNoYW5n ZWQsIDEwNiBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvcHJvY2Vzcy9fX2ZhZXhwYW5kLmMKCmRpZmYgLS1naXQgYS9zcmMvcHJvY2Vzcy9fX2Zh ZXhwYW5kLmMgYi9zcmMvcHJvY2Vzcy9fX2ZhZXhwYW5kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLmYxZDhjNmZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Byb2Nlc3Mv X19mYWV4cGFuZC5jCkBAIC0wLDAgKzEsMTcgQEAKKyNpbmNsdWRlIDxzcGF3bi5oPgorI2luY2x1 ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgImZkb3AuaCIKKworaW50IF9fZmFleHBhbmQocG9zaXhf c3Bhd25fZmlsZV9hY3Rpb25zX3QgKmZhLCBzaXplX3Qgc3RyKQoreworCXBvc2l4X3NwYXduX2Zp bGVfYWN0aW9uc190ICpuLCAqYmxrOworCWJsayA9IG1hbGxvYyhzaXplb2YgKmJsayArIHN0cik7 CisJaWYgKCFibGspIHJldHVybiAtMTsKKwkqYmxrID0gKmZhOworCW4gPSBmYS0+ZmFfY2hhaW47 CisJZmEtPmZhX2NoYWluID0gYmxrOworCWJsay0+ZmFfY2hhaW4gPSBuLT5mYV9jaGFpbjsKKwlu LT5mYV9jaGFpbiA9IGJsazsKKwlmYS0+ZmFfY250ID0gMDsKKwlyZXR1cm4gMDsKK30KZGlmZiAt LWdpdCBhL3NyYy9wcm9jZXNzL2Zkb3AuaCBiL3NyYy9wcm9jZXNzL2Zkb3AuaAppbmRleCA3Y2Y3 MzNiMi4uNTY5NmU0YWIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm9jZXNzL2Zkb3AuaAorKysgYi9zcmMv cHJvY2Vzcy9mZG9wLmgKQEAgLTEsMTcgKzEsMjEgQEAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwog I2RlZmluZSBGRE9QX0NMT1NFIDEKICNkZWZpbmUgRkRPUF9EVVAyIDIKICNkZWZpbmUgRkRPUF9P UEVOIDMKICNkZWZpbmUgRkRPUF9DSERJUiA0CiAjZGVmaW5lIEZET1BfRkNIRElSIDUKIAotc3Ry dWN0IGZkb3AgewotCXN0cnVjdCBmZG9wICpuZXh0LCAqcHJldjsKLQlpbnQgY21kLCBmZCwgc3Jj ZmQsIG9mbGFnOwotCW1vZGVfdCBtb2RlOwotCWNoYXIgcGF0aFtdOwotfTsKLQogI2RlZmluZSBt YWxsb2MgX19saWJjX21hbGxvYwogI2RlZmluZSBjYWxsb2MgX19saWJjX2NhbGxvYwogI2RlZmlu ZSByZWFsbG9jIHVuZGVmCiAjZGVmaW5lIGZyZWUgX19saWJjX2ZyZWUKKworI2RlZmluZSBmYV9j aGFpbiBfX2FjdGlvbnMKKyNkZWZpbmUgZmFfb3BzIF9fcGFkCisjZGVmaW5lIGZhX2NudCBfX3Bh ZDBbMF0KKyNkZWZpbmUgRkFfQ05UX01BWCBcCisJKHNpemVvZigocG9zaXhfc3Bhd25fZmlsZV9h Y3Rpb25zX3QpezB9LmZhX29wcykgXAorCS9zaXplb2YoKHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9u c190KXswfS5mYV9vcHNbMF0pKQorCitpbnQgX19mYWV4cGFuZChwb3NpeF9zcGF3bl9maWxlX2Fj dGlvbnNfdCAqLCBzaXplX3QpOwpkaWZmIC0tZ2l0IGEvc3JjL3Byb2Nlc3MvcG9zaXhfc3Bhd24u YyBiL3NyYy9wcm9jZXNzL3Bvc2l4X3NwYXduLmMKaW5kZXggNzI4NTUxYjMuLmVhYjA5MTkxIDEw MDY0NAotLS0gYS9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bi5jCisrKyBiL3NyYy9wcm9jZXNzL3Bv c2l4X3NwYXduLmMKQEAgLTgxLDMzICs4MSw1MyBAQCBzdGF0aWMgaW50IGNoaWxkKHZvaWQgKmFy Z3NfdnApCiAJCSAgICAocmV0PV9fc3lzY2FsbChTWVNfc2V0dWlkLCBfX3N5c2NhbGwoU1lTX2dl dHVpZCkpKSApCiAJCQlnb3RvIGZhaWw7CiAKLQlpZiAoZmEgJiYgZmEtPl9fYWN0aW9ucykgewot CQlzdHJ1Y3QgZmRvcCAqb3A7Ci0JCWludCBmZDsKLQkJZm9yIChvcCA9IGZhLT5fX2FjdGlvbnM7 IG9wLT5uZXh0OyBvcCA9IG9wLT5uZXh0KTsKLQkJZm9yICg7IG9wOyBvcCA9IG9wLT5wcmV2KSB7 CisJaWYgKGZhKSB7CisJCWNvbnN0IHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc190ICpmaXJzdCA9 IGZhOworCQljb25zdCBjaGFyICpwYXRoOworCQlpbnQgZmQsIHNyY2ZkLCBpID0gMDsKKworCQkv KiBUaGUgbGlzdCBvZiBhY3Rpb25zLCBpbiByZXZlcnNlIG9yZGVyLCBsb29rcyBsaWtlIHRoaXM6 CisJCSAqIFswXS0+WzFdPC1bMl08LVszXQorCQkgKiAgICAgICAgXF9fX19fX18vXgorCQkgKiBz byB0byBnZXQgdG8gdGhlIGZpcnN0IGFjdGlvbiB3ZSB0byBnbyB0byBbMF0tPm5leHQtPm5leHQK KwkJICogYW5kIHRvIGdldCBhbGwgdGhlIHdheSBiYWNrIHdlIGhhdmUgdG8gc3BlY2lhbCBjYXNl IHRoZQorCQkgKiB0cmFuc2l0aW9uIGZyb20gWzFdLT5bMF0gKi8KKwkJZmEgPSBmYS0+ZmFfY2hh aW47CisJCWZhID0gZmEtPmZhX2NoYWluOworCQl3aGlsZSAoIShmYSA9PSBmaXJzdCAmJiBpID09 IGZhLT5mYV9jbnQpKSB7CisJCQlpZiAoaSA9PSBmYS0+ZmFfY250KSB7CisJCQkJcGF0aCA9IChj aGFyICopKGZhKzEpOworCQkJCWZhID0gZmE9PWZpcnN0LT5mYV9jaGFpbiA/IGZpcnN0IDogZmEt PmZhX2NoYWluOworCQkJCWkgPSAwOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZmQgPSBmYS0+ ZmFfb3BzW2krK107CisKIAkJCS8qIEl0J3MgcG9zc2libGUgdGhhdCBhIGZpbGUgb3BlcmF0aW9u IHdvdWxkIGNsb2JiZXIKIAkJCSAqIHRoZSBwaXBlIGZkIHVzZWQgZm9yIHN5bmNocm9uaXppbmcg d2l0aCB0aGUKIAkJCSAqIHBhcmVudC4gVG8gYXZvaWQgdGhhdCwgd2UgZHVwIHRoZSBwaXBlIG9u dG8KIAkJCSAqIGFuIHVub2NjdXBpZWQgZmQuICovCi0JCQlpZiAob3AtPmZkID09IHApIHsKKwkJ CWlmIChmZCA9PSBwKSB7CiAJCQkJcmV0ID0gX19zeXNjYWxsKFNZU19kdXAsIHApOwogCQkJCWlm IChyZXQgPCAwKSBnb3RvIGZhaWw7CiAJCQkJX19zeXNjYWxsKFNZU19jbG9zZSwgcCk7CiAJCQkJ cCA9IHJldDsKIAkJCX0KLQkJCXN3aXRjaChvcC0+Y21kKSB7Ci0JCQljYXNlIEZET1BfQ0xPU0U6 Ci0JCQkJX19zeXNjYWxsKFNZU19jbG9zZSwgb3AtPmZkKTsKLQkJCQlicmVhazsKLQkJCWNhc2Ug RkRPUF9EVVAyOgotCQkJCWZkID0gb3AtPnNyY2ZkOwotCQkJCWlmIChmZCA9PSBwKSB7CisKKwkJ CWlmIChmZCA8IDApIHsgLyogRkRPUF9DTE9TRSAqLworCQkJCWlmICgtZmQtMSA9PSBwKSB7CisJ CQkJCXJldCA9IC1FQkFERjsKKwkJCQkJZ290byBmYWlsOworCQkJCX0KKwkJCQlfX3N5c2NhbGwo U1lTX2Nsb3NlLCAtZmQtMSk7CisJCQl9IGVsc2Ugc3dpdGNoICgtKHNyY2ZkID0gZmEtPmZhX29w c1tpKytdKSkgeworCQkJZGVmYXVsdDogLyogRkRPUF9EVVAyICovCisJCQkJaWYgKHNyY2ZkID09 IHApIHsKIAkJCQkJcmV0ID0gLUVCQURGOwogCQkJCQlnb3RvIGZhaWw7CiAJCQkJfQotCQkJCWlm IChmZCAhPSBvcC0+ZmQpIHsKLQkJCQkJaWYgKChyZXQ9X19zeXNfZHVwMihmZCwgb3AtPmZkKSk8 MCkKKwkJCQlpZiAoc3JjZmQgIT0gZmQpIHsKKwkJCQkJaWYgKChyZXQ9X19zeXNfZHVwMihzcmNm ZCwgZmQpKTwwKQogCQkJCQkJZ290byBmYWlsOwogCQkJCX0gZWxzZSB7CiAJCQkJCXJldCA9IF9f c3lzY2FsbChTWVNfZmNudGwsIGZkLCBGX0dFVEZEKTsKQEAgLTExOCwyMCArMTM4LDIyIEBAIHN0 YXRpYyBpbnQgY2hpbGQodm9pZCAqYXJnc192cCkKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNl IEZET1BfT1BFTjoKLQkJCQlmZCA9IF9fc3lzX29wZW4ob3AtPnBhdGgsIG9wLT5vZmxhZywgb3At Pm1vZGUpOwotCQkJCWlmICgocmV0PWZkKSA8IDApIGdvdG8gZmFpbDsKLQkJCQlpZiAoZmQgIT0g b3AtPmZkKSB7Ci0JCQkJCWlmICgocmV0PV9fc3lzX2R1cDIoZmQsIG9wLT5mZCkpPDApCisJCQkJ c3JjZmQgPSBfX3N5c19vcGVuKHBhdGgsIGZhLT5mYV9vcHNbaV0sCisJCQkJICAgICAgICAgICAg ICAgICAgIGZhLT5mYV9vcHNbaSsxXSk7CisJCQkJaWYgKChyZXQ9c3JjZmQpIDwgMCkgZ290byBm YWlsOworCQkJCWlmIChzcmNmZCAhPSBmZCkgeworCQkJCQlpZiAoKHJldD1fX3N5c19kdXAyKHNy Y2ZkLCBmZCkpPDApCiAJCQkJCQlnb3RvIGZhaWw7Ci0JCQkJCV9fc3lzY2FsbChTWVNfY2xvc2Us IGZkKTsKKwkJCQkJX19zeXNjYWxsKFNZU19jbG9zZSwgc3JjZmQpOwogCQkJCX0KKwkJCQlpICs9 IDI7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEZET1BfQ0hESVI6Ci0JCQkJcmV0ID0gX19zeXNjYWxs KFNZU19jaGRpciwgb3AtPnBhdGgpOworCQkJCXJldCA9IF9fc3lzY2FsbChTWVNfY2hkaXIsIHBh dGgpOwogCQkJCWlmIChyZXQ8MCkgZ290byBmYWlsOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGRE9Q X0ZDSERJUjoKLQkJCQlyZXQgPSBfX3N5c2NhbGwoU1lTX2ZjaGRpciwgb3AtPmZkKTsKKwkJCQly ZXQgPSBfX3N5c2NhbGwoU1lTX2ZjaGRpciwgZmQpOwogCQkJCWlmIChyZXQ8MCkgZ290byBmYWls OwogCQkJCWJyZWFrOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL3Byb2Nlc3MvcG9zaXhfc3Bhd25f ZmlsZV9hY3Rpb25zX2FkZGNoZGlyLmMgYi9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxlX2Fj dGlvbnNfYWRkY2hkaXIuYwppbmRleCA3ZjI1OTBhZS4uNjM2YmZiYTcgMTAwNjQ0Ci0tLSBhL3Ny Yy9wcm9jZXNzL3Bvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRjaGRpci5jCisrKyBiL3NyYy9w cm9jZXNzL3Bvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRjaGRpci5jCkBAIC0xLDE4ICsxLDE1 IEBACiAjaW5jbHVkZSA8c3Bhd24uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxz dHJpbmcuaD4KICNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1 ZGUgImZkb3AuaCIKIAogaW50IHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRjaGRpcl9ucChw b3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfdCAqcmVzdHJpY3QgZmEsIGNvbnN0IGNoYXIgKnJlc3Ry aWN0IHBhdGgpCiB7Ci0Jc3RydWN0IGZkb3AgKm9wID0gbWFsbG9jKHNpemVvZiAqb3AgKyBzdHJs ZW4ocGF0aCkgKyAxKTsKLQlpZiAoIW9wKSByZXR1cm4gRU5PTUVNOwotCW9wLT5jbWQgPSBGRE9Q X0NIRElSOwotCW9wLT5mZCA9IC0xOwotCXN0cmNweShvcC0+cGF0aCwgcGF0aCk7Ci0JaWYgKChv cC0+bmV4dCA9IGZhLT5fX2FjdGlvbnMpKSBvcC0+bmV4dC0+cHJldiA9IG9wOwotCW9wLT5wcmV2 ID0gMDsKLQlmYS0+X19hY3Rpb25zID0gb3A7CisJc2l6ZV90IGxlbiA9IHN0cmxlbihwYXRoKTsK KwlpZiAoX19mYWV4cGFuZChmYSwgbGVuICsgMSkgIT0gMCkgcmV0dXJuIEVOT01FTTsKKwlmYS0+ ZmFfb3BzW2ZhLT5mYV9jbnQrK10gPSBJTlRfTUFYOworCWZhLT5mYV9vcHNbZmEtPmZhX2NudCsr XSA9IC1GRE9QX0NIRElSOworCW1lbWNweSgocG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX3QgKilm YS0+ZmFfY2hhaW4gKyAxLCBwYXRoLCBsZW4gKyAxKTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdp dCBhL3NyYy9wcm9jZXNzL3Bvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRjbG9zZS5jIGIvc3Jj L3Byb2Nlc3MvcG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX2FkZGNsb3NlLmMKaW5kZXggMGMyZWY4 ZmEuLjVmNDk2YzA2IDEwMDY0NAotLS0gYS9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxlX2Fj dGlvbnNfYWRkY2xvc2UuYworKysgYi9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxlX2FjdGlv bnNfYWRkY2xvc2UuYwpAQCAtMSwxNyArMSwxMiBAQAogI2luY2x1ZGUgPHNwYXduLmg+Ci0jaW5j bHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlICJmZG9wLmgiCiAK IGludCBwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRkY2xvc2UocG9zaXhfc3Bhd25fZmlsZV9h Y3Rpb25zX3QgKmZhLCBpbnQgZmQpCiB7CiAJaWYgKGZkIDwgMCkgcmV0dXJuIEVCQURGOwotCXN0 cnVjdCBmZG9wICpvcCA9IG1hbGxvYyhzaXplb2YgKm9wKTsKLQlpZiAoIW9wKSByZXR1cm4gRU5P TUVNOwotCW9wLT5jbWQgPSBGRE9QX0NMT1NFOwotCW9wLT5mZCA9IGZkOwotCWlmICgob3AtPm5l eHQgPSBmYS0+X19hY3Rpb25zKSkgb3AtPm5leHQtPnByZXYgPSBvcDsKLQlvcC0+cHJldiA9IDA7 Ci0JZmEtPl9fYWN0aW9ucyA9IG9wOworCWlmIChGQV9DTlRfTUFYIC0gZmEtPmZhX2NudCA8IDEp CisJCWlmIChfX2ZhZXhwYW5kKGZhLCAwKSAhPSAwKSByZXR1cm4gRU5PTUVNOworCWZhLT5mYV9v cHNbZmEtPmZhX2NudCsrXSA9IC1mZC0xOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L3Byb2Nlc3MvcG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX2FkZGR1cDIuYyBiL3NyYy9wcm9jZXNz L3Bvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRkdXAyLmMKaW5kZXggYWRkY2E0ZDQuLmQ4M2E5 OWIwIDEwMDY0NAotLS0gYS9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRk ZHVwMi5jCisrKyBiL3NyYy9wcm9jZXNzL3Bvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRkdXAy LmMKQEAgLTEsMTggKzEsMTMgQEAKICNpbmNsdWRlIDxzcGF3bi5oPgotI2luY2x1ZGUgPHN0ZGxp Yi5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSAiZmRvcC5oIgogCiBpbnQgcG9zaXhf c3Bhd25fZmlsZV9hY3Rpb25zX2FkZGR1cDIocG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX3QgKmZh LCBpbnQgc3JjZmQsIGludCBmZCkKIHsKIAlpZiAoc3JjZmQgPCAwIHx8IGZkIDwgMCkgcmV0dXJu IEVCQURGOwotCXN0cnVjdCBmZG9wICpvcCA9IG1hbGxvYyhzaXplb2YgKm9wKTsKLQlpZiAoIW9w KSByZXR1cm4gRU5PTUVNOwotCW9wLT5jbWQgPSBGRE9QX0RVUDI7Ci0Jb3AtPnNyY2ZkID0gc3Jj ZmQ7Ci0Jb3AtPmZkID0gZmQ7Ci0JaWYgKChvcC0+bmV4dCA9IGZhLT5fX2FjdGlvbnMpKSBvcC0+ bmV4dC0+cHJldiA9IG9wOwotCW9wLT5wcmV2ID0gMDsKLQlmYS0+X19hY3Rpb25zID0gb3A7CisJ aWYgKEZBX0NOVF9NQVggLSBmYS0+ZmFfY250IDwgMikKKwkJaWYgKF9fZmFleHBhbmQoZmEsIDAp ICE9IDApIHJldHVybiBFTk9NRU07CisJZmEtPmZhX29wc1tmYS0+ZmFfY250KytdID0gZmQ7CisJ ZmEtPmZhX29wc1tmYS0+ZmFfY250KytdID0gc3JjZmQ7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1n aXQgYS9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRkZmNoZGlyLmMgYi9z cmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRkZmNoZGlyLmMKaW5kZXggZTg5 ZWRlOGMuLmZlMjQ4YTVkIDEwMDY0NAotLS0gYS9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxl X2FjdGlvbnNfYWRkZmNoZGlyLmMKKysrIGIvc3JjL3Byb2Nlc3MvcG9zaXhfc3Bhd25fZmlsZV9h Y3Rpb25zX2FkZGZjaGRpci5jCkBAIC0xLDE4ICsxLDEzIEBACiAjaW5jbHVkZSA8c3Bhd24uaD4K LSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxlcnJu by5oPgogI2luY2x1ZGUgImZkb3AuaCIKIAogaW50IHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19h ZGRmY2hkaXJfbnAocG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX3QgKmZhLCBpbnQgZmQpCiB7CiAJ aWYgKGZkIDwgMCkgcmV0dXJuIEVCQURGOwotCXN0cnVjdCBmZG9wICpvcCA9IG1hbGxvYyhzaXpl b2YgKm9wKTsKLQlpZiAoIW9wKSByZXR1cm4gRU5PTUVNOwotCW9wLT5jbWQgPSBGRE9QX0ZDSERJ UjsKLQlvcC0+ZmQgPSBmZDsKLQlpZiAoKG9wLT5uZXh0ID0gZmEtPl9fYWN0aW9ucykpIG9wLT5u ZXh0LT5wcmV2ID0gb3A7Ci0Jb3AtPnByZXYgPSAwOwotCWZhLT5fX2FjdGlvbnMgPSBvcDsKKwlp ZiAoRkFfQ05UX01BWCAtIGZhLT5mYV9jbnQgPCAyKQorCQlpZiAoX19mYWV4cGFuZChmYSwgMCkg IT0gMCkgcmV0dXJuIEVOT01FTTsKKwlmYS0+ZmFfb3BzW2ZhLT5mYV9jbnQrK10gPSBmZDsKKwlm YS0+ZmFfb3BzW2ZhLT5mYV9jbnQrK10gPSAtRkRPUF9GQ0hESVI7CiAJcmV0dXJuIDA7CiB9CmRp ZmYgLS1naXQgYS9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRkb3Blbi5j IGIvc3JjL3Byb2Nlc3MvcG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX2FkZG9wZW4uYwppbmRleCA4 MmJiY2VjOS4uODg0MGRiZDYgMTAwNjQ0Ci0tLSBhL3NyYy9wcm9jZXNzL3Bvc2l4X3NwYXduX2Zp bGVfYWN0aW9uc19hZGRvcGVuLmMKKysrIGIvc3JjL3Byb2Nlc3MvcG9zaXhfc3Bhd25fZmlsZV9h Y3Rpb25zX2FkZG9wZW4uYwpAQCAtMSwyMSArMSwxOCBAQAogI2luY2x1ZGUgPHNwYXduLmg+Ci0j aW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8ZXJybm8u aD4KICNpbmNsdWRlICJmZG9wLmgiCiAKIGludCBwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRk b3Blbihwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfdCAqcmVzdHJpY3QgZmEsIGludCBmZCwgY29u c3QgY2hhciAqcmVzdHJpY3QgcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSkKIHsKKwlzaXpl X3QgbGVuOwogCWlmIChmZCA8IDApIHJldHVybiBFQkFERjsKLQlzdHJ1Y3QgZmRvcCAqb3AgPSBt YWxsb2Moc2l6ZW9mICpvcCArIHN0cmxlbihwYXRoKSArIDEpOwotCWlmICghb3ApIHJldHVybiBF Tk9NRU07Ci0Jb3AtPmNtZCA9IEZET1BfT1BFTjsKLQlvcC0+ZmQgPSBmZDsKLQlvcC0+b2ZsYWcg PSBmbGFnczsKLQlvcC0+bW9kZSA9IG1vZGU7Ci0Jc3RyY3B5KG9wLT5wYXRoLCBwYXRoKTsKLQlp ZiAoKG9wLT5uZXh0ID0gZmEtPl9fYWN0aW9ucykpIG9wLT5uZXh0LT5wcmV2ID0gb3A7Ci0Jb3At PnByZXYgPSAwOwotCWZhLT5fX2FjdGlvbnMgPSBvcDsKKwlsZW4gPSBzdHJsZW4ocGF0aCk7CisJ aWYgKF9fZmFleHBhbmQoZmEsIGxlbiArIDEpICE9IDApIHJldHVybiBFTk9NRU07CisJZmEtPmZh X29wc1tmYS0+ZmFfY250KytdID0gZmQ7CisJZmEtPmZhX29wc1tmYS0+ZmFfY250KytdID0gLUZE T1BfT1BFTjsKKwlmYS0+ZmFfb3BzW2ZhLT5mYV9jbnQrK10gPSBmbGFnczsKKwlmYS0+ZmFfb3Bz W2ZhLT5mYV9jbnQrK10gPSBtb2RlOworCW1lbWNweSgocG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25z X3QgKilmYS0+ZmFfY2hhaW4gKyAxLCBwYXRoLCBsZW4gKyAxKTsKIAlyZXR1cm4gMDsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9wcm9jZXNzL3Bvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19kZXN0cm95LmMg Yi9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfZGVzdHJveS5jCmluZGV4IDMy NTFiYWJiLi4wYWM0ODQ4MCAxMDA2NDQKLS0tIGEvc3JjL3Byb2Nlc3MvcG9zaXhfc3Bhd25fZmls ZV9hY3Rpb25zX2Rlc3Ryb3kuYworKysgYi9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9maWxlX2Fj dGlvbnNfZGVzdHJveS5jCkBAIC00LDExICs0LDEyIEBACiAKIGludCBwb3NpeF9zcGF3bl9maWxl X2FjdGlvbnNfZGVzdHJveShwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfdCAqZmEpCiB7Ci0Jc3Ry dWN0IGZkb3AgKm9wID0gZmEtPl9fYWN0aW9ucywgKm5leHQ7Ci0Jd2hpbGUgKG9wKSB7Ci0JCW5l eHQgPSBvcC0+bmV4dDsKLQkJZnJlZShvcCk7Ci0JCW9wID0gbmV4dDsKKwlwb3NpeF9zcGF3bl9m aWxlX2FjdGlvbnNfdCAqbmV4dCwgKnAgPSBmYS0+ZmFfY2hhaW47CisJZm9yIChwID0gcC0+ZmFf Y2hhaW47IHAgIT0gZmEtPmZhX2NoYWluOyBwID0gbmV4dCkgeworCQluZXh0ID0gcC0+ZmFfY2hh aW47CisJCWZyZWUocCk7CiAJfQorCWlmIChwICE9IGZhKQorCQlmcmVlKHApOwogCXJldHVybiAw OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Byb2Nlc3MvcG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX2lu aXQuYyBiL3NyYy9wcm9jZXNzL3Bvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19pbml0LmMKaW5kZXgg ODlkNWUxMjcuLmEyNmQ2ZjQxIDEwMDY0NAotLS0gYS9zcmMvcHJvY2Vzcy9wb3NpeF9zcGF3bl9m aWxlX2FjdGlvbnNfaW5pdC5jCisrKyBiL3NyYy9wcm9jZXNzL3Bvc2l4X3NwYXduX2ZpbGVfYWN0 aW9uc19pbml0LmMKQEAgLTEsNyArMSw5IEBACiAjaW5jbHVkZSA8c3Bhd24uaD4KKyNpbmNsdWRl ICJmZG9wLmgiCiAKIGludCBwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfaW5pdChwb3NpeF9zcGF3 bl9maWxlX2FjdGlvbnNfdCAqZmEpCiB7Ci0JZmEtPl9fYWN0aW9ucyA9IDA7CisJZmEtPmZhX2Nu dCA9IDA7CisJZmEtPmZhX2NoYWluID0gZmE7CiAJcmV0dXJuIDA7CiB9Ci0tIAoyLjI2LjMKCg== --Multipart=_Fri__6_May_2022_19_07_16_+0200_gZiM4/S=.g1Gt8XZ Content-Type: text/plain; name="test.c" Content-Disposition: attachment; filename="test.c" Content-Transfer-Encoding: 7bit #include #include #include #include #define A(x) \ if ((errno = (x)) != 0) \ perror(#x) int main(int argc, char *argv[]) { posix_spawn_file_actions_t fa; pid_t pid; posix_spawn_file_actions_init(&fa); A(posix_spawn_file_actions_addclose(&fa, 0)); A(posix_spawn_file_actions_adddup2(&fa, 2, 3)); A(posix_spawn_file_actions_addopen(&fa, 5, "test.c", O_RDONLY, 0)); A(posix_spawn_file_actions_addopen(&fa, 4, "/usr", O_DIRECTORY, 0)); A(posix_spawn_file_actions_addchdir_np(&fa, "/")); A(posix_spawn_file_actions_addfchdir_np(&fa, 4)); A(posix_spawn_file_actions_addclose(&fa, 5)); A(posix_spawn_file_actions_adddup2(&fa, 2, 10)); A(posix_spawn_file_actions_adddup2(&fa, 2, 11)); A(posix_spawn_file_actions_adddup2(&fa, 2, 12)); A(posix_spawn_file_actions_adddup2(&fa, 2, 13)); A(posix_spawn_file_actions_adddup2(&fa, 2, 14)); A(posix_spawn_file_actions_adddup2(&fa, 2, 15)); posix_spawn(&pid, "/bin/false", &fa, 0, (char*[]){"false", 0}, (char*[]){0}); posix_spawn_file_actions_destroy(&fa); return 0; } --Multipart=_Fri__6_May_2022_19_07_16_+0200_gZiM4/S=.g1Gt8XZ--