From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id 323113858409 for ; Mon, 28 Nov 2022 13:16:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 323113858409 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.cz Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 63CA321B8F; Mon, 28 Nov 2022 13:16:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1669641396; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=tiqOxQ2fQM1oHTOzQWkOLr3zINGAQ+7PK+jNsLAwRZ0=; b=KkbFXiL3ec0CMvBJlpYqAGofmdSPbV5206RfcgDdizqUvP/b8en9UxhGapDy+9JdQS2cT7 D/oRoi5BXWrCeiJ603UdRcLh27SMJjYbFP7fCjD2byKpCN9MLJHHiYu4ugYlhmaMUIWdLI yBgtkg4FRW+3IQ5wD/mDyCVqOHD4rGM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1669641396; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=tiqOxQ2fQM1oHTOzQWkOLr3zINGAQ+7PK+jNsLAwRZ0=; b=QTDm+5WV4zQeO/6y0kPl/cpcBl0ipAUl+hA+zt1Z8AguRFB699ETviA+xzbgc7pu1q1/XJ T5nVIkBDmPcYpHCQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 40CCC13273; Mon, 28 Nov 2022 13:16:36 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id cgnJDrS0hGNifQAAMHmgww (envelope-from ); Mon, 28 Nov 2022 13:16:36 +0000 Content-Type: multipart/mixed; boundary="------------pG0PpN0jBUNGsACpeA0lJNf0" Message-ID: Date: Mon, 28 Nov 2022 14:16:35 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: Re: [PATCH][RFC] readelf: partial support of ZSTD compression Content-Language: en-US To: Mark Wielaard Cc: "Dmitry V. Levin" , elfutils-devel@sourceware.org, Fangrui Song References: <542eb279-d15d-6f17-02c0-c53fd0f33055@suse.cz> <20221024114137.GA19251@altlinux.org> <0375dd0c-2410-d1ca-8ce7-41293e8e2fa2@suse.cz> <20221024164806.GA21412@altlinux.org> <6c1ce1f1-2e45-20bb-e98d-6d35692addfb@suse.cz> From: =?UTF-8?Q?Martin_Li=c5=a1ka?= In-Reply-To: X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------pG0PpN0jBUNGsACpeA0lJNf0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 10/29/22 00:21, Mark Wielaard wrote: > Although I like to also have compression working. Then we can also > add support to src/elfcompress, which makes for a good testcase. See > tests/run-compress.sh (which has found some subtle memory issues when > run under valgrind). Hi. All right, so I'm preparing a full support for ZSTD (both compression and compression) and I noticed a refactoring would be handy for compress_section function and callers of the function. Note right now, there are basically 3 compression types and process_file function handles basically all combinations of these (3 x 3 options), while adding ZSTD support would make it even more complicated. However, ZSTD will behave very similar to ZLIB (not zlib-gnu), except a different algorithm will be used. Plus, in order to distinguish ZLIB from ZSTD, we need to read GElf_Chdr. So what do you think about the refactoring as the first step? Cheers, Martin --------------pG0PpN0jBUNGsACpeA0lJNf0 Content-Type: text/x-patch; charset=UTF-8; name="0001-Refactor-elf_compare.patch" Content-Disposition: attachment; filename="0001-Refactor-elf_compare.patch" Content-Transfer-Encoding: base64 RnJvbSA0NWI2ODY3OGNiNGE3MTM1NTMyYjBmNmM1ZTY2N2VhM2EwNmEwYzM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gTGlza2EgPG1saXNrYUBzdXNlLmN6PgpE YXRlOiBNb24sIDI4IE5vdiAyMDIyIDE0OjEwOjM2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g UmVmYWN0b3IgZWxmX2NvbXBhcmUKCi0tLQogc3JjL2VsZmNvbXByZXNzLmMgfCAxNjQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvZWxmY29tcHJlc3MuYyBiL3NyYy9lbGZjb21wcmVzcy5jCmluZGV4IDUxZmY2OWQy Li4xNjg5OGY2YSAxMDA2NDQKLS0tIGEvc3JjL2VsZmNvbXByZXNzLmMKKysrIGIvc3JjL2Vs ZmNvbXByZXNzLmMKQEAgLTQ4LDEzICs0OCwyMCBAQCBzdGF0aWMgYm9vbCBmb3JjZSA9IGZh bHNlOwogc3RhdGljIGJvb2wgcGVybWlzc2l2ZSA9IGZhbHNlOwogc3RhdGljIGNvbnN0IGNo YXIgKmZvdXRwdXQgPSBOVUxMOwogCi0jZGVmaW5lIFRfVU5TRVQgMAotI2RlZmluZSBUX0RF Q09NUFJFU1MgMSAgICAvKiBub25lICovCi0jZGVmaW5lIFRfQ09NUFJFU1NfWkxJQiAyIC8q IHpsaWIgKi8KLSNkZWZpbmUgVF9DT01QUkVTU19HTlUgIDMgLyogemxpYi1nbnUgKi8KKy8q IENvbXByZXNzaW9uIGFsZ29yaXRobSwgd2hlcmUgYWxsIGxlZ2FsIHZhbHVlcyBmb3IgY2hf dHlwZQorICAgKGNvbXByZXNzaW9uIGFsZ29yaXRobSkgZG8gbWF0Y2ggdGhlIGZvbGxvd2lu ZyBlbnVtLiAgKi8KK2VudW0gY2hfdHlwZQoreworICBVTlNFVCA9IC0xLAorICBOT05FLAor ICBaTElCLAorCisgIFpMSUJfR05VID0gMSA8PCAxNgorfTsKKwogI2RlZmluZSBXT1JEX0JJ VFMgKDhVICogc2l6ZW9mICh1bnNpZ25lZCBpbnQpKQogCi1zdGF0aWMgaW50IHR5cGUgPSBU X1VOU0VUOworc3RhdGljIGVudW0gY2hfdHlwZSB0eXBlID0gVU5TRVQ7CiAKIHN0cnVjdCBz ZWN0aW9uX3BhdHRlcm4KIHsKQEAgLTEyMCwyMiArMTI3LDIyIEBAIHBhcnNlX29wdCAoaW50 IGtleSwgY2hhciAqYXJnIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKICAgICAgIGJyZWFr OwogCiAgICAgY2FzZSAndCc6Ci0gICAgICBpZiAodHlwZSAhPSBUX1VOU0VUKQorICAgICAg aWYgKHR5cGUgIT0gVU5TRVQpCiAJYXJncF9lcnJvciAoc3RhdGUsIE5fKCItdCBvcHRpb24g c3BlY2lmaWVkIHR3aWNlIikpOwogCiAgICAgICBpZiAoc3RyY21wICgibm9uZSIsIGFyZykg PT0gMCkKLQl0eXBlID0gVF9ERUNPTVBSRVNTOworCXR5cGUgPSBOT05FOwogICAgICAgZWxz ZSBpZiAoc3RyY21wICgiemxpYiIsIGFyZykgPT0gMCB8fCBzdHJjbXAgKCJ6bGliLWdhYmki LCBhcmcpID09IDApCi0JdHlwZSA9IFRfQ09NUFJFU1NfWkxJQjsKKwl0eXBlID0gWkxJQjsK ICAgICAgIGVsc2UgaWYgKHN0cmNtcCAoInpsaWItZ251IiwgYXJnKSA9PSAwIHx8IHN0cmNt cCAoImdudSIsIGFyZykgPT0gMCkKLQl0eXBlID0gVF9DT01QUkVTU19HTlU7CisJdHlwZSA9 IFpMSUJfR05VOwogICAgICAgZWxzZQogCWFyZ3BfZXJyb3IgKHN0YXRlLCBOXygidW5rbm93 biBjb21wcmVzc2lvbiB0eXBlICclcyciKSwgYXJnKTsKICAgICAgIGJyZWFrOwogCiAgICAg Y2FzZSBBUkdQX0tFWV9TVUNDRVNTOgotICAgICAgaWYgKHR5cGUgPT0gVF9VTlNFVCkKLQl0 eXBlID0gVF9DT01QUkVTU19aTElCOworICAgICAgaWYgKHR5cGUgPT0gVU5TRVQpCisJdHlw ZSA9IFpMSUI7CiAgICAgICBpZiAocGF0dGVybnMgPT0gTlVMTCkKIAlhZGRfcGF0dGVybiAo Ii4/KHopZGVidWcqIik7CiAgICAgICBicmVhazsKQEAgLTE5OCwxNCArMjA1LDE5IEBAIHNl dHNoZHJzdHJuZHggKEVsZiAqZWxmLCBHRWxmX0VoZHIgKmVoZHIsIHNpemVfdCBuZHgpCiBz dGF0aWMgaW50CiBjb21wcmVzc19zZWN0aW9uIChFbGZfU2NuICpzY24sIHNpemVfdCBvcmln X3NpemUsIGNvbnN0IGNoYXIgKm5hbWUsCiAJCSAgY29uc3QgY2hhciAqbmV3bmFtZSwgc2l6 ZV90IG5keCwKLQkJICBib29sIGdudSwgYm9vbCBjb21wcmVzcywgYm9vbCByZXBvcnRfdmVy Ym9zZSkKKwkJICBlbnVtIGNoX3R5cGUgc2NodHlwZSwgZW51bSBjaF90eXBlIGRjaHR5cGUs CisJCSAgYm9vbCByZXBvcnRfdmVyYm9zZSkKIHsKKyAgLyogV2UgZWl0aGVyIGNvbXByZXNz IG9yIGRlY29tcHJlc3MuICAqLworICBhc3NlcnQgKHNjaHR5cGUgPT0gTk9ORSB8fCBkY2h0 eXBlID09IE5PTkUpOworICBib29sIGNvbXByZXNzID0gZGNodHlwZSAhPSBOT05FOworCiAg IGludCByZXM7CiAgIHVuc2lnbmVkIGludCBmbGFncyA9IGNvbXByZXNzICYmIGZvcmNlID8g RUxGX0NIRl9GT1JDRSA6IDA7Ci0gIGlmIChnbnUpCisgIGlmIChzY2h0eXBlID09IFpMSUJf R05VIHx8IGRjaHR5cGUgPT0gWkxJQl9HTlUpCiAgICAgcmVzID0gZWxmX2NvbXByZXNzX2du dSAoc2NuLCBjb21wcmVzcyA/IDEgOiAwLCBmbGFncyk7CiAgIGVsc2UKLSAgICByZXMgPSBl bGZfY29tcHJlc3MgKHNjbiwgY29tcHJlc3MgPyBFTEZDT01QUkVTU19aTElCIDogMCwgZmxh Z3MpOworICAgIHJlcyA9IGVsZl9jb21wcmVzcyAoc2NuLCBkY2h0eXBlLCBmbGFncyk7CiAK ICAgaWYgKHJlcyA8IDApCiAgICAgZXJyb3IgKDAsIDAsICJDb3VsZG4ndCBkZWNvbXByZXNz IHNlY3Rpb24gWyV6ZF0gJXM6ICVzIiwKQEAgLTQ0NiwyMCArNDU4LDIwIEBAIHByb2Nlc3Nf ZmlsZSAoY29uc3QgY2hhciAqZm5hbWUpCiAKICAgICAgIGlmIChzZWN0aW9uX25hbWVfbWF0 Y2hlcyAoc25hbWUpKQogCXsKLQkgIGlmICghZm9yY2UgJiYgdHlwZSA9PSBUX0RFQ09NUFJF U1MKKwkgIGlmICghZm9yY2UgJiYgdHlwZSA9PSBOT05FCiAJICAgICAgJiYgKHNoZHItPnNo X2ZsYWdzICYgU0hGX0NPTVBSRVNTRUQpID09IDAKIAkgICAgICAmJiAhc3RhcnRzd2l0aCAo c25hbWUsICIuemRlYnVnIikpCiAJICAgIHsKIAkgICAgICBpZiAodmVyYm9zZSA+IDApCiAJ CXByaW50ZiAoIlslemRdICVzIGFscmVhZHkgZGVjb21wcmVzc2VkXG4iLCBuZHgsIHNuYW1l KTsKIAkgICAgfQotCSAgZWxzZSBpZiAoIWZvcmNlICYmIHR5cGUgPT0gVF9DT01QUkVTU19a TElCCisJICBlbHNlIGlmICghZm9yY2UgJiYgdHlwZSA9PSBaTElCCiAJCSAgICYmIChzaGRy LT5zaF9mbGFncyAmIFNIRl9DT01QUkVTU0VEKSAhPSAwKQogCSAgICB7CiAJICAgICAgaWYg KHZlcmJvc2UgPiAwKQogCQlwcmludGYgKCJbJXpkXSAlcyBhbHJlYWR5IGNvbXByZXNzZWRc biIsIG5keCwgc25hbWUpOwogCSAgICB9Ci0JICBlbHNlIGlmICghZm9yY2UgJiYgdHlwZSA9 PSBUX0NPTVBSRVNTX0dOVQorCSAgZWxzZSBpZiAoIWZvcmNlICYmIHR5cGUgPT0gWkxJQl9H TlUKIAkJICAgJiYgc3RhcnRzd2l0aCAoc25hbWUsICIuemRlYnVnIikpCiAJICAgIHsKIAkg ICAgICBpZiAodmVyYm9zZSA+IDApCkBAIC00NzEsOSArNDgzLDkgQEAgcHJvY2Vzc19maWxl IChjb25zdCBjaGFyICpmbmFtZSkKIAkgICAgICBzZXRfc2VjdGlvbiAoc2VjdGlvbnMsIG5k eCk7CiAJICAgICAgLyogQ2hlY2sgaWYgd2UgbWlnaHQgd2FudCB0byBjaGFuZ2UgdGhpcyBz ZWN0aW9uIG5hbWUuICAqLwogCSAgICAgIGlmICghIGFkanVzdF9uYW1lcwotCQkgICYmICgo dHlwZSAhPSBUX0NPTVBSRVNTX0dOVQorCQkgICYmICgodHlwZSAhPSBaTElCX0dOVQogCQkg ICAgICAgJiYgc3RhcnRzd2l0aCAoc25hbWUsICIuemRlYnVnIikpCi0JCSAgICAgIHx8ICh0 eXBlID09IFRfQ09NUFJFU1NfR05VCisJCSAgICAgIHx8ICh0eXBlID09IFpMSUJfR05VCiAJ CQkgICYmIHN0YXJ0c3dpdGggKHNuYW1lLCAiLmRlYnVnIikpKSkKIAkJYWRqdXN0X25hbWVz ID0gdHJ1ZTsKIApAQCAtNjM0LDExICs2NDYsMTEgQEAgcHJvY2Vzc19maWxlIChjb25zdCBj aGFyICpmbmFtZSkKICAgICAgYW5kIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBvciBub3QgdG8g Y29tcHJlc3MgdGhlbSAobGF0ZXIgaW4gdGhlCiAgICAgIGZpeHVwIHBhc3MpLiAgQWxzbyBy ZWNvcmQgdGhlIG9yaWdpbmFsIHNpemUsIHNvIHdlIGNhbiByZXBvcnQgdGhlCiAgICAgIGRp ZmZlcmVuY2UgbGF0ZXIgd2hlbiB3ZSBkbyBjb21wcmVzcy4gICovCi0gIGludCBzaHN0cnRh Yl9jb21wcmVzc2VkID0gVF9VTlNFVDsKKyAgZW51bSBjaF90eXBlIHNoc3RydGFiX2NvbXBy ZXNzZWQgPSBVTlNFVDsKICAgc2l6ZV90IHNoc3RydGFiX3NpemUgPSAwOwogICBjaGFyICpz aHN0cnRhYl9uYW1lID0gTlVMTDsKICAgY2hhciAqc2hzdHJ0YWJfbmV3bmFtZSA9IE5VTEw7 Ci0gIGludCBzeW10YWJfY29tcHJlc3NlZCA9IFRfVU5TRVQ7CisgIGVudW0gY2hfdHlwZSBz eW10YWJfY29tcHJlc3NlZCA9IFVOU0VUOwogICBzaXplX3Qgc3ltdGFiX3NpemUgPSAwOwog ICBjaGFyICpzeW10YWJfbmFtZSA9IE5VTEw7CiAgIGNoYXIgKnN5bXRhYl9uZXduYW1lID0g TlVMTDsKQEAgLTY3Nyw2ICs2ODksMzIgQEAgcHJvY2Vzc19maWxlIChjb25zdCBjaGFyICpm bmFtZSkKIAkgICAgIChkZSljb21wcmVzc2VkLCBpbnZhbGlkYXRpbmcgdGhlIHN0cmluZyBw b2ludGVycy4gICovCiAJICBzbmFtZSA9IHhzdHJkdXAgKHNuYW1lKTsKIAorCSAgLyogRGV0 ZWN0IHNvdXJjZSBjb21wcmVzc2lvbiB0aGF0IGlzIGhvdyBpcyB0aGUgc2VjdGlvbiBjb21w cmVzc2VkCisJICAgICBub3cuICAqLworCSAgR0VsZl9DaGRyIGNoZHI7CisJICBlbnVtIGNo X3R5cGUgc2NodHlwZSA9IE5PTkU7CisJICBpZiAoKHNoZHItPnNoX2ZsYWdzICYgU0hGX0NP TVBSRVNTRUQpICE9IDApCisJICAgIHsKKwkgICAgICBpZiAoZ2VsZl9nZXRjaGRyIChzY24s ICZjaGRyKSAhPSBOVUxMKQorCQl7CisJCSAgc2NodHlwZSA9IChlbnVtIGNoX3R5cGUpY2hk ci5jaF90eXBlOworCQkgIGlmIChzY2h0eXBlID09IE5PTkUpCisJCSAgICB7CisJCSAgICAg IGVycm9yICgwLCAwLCAiQ29tcHJlc3Npb24gdHlwZSBmb3Igc2VjdGlvbiAlemQiCisJCQkg ICAgICIgY2FuJ3QgYmUgemVybyAiLCBuZHgpOworCQkgICAgICBnb3RvIGNsZWFudXA7CisJ CSAgICB9CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBlcnJvciAoMCwgMCwgIkNvdWxk bid0IGdldCBjaGRyIGZvciBzZWN0aW9uICV6ZCIsIG5keCk7CisJCSAgZ290byBjbGVhbnVw OworCQl9CisJICAgIH0KKwkgIC8qIFNldCBaTElCIGNvbXByZXNzaW9uIG1hbnVhbGx5IGZv ciAuemRlYnVnKiBzZWN0aW9ucy4gICovCisJICBlbHNlIGlmIChzdGFydHN3aXRoIChzbmFt ZSwgIi56ZGVidWciKSkKKwkgICAgc2NodHlwZSA9IFpMSUJfR05VOworCiAJICAvKiBXZSBt aWdodCB3YW50IHRvIGRlY29tcHJlc3MgKGFuZCByZW5hbWUpLCBidXQgbm90CiAJICAgICBj b21wcmVzcyBkdXJpbmcgdGhpcyBwYXNzIHNpbmNlIHdlIG1pZ2h0IG5lZWQgdGhlIHNlY3Rp b24KIAkgICAgIGRhdGEgaW4gbGF0ZXIgcGFzc2VzLiAgU2tpcCB0aG9zZSBzZWN0aW9ucyBm b3Igbm93IGFuZApAQCAtNjg3LDM1ICs3MjUsMzIgQEAgcHJvY2Vzc19maWxlIChjb25zdCBj aGFyICpmbmFtZSkKIAogCSAgc3dpdGNoICh0eXBlKQogCSAgICB7Ci0JICAgIGNhc2UgVF9E RUNPTVBSRVNTOgotCSAgICAgIGlmICgoc2hkci0+c2hfZmxhZ3MgJiBTSEZfQ09NUFJFU1NF RCkgIT0gMCkKKwkgICAgY2FzZSBOT05FOgorCSAgICAgIGlmIChzY2h0eXBlICE9IE5PTkUp CiAJCXsKKwkJICBpZiAoc2NodHlwZSA9PSBaTElCX0dOVSkKKwkJICAgIHsKKwkJICAgICAg c25hbWVidWZbMF0gPSAnLic7CisJCSAgICAgIHN0cmNweSAoJnNuYW1lYnVmWzFdLCAmc25h bWVbMl0pOworCQkgICAgICBuZXduYW1lID0gc25hbWVidWY7CisJCSAgICB9CiAJCSAgaWYg KGNvbXByZXNzX3NlY3Rpb24gKHNjbiwgc2l6ZSwgc25hbWUsIE5VTEwsIG5keCwKLQkJCQkJ ZmFsc2UsIGZhbHNlLCB2ZXJib3NlID4gMCkgPCAwKQotCQkgICAgZ290byBjbGVhbnVwOwot CQl9Ci0JICAgICAgZWxzZSBpZiAoc3RhcnRzd2l0aCAoc25hbWUsICIuemRlYnVnIikpCi0J CXsKLQkJICBzbmFtZWJ1ZlswXSA9ICcuJzsKLQkJICBzdHJjcHkgKCZzbmFtZWJ1ZlsxXSwg JnNuYW1lWzJdKTsKLQkJICBuZXduYW1lID0gc25hbWVidWY7Ci0JCSAgaWYgKGNvbXByZXNz X3NlY3Rpb24gKHNjbiwgc2l6ZSwgc25hbWUsIG5ld25hbWUsIG5keCwKLQkJCQkJdHJ1ZSwg ZmFsc2UsIHZlcmJvc2UgPiAwKSA8IDApCisJCQkJCXNjaHR5cGUsIE5PTkUsIHZlcmJvc2Ug PiAwKSA8IDApCiAJCSAgICBnb3RvIGNsZWFudXA7CiAJCX0KIAkgICAgICBlbHNlIGlmICh2 ZXJib3NlID4gMCkKIAkJcHJpbnRmICgiWyV6ZF0gJXMgYWxyZWFkeSBkZWNvbXByZXNzZWRc biIsIG5keCwgc25hbWUpOwogCSAgICAgIGJyZWFrOwogCi0JICAgIGNhc2UgVF9DT01QUkVT U19HTlU6CisJICAgIGNhc2UgWkxJQl9HTlU6CiAJICAgICAgaWYgKHN0YXJ0c3dpdGggKHNu YW1lLCAiLmRlYnVnIikpCiAJCXsKLQkJICBpZiAoKHNoZHItPnNoX2ZsYWdzICYgU0hGX0NP TVBSRVNTRUQpICE9IDApCisJCSAgaWYgKHNjaHR5cGUgPT0gWkxJQikKIAkJICAgIHsKIAkJ ICAgICAgLyogRmlyc3QgZGVjb21wcmVzcyB0byByZWNvbXByZXNzIEdOVSBzdHlsZS4KIAkJ CSBEb24ndCByZXBvcnQgZXZlbiB3aGVuIHZlcmJvc2UuICAqLwogCQkgICAgICBpZiAoY29t cHJlc3Nfc2VjdGlvbiAoc2NuLCBzaXplLCBzbmFtZSwgTlVMTCwgbmR4LAotCQkJCQkgICAg ZmFsc2UsIGZhbHNlLCBmYWxzZSkgPCAwKQorCQkJCQkgICAgc2NodHlwZSwgTk9ORSwgZmFs c2UpIDwgMCkKIAkJCWdvdG8gY2xlYW51cDsKIAkJICAgIH0KIApAQCAtNzI5LDcgKzc2NCw3 IEBAIHByb2Nlc3NfZmlsZSAoY29uc3QgY2hhciAqZm5hbWUpCiAJCSAgICAgIGlmIChuZHgg PT0gc2hkcnN0cm5keCkKIAkJCXsKIAkJCSAgc2hzdHJ0YWJfc2l6ZSA9IHNpemU7Ci0JCQkg IHNoc3RydGFiX2NvbXByZXNzZWQgPSBUX0NPTVBSRVNTX0dOVTsKKwkJCSAgc2hzdHJ0YWJf Y29tcHJlc3NlZCA9IFpMSUJfR05VOwogCQkJICBpZiAoc2hzdHJ0YWJfbmFtZSAhPSBOVUxM CiAJCQkgICAgICB8fCBzaHN0cnRhYl9uZXduYW1lICE9IE5VTEwpCiAJCQkgICAgewpAQCAt NzQ1LDcgKzc4MCw3IEBAIHByb2Nlc3NfZmlsZSAoY29uc3QgY2hhciAqZm5hbWUpCiAJCSAg ICAgIGVsc2UKIAkJCXsKIAkJCSAgc3ltdGFiX3NpemUgPSBzaXplOwotCQkJICBzeW10YWJf Y29tcHJlc3NlZCA9IFRfQ09NUFJFU1NfR05VOworCQkJICBzeW10YWJfY29tcHJlc3NlZCA9 IFpMSUJfR05VOwogCQkJICBzeW10YWJfbmFtZSA9IHhzdHJkdXAgKHNuYW1lKTsKIAkJCSAg c3ltdGFiX25ld25hbWUgPSB4c3RyZHVwIChuZXduYW1lKTsKIAkJCX0KQEAgLTc1Myw3ICs3 ODgsNyBAQCBwcm9jZXNzX2ZpbGUgKGNvbnN0IGNoYXIgKmZuYW1lKQogCQkgIGVsc2UKIAkJ ICAgIHsKIAkJICAgICAgaW50IHJlc3VsdCA9IGNvbXByZXNzX3NlY3Rpb24gKHNjbiwgc2l6 ZSwgc25hbWUsIG5ld25hbWUsCi0JCQkJCQkgICAgIG5keCwgdHJ1ZSwgdHJ1ZSwKKwkJCQkJ CSAgICAgbmR4LCBOT05FLCB0eXBlLAogCQkJCQkJICAgICB2ZXJib3NlID4gMCk7CiAJCSAg ICAgIGlmIChyZXN1bHQgPCAwKQogCQkJZ290byBjbGVhbnVwOwpAQCAtNzY0LDcgKzc5OSw3 IEBAIHByb2Nlc3NfZmlsZSAoY29uc3QgY2hhciAqZm5hbWUpCiAJCX0KIAkgICAgICBlbHNl IGlmICh2ZXJib3NlID49IDApCiAJCXsKLQkJICBpZiAoc3RhcnRzd2l0aCAoc25hbWUsICIu emRlYnVnIikpCisJCSAgaWYgKHNjaHR5cGUgPT0gWkxJQl9HTlUpCiAJCSAgICBwcmludGYg KCJbJXpkXSAlcyB1bmNoYW5nZWQsIGFscmVhZHkgR05VIGNvbXByZXNzZWRcbiIsCiAJCQkg ICAgbmR4LCBzbmFtZSk7CiAJCSAgZWxzZQpAQCAtNzczLDE1ICs4MDgsMTUgQEAgcHJvY2Vz c19maWxlIChjb25zdCBjaGFyICpmbmFtZSkKIAkJfQogCSAgICAgIGJyZWFrOwogCi0JICAg IGNhc2UgVF9DT01QUkVTU19aTElCOgorCSAgICBjYXNlIFpMSUI6CiAJICAgICAgaWYgKChz aGRyLT5zaF9mbGFncyAmIFNIRl9DT01QUkVTU0VEKSA9PSAwKQogCQl7Ci0JCSAgaWYgKHN0 YXJ0c3dpdGggKHNuYW1lLCAiLnpkZWJ1ZyIpKQorCQkgIGlmIChzY2h0eXBlID09IFpMSUJf R05VKQogCQkgICAgewogCQkgICAgICAvKiBGaXJzdCBkZWNvbXByZXNzIHRvIHJlY29tcHJl c3MgemxpYiBzdHlsZS4KIAkJCSBEb24ndCByZXBvcnQgZXZlbiB3aGVuIHZlcmJvc2UuICAq LwogCQkgICAgICBpZiAoY29tcHJlc3Nfc2VjdGlvbiAoc2NuLCBzaXplLCBzbmFtZSwgTlVM TCwgbmR4LAotCQkJCQkgICAgdHJ1ZSwgZmFsc2UsIGZhbHNlKSA8IDApCisJCQkJCSAgICBz Y2h0eXBlLCBOT05FLCBmYWxzZSkgPCAwKQogCQkJZ290byBjbGVhbnVwOwogCiAJCSAgICAg IHNuYW1lYnVmWzBdID0gJy4nOwpAQCAtNzk0LDcgKzgyOSw3IEBAIHByb2Nlc3NfZmlsZSAo Y29uc3QgY2hhciAqZm5hbWUpCiAJCSAgICAgIGlmIChuZHggPT0gc2hkcnN0cm5keCkKIAkJ CXsKIAkJCSAgc2hzdHJ0YWJfc2l6ZSA9IHNpemU7Ci0JCQkgIHNoc3RydGFiX2NvbXByZXNz ZWQgPSBUX0NPTVBSRVNTX1pMSUI7CisJCQkgIHNoc3RydGFiX2NvbXByZXNzZWQgPSBaTElC OwogCQkJICBpZiAoc2hzdHJ0YWJfbmFtZSAhPSBOVUxMCiAJCQkgICAgICB8fCBzaHN0cnRh Yl9uZXduYW1lICE9IE5VTEwpCiAJCQkgICAgewpAQCAtODExLDE5ICs4NDYsMjIgQEAgcHJv Y2Vzc19maWxlIChjb25zdCBjaGFyICpmbmFtZSkKIAkJICAgICAgZWxzZQogCQkJewogCQkJ ICBzeW10YWJfc2l6ZSA9IHNpemU7Ci0JCQkgIHN5bXRhYl9jb21wcmVzc2VkID0gVF9DT01Q UkVTU19aTElCOworCQkJICBzeW10YWJfY29tcHJlc3NlZCA9IFpMSUI7CiAJCQkgIHN5bXRh Yl9uYW1lID0geHN0cmR1cCAoc25hbWUpOwogCQkJICBzeW10YWJfbmV3bmFtZSA9IChuZXdu YW1lID09IE5VTEwKIAkJCQkJICAgID8gTlVMTCA6IHhzdHJkdXAgKG5ld25hbWUpKTsKIAkJ CX0KIAkJICAgIH0KIAkJICBlbHNlIGlmIChjb21wcmVzc19zZWN0aW9uIChzY24sIHNpemUs IHNuYW1lLCBuZXduYW1lLCBuZHgsCi0JCQkJCSAgICAgZmFsc2UsIHRydWUsIHZlcmJvc2Ug PiAwKSA8IDApCisJCQkJCSAgICAgTk9ORSwgdHlwZSwgdmVyYm9zZSA+IDApIDwgMCkKIAkJ ICAgIGdvdG8gY2xlYW51cDsKIAkJfQogCSAgICAgIGVsc2UgaWYgKHZlcmJvc2UgPiAwKQog CQlwcmludGYgKCJbJXpkXSAlcyBhbHJlYWR5IGNvbXByZXNzZWRcbiIsIG5keCwgc25hbWUp OwogCSAgICAgIGJyZWFrOworCisJICAgIGNhc2UgVU5TRVQ6CisJICAgICAgYnJlYWs7CiAJ ICAgIH0KIAogCSAgZnJlZSAoc25hbWUpOwpAQCAtOTAzLDI4ICs5NDEsMjggQEAgcHJvY2Vz c19maWxlIChjb25zdCBjaGFyICpmbmFtZSkKIAkgICAgICAvKiBJZiB0aGUgc2VjdGlvbiBp cyAoc3RpbGwpIGNvbXByZXNzZWQgd2UnbGwgbmVlZCB0bwogCQkgdW5jb21wcmVzcyBpdCBm aXJzdCB0byBhZGp1c3QgdGhlIGRhdGEsIHRoZW4KIAkJIHJlY29tcHJlc3MgaXQgaW4gdGhl IGZpeHVwIHBhc3MuICAqLwotCSAgICAgIGlmIChzeW10YWJfY29tcHJlc3NlZCA9PSBUX1VO U0VUKQorCSAgICAgIGlmIChzeW10YWJfY29tcHJlc3NlZCA9PSBVTlNFVCkKIAkJewogCQkg IHNpemVfdCBzaXplID0gc2hkci0+c2hfc2l6ZTsKIAkJICBpZiAoKHNoZHItPnNoX2ZsYWdz ID09IFNIRl9DT01QUkVTU0VEKSAhPSAwKQogCQkgICAgewogCQkgICAgICAvKiBEb24ndCBy ZXBvcnQgdGhlIChpbnRlcm5hbCkgdW5jb21wcmVzc2lvbi4gICovCiAJCSAgICAgIGlmIChj b21wcmVzc19zZWN0aW9uIChuZXdzY24sIHNpemUsIHNuYW1lLCBOVUxMLCBuZHgsCi0JCQkJ CSAgICBmYWxzZSwgZmFsc2UsIGZhbHNlKSA8IDApCisJCQkJCSAgICBaTElCLCBOT05FLCBm YWxzZSkgPCAwKQogCQkJZ290byBjbGVhbnVwOwogCiAJCSAgICAgIHN5bXRhYl9zaXplID0g c2l6ZTsKLQkJICAgICAgc3ltdGFiX2NvbXByZXNzZWQgPSBUX0NPTVBSRVNTX1pMSUI7CisJ CSAgICAgIHN5bXRhYl9jb21wcmVzc2VkID0gWkxJQjsKIAkJICAgIH0KIAkJICBlbHNlIGlm IChzdGFydHN3aXRoIChuYW1lLCAiLnpkZWJ1ZyIpKQogCQkgICAgewogCQkgICAgICAvKiBE b24ndCByZXBvcnQgdGhlIChpbnRlcm5hbCkgdW5jb21wcmVzc2lvbi4gICovCiAJCSAgICAg IGlmIChjb21wcmVzc19zZWN0aW9uIChuZXdzY24sIHNpemUsIHNuYW1lLCBOVUxMLCBuZHgs Ci0JCQkJCSAgICB0cnVlLCBmYWxzZSwgZmFsc2UpIDwgMCkKKwkJCQkJICAgIFpMSUJfR05V LCBOT05FLCBmYWxzZSkgPCAwKQogCQkJZ290byBjbGVhbnVwOwogCiAJCSAgICAgIHN5bXRh Yl9zaXplID0gc2l6ZTsKLQkJICAgICAgc3ltdGFiX2NvbXByZXNzZWQgPSBUX0NPTVBSRVNT X0dOVTsKKwkJICAgICAgc3ltdGFiX2NvbXByZXNzZWQgPSBaTElCX0dOVTsKIAkJICAgIH0K IAkJfQogCkBAIC0xMDM3LDcgKzEwNzUsNyBAQCBwcm9jZXNzX2ZpbGUgKGNvbnN0IGNoYXIg KmZuYW1lKQogCSBvciBpZiB0aGUgc2VjdGlvbiB3YXMgYWxyZWFkeSBjb21wcmVzc2VkIChh bmQgdGhlIHVzZXIgZGlkbid0CiAJIGFzayBmb3IgZGVjb21wcmVzc2lvbikuICBOb3RlIHNv bWV3aGF0IGlkZW50aWNhbCBjb2RlIGZvcgogCSBzeW10YWIgYmVsb3cuICAqLwotICAgICAg aWYgKHNoc3RydGFiX2NvbXByZXNzZWQgPT0gVF9VTlNFVCkKKyAgICAgIGlmIChzaHN0cnRh Yl9jb21wcmVzc2VkID09IFVOU0VUKQogCXsKIAkgIC8qIFRoZSB1c2VyIGRpZG4ndCBhc2sg Zm9yIGNvbXByZXNzaW9uLCBidXQgbWF5YmUgaXQgd2FzCiAJICAgICBjb21wcmVzc2VkIGlu IHRoZSBvcmlnaW5hbCBFTEYgZmlsZS4gICovCkBAIC0xMDY3LDE4ICsxMTA1LDE4IEBAIHBy b2Nlc3NfZmlsZSAoY29uc3QgY2hhciAqZm5hbWUpCiAKIAkgIHNoc3RydGFiX3NpemUgPSBz aGRyLT5zaF9zaXplOwogCSAgaWYgKChzaGRyLT5zaF9mbGFncyAmIFNIRl9DT01QUkVTU0VE KSAhPSAwKQotCSAgICBzaHN0cnRhYl9jb21wcmVzc2VkID0gVF9DT01QUkVTU19aTElCOwor CSAgICBzaHN0cnRhYl9jb21wcmVzc2VkID0gWkxJQjsKIAkgIGVsc2UgaWYgKHN0YXJ0c3dp dGggKHNoc3RydGFiX25hbWUsICIuemRlYnVnIikpCi0JICAgIHNoc3RydGFiX2NvbXByZXNz ZWQgPSBUX0NPTVBSRVNTX0dOVTsKKwkgICAgc2hzdHJ0YWJfY29tcHJlc3NlZCA9IFpMSUJf R05VOwogCX0KIAogICAgICAgLyogU2hvdWxkIHdlIChyZSljb21wcmVzcz8gICovCi0gICAg ICBpZiAoc2hzdHJ0YWJfY29tcHJlc3NlZCAhPSBUX1VOU0VUKQorICAgICAgaWYgKHNoc3Ry dGFiX2NvbXByZXNzZWQgIT0gVU5TRVQpCiAJewogCSAgaWYgKGNvbXByZXNzX3NlY3Rpb24g KHNjbiwgc2hzdHJ0YWJfc2l6ZSwgc2hzdHJ0YWJfbmFtZSwKIAkJCQlzaHN0cnRhYl9uZXdu YW1lLCBzaGRyc3RybmR4LAotCQkJCXNoc3RydGFiX2NvbXByZXNzZWQgPT0gVF9DT01QUkVT U19HTlUsCi0JCQkJdHJ1ZSwgdmVyYm9zZSA+IDApIDwgMCkKKwkJCQlOT05FLCBzaHN0cnRh Yl9jb21wcmVzc2VkLAorCQkJCXZlcmJvc2UgPiAwKSA8IDApCiAJICAgIGdvdG8gY2xlYW51 cDsKIAl9CiAgICAgfQpAQCAtMTE3OCw3ICsxMjE2LDcgQEAgcHJvY2Vzc19maWxlIChjb25z dCBjaGFyICpmbmFtZSkKIAkJIHVzIHRvLCBvciBpZiB0aGUgc2VjdGlvbiB3YXMgYWxyZWFk eSBjb21wcmVzc2VkIChhbmQKIAkJIHRoZSB1c2VyIGRpZG4ndCBhc2sgZm9yIGRlY29tcHJl c3Npb24pLiAgTm90ZQogCQkgc29tZXdoYXQgaWRlbnRpY2FsIGNvZGUgZm9yIHNoc3RydGFi IGFib3ZlLiAgKi8KLQkgICAgICBpZiAoc3ltdGFiX2NvbXByZXNzZWQgPT0gVF9VTlNFVCkK KwkgICAgICBpZiAoc3ltdGFiX2NvbXByZXNzZWQgPT0gVU5TRVQpCiAJCXsKIAkJICAvKiBU aGUgdXNlciBkaWRuJ3QgYXNrIGZvciBjb21wcmVzc2lvbiwgYnV0IG1heWJlIGl0IHdhcwog CQkgICAgIGNvbXByZXNzZWQgaW4gdGhlIG9yaWdpbmFsIEVMRiBmaWxlLiAgKi8KQEAgLTEy MDgsMTggKzEyNDYsMTggQEAgcHJvY2Vzc19maWxlIChjb25zdCBjaGFyICpmbmFtZSkKIAog CQkgIHN5bXRhYl9zaXplID0gc2hkci0+c2hfc2l6ZTsKIAkJICBpZiAoKHNoZHItPnNoX2Zs YWdzICYgU0hGX0NPTVBSRVNTRUQpICE9IDApCi0JCSAgICBzeW10YWJfY29tcHJlc3NlZCA9 IFRfQ09NUFJFU1NfWkxJQjsKKwkJICAgIHN5bXRhYl9jb21wcmVzc2VkID0gWkxJQjsKIAkJ ICBlbHNlIGlmIChzdGFydHN3aXRoIChzeW10YWJfbmFtZSwgIi56ZGVidWciKSkKLQkJICAg IHN5bXRhYl9jb21wcmVzc2VkID0gVF9DT01QUkVTU19HTlU7CisJCSAgICBzeW10YWJfY29t cHJlc3NlZCA9IFpMSUJfR05VOwogCQl9CiAKIAkgICAgICAvKiBTaG91bGQgd2UgKHJlKWNv bXByZXNzPyAgKi8KLQkgICAgICBpZiAoc3ltdGFiX2NvbXByZXNzZWQgIT0gVF9VTlNFVCkK KwkgICAgICBpZiAoc3ltdGFiX2NvbXByZXNzZWQgIT0gVU5TRVQpCiAJCXsKIAkJICBpZiAo Y29tcHJlc3Nfc2VjdGlvbiAoc2NuLCBzeW10YWJfc2l6ZSwgc3ltdGFiX25hbWUsCiAJCQkJ CXN5bXRhYl9uZXduYW1lLCBzeW10YWJuZHgsCi0JCQkJCXN5bXRhYl9jb21wcmVzc2VkID09 IFRfQ09NUFJFU1NfR05VLAotCQkJCQl0cnVlLCB2ZXJib3NlID4gMCkgPCAwKQorCQkJCQlO T05FLCBzeW10YWJfY29tcHJlc3NlZCwKKwkJCQkJdmVyYm9zZSA+IDApIDwgMCkKIAkJICAg IGdvdG8gY2xlYW51cDsKIAkJfQogCSAgICB9Ci0tIAoyLjM4LjEKCg== --------------pG0PpN0jBUNGsACpeA0lJNf0--