From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/11850 Path: news.gmane.org!.POSTED!not-for-mail From: Denys Vlasenko Newsgroups: gmane.linux.lib.musl.general Subject: Re: getopt() not exposing __optpos - shell needs it Date: Mon, 28 Aug 2017 17:17:06 +0200 Message-ID: References: Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="089e08221790e63bf70557d1caca" X-Trace: blaine.gmane.org 1503933475 7313 195.159.176.226 (28 Aug 2017 15:17:55 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 28 Aug 2017 15:17:55 +0000 (UTC) To: musl , Rich Felker , Waldemar Brodkorb Original-X-From: musl-return-11863-gllmg-musl=m.gmane.org@lists.openwall.com Mon Aug 28 17:17:50 2017 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1dmLnD-0000wd-Lf for gllmg-musl@m.gmane.org; Mon, 28 Aug 2017 17:17:35 +0200 Original-Received: (qmail 31874 invoked by uid 550); 28 Aug 2017 15:17:39 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 31837 invoked from network); 28 Aug 2017 15:17:39 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=eyHlFzditZBJgbND7ukxdgVWvxej5U+928bwcbDG05g=; b=l27lR7r3Dru3t1gXNV0UvqXffbyPbLa9Bsn9K674Qe3jvVv+FBpHr7mo6Lawa/snhr /3MPgCMhCeZz5ssAfK3bX2meH9s4AkjSSIE6Zhvm9zWsnZoteHNv5had7ImQWsGJxu+K 0EoMQU8uqpMbSdLKmJzJdoP/Tka+qQEcxoKGex0jMgrV7REf7aFMlXjadsXr5NxLLgrZ t55OuBESc+qMpST8+jxBTcZ3j7miLtckxxL2wFZoI051t8rcLUCa2Hmz7aR6e68EVeY9 Sw8dEtESQS9agMMXr2Om61bNxkVIgoEjOf2/5zyNi0cmJToxadB/L5sADt+Hu8wRHkCX bK9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=eyHlFzditZBJgbND7ukxdgVWvxej5U+928bwcbDG05g=; b=a+eBnh7oBLbFRXla/ZjAdtYkRvVgGCophT0EGB5rySxaDfHPkQ5HDmOzsbUgkphOan NvaURNU20wDGakKRA9eVzqrSh64oJgKiqncctC+cmHRa1WHBqsnoDMbcOLi/PfqoP+39 6lmtjCvbjHs1ghDjeu4PcqrZHMsH7NHQoICa0GkL44zmcDlJY59JHMEYgoUIs6eBRTj1 1EiRoBqfjnaOVTW3ACqRPjhvUpdbg/h5ptT9eV+g+s3XBLVO0+9wQICPTchGfA4TweQh w9w98PuUH8bSAWvbCyBnIhA7uL6Jel5j/StDTDVYag5rVdI5kEW21/LCjufOhIeDjhHP zNYQ== X-Gm-Message-State: AHYfb5i827dSY8MjMYY3kKP37jqgf2XZYZGc0xil3UZ3dOVflgoZ9/Ek ihOGA0eNWQLD1Dpitnf2Spq/8k1giw== X-Received: by 10.80.207.129 with SMTP id h1mr802847edk.120.1503933447412; Mon, 28 Aug 2017 08:17:27 -0700 (PDT) In-Reply-To: Xref: news.gmane.org gmane.linux.lib.musl.general:11850 Archived-At: --089e08221790e63bf70557d1caca Content-Type: text/plain; charset="UTF-8" On Mon, Aug 28, 2017 at 12:18 PM, Denys Vlasenko wrote: > glibc/uclibc need more extensive changes, since they use a pointer to store > the position. This is a test in busybox tree which fails miserably > because of that: > > https://git.busybox.net/busybox/tree/shell/hush_test/hush-getopts/getopt_test_libc_bug.tests > # This test can fail with libc with buggy getopt() implementation. > # If getopt() wants to parse multi-option args (-abc), > # it needs to remember a position within current arg. > # > # If this position is kept as a POINTER, not an offset, > # and if argv[] ADDRESSES (not contents!) change, it blows up. uclibc would need something like this patch (not tested at all): --089e08221790e63bf70557d1caca Content-Type: text/plain; charset="US-ASCII"; name="z.diff" Content-Disposition: attachment; filename="z.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j6was5ol0 ZGlmZiAtLWdpdCBhL2xpYmMvc3lzZGVwcy9saW51eC9jb21tb24vYml0cy9nZXRvcHQuaCBiL2xp YmMvc3lzZGVwcy9saW51eC9jb21tb24vYml0cy9nZXRvcHQuaAppbmRleCBkYWJhYmUwLi5jNGY1 YWI3IDEwMDY0NAotLS0gYS9saWJjL3N5c2RlcHMvbGludXgvY29tbW9uL2JpdHMvZ2V0b3B0LmgK KysrIGIvbGliYy9zeXNkZXBzL2xpbnV4L2NvbW1vbi9iaXRzL2dldG9wdC5oCkBAIC00OCw2ICs0 OCw3IEBAIGV4dGVybiBjaGFyICpvcHRhcmc7CiAgICBob3cgbXVjaCBvZiBBUkdWIGhhcyBiZWVu IHNjYW5uZWQgc28gZmFyLiAgKi8KIAogZXh0ZXJuIGludCBvcHRpbmQ7CitleHRlcm4gaW50IF9f b3B0cG9zOyAvKiBwb3NpdGlvbiB3aXRoaW4gY3VycmVudCAiLWFiYyIgbXVsdGlvcHQgc3RyaW5n ICovCiAKIC8qIENhbGxlcnMgc3RvcmUgemVybyBoZXJlIHRvIGluaGliaXQgdGhlIGVycm9yIG1l c3NhZ2UgYGdldG9wdCcgcHJpbnRzCiAgICBmb3IgdW5yZWNvZ25pemVkIG9wdGlvbnMuICAqLwpk aWZmIC0tZ2l0IGEvbGliYy91bmlzdGQvZ2V0b3B0LmMgYi9saWJjL3VuaXN0ZC9nZXRvcHQuYwpp bmRleCA5ZDJkZjM0Li4zYzdlNmM1IDEwMDY0NAotLS0gYS9saWJjL3VuaXN0ZC9nZXRvcHQuYwor KysgYi9saWJjL3VuaXN0ZC9nZXRvcHQuYwpAQCAtMTA2LDYgKzEwNiw4IEBAIGNoYXIgKm9wdGFy ZzsKIC8qIDEwMDMuMiBzYXlzIHRoaXMgbXVzdCBiZSAxIGJlZm9yZSBhbnkgY2FsbC4gICovCiBp bnQgb3B0aW5kID0gMTsKIAoraW50IF9fb3B0cG9zID0gMDsKKwogLyogQ2FsbGVycyBzdG9yZSB6 ZXJvIGhlcmUgdG8gaW5oaWJpdCB0aGUgZXJyb3IgbWVzc2FnZQogICAgZm9yIHVucmVjb2duaXpl ZCBvcHRpb25zLiAgKi8KIApAQCAtMjYxLDcgKzI2Myw3IEBAIF9nZXRvcHRfaW5pdGlhbGl6ZSAo YXR0cmlidXRlX3VudXNlZCBpbnQgYXJnYywgYXR0cmlidXRlX3VudXNlZCBjaGFyICpjb25zdCAq YXJnCiAKICAgZC0+X19maXJzdF9ub25vcHQgPSBkLT5fX2xhc3Rfbm9ub3B0ID0gZC0+b3B0aW5k OwogCi0gIGQtPl9fbmV4dGNoYXIgPSBOVUxMOworICBkLT5vcHRwb3MgPSAwOwogCiAgIGQtPl9f cG9zaXhseV9jb3JyZWN0ID0gISFnZXRlbnYgKCJQT1NJWExZX0NPUlJFQ1QiKTsKIApAQCAtMzI1 LDcgKzMyNyw3IEBAIF9nZXRvcHRfaW5pdGlhbGl6ZSAoYXR0cmlidXRlX3VudXNlZCBpbnQgYXJn YywgYXR0cmlidXRlX3VudXNlZCBjaGFyICpjb25zdCAqYXJnCiAgICBmcm9tIGVhY2ggb2YgdGhl IG9wdGlvbiBlbGVtZW50cy4KIAogICAgSWYgYGdldG9wdCcgZmluZHMgYW5vdGhlciBvcHRpb24g Y2hhcmFjdGVyLCBpdCByZXR1cm5zIHRoYXQgY2hhcmFjdGVyLAotICAgdXBkYXRpbmcgYG9wdGlu ZCcgYW5kIGBuZXh0Y2hhcicgc28gdGhhdCB0aGUgbmV4dCBjYWxsIHRvIGBnZXRvcHQnIGNhbgor ICAgdXBkYXRpbmcgYG9wdGluZCcgYW5kIGBvcHRwb3MnIHNvIHRoYXQgdGhlIG5leHQgY2FsbCB0 byBgZ2V0b3B0JyBjYW4KICAgIHJlc3VtZSB0aGUgc2NhbiB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0 aW9uIGNoYXJhY3RlciBvciBBUkdWLWVsZW1lbnQuCiAKICAgIElmIHRoZXJlIGFyZSBubyBtb3Jl IG9wdGlvbiBjaGFyYWN0ZXJzLCBgZ2V0b3B0JyByZXR1cm5zIC0xLgpAQCAtMzc2LDYgKzM3OCw3 IEBAIF9nZXRvcHRfaW50ZXJuYWxfciAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjb25z dCBjaGFyICpvcHRzdHJpbmcsCiAJCSAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywg aW50ICpsb25naW5kLAogCQkgICAgaW50IGxvbmdfb25seSwgc3RydWN0IF9nZXRvcHRfZGF0YSAq ZCkKIHsKKyAgY29uc3QgY2hhciAqbmV4dGNoYXI7CiAgIGludCBwcmludF9lcnJvcnMgPSBkLT5v cHRlcnI7CiAgIGlmIChvcHRzdHJpbmdbMF0gPT0gJzonKQogICAgIHByaW50X2Vycm9ycyA9IDA7 CkBAIC00MDUsOSArNDA4LDE3IEBAIF9nZXRvcHRfaW50ZXJuYWxfciAoaW50IGFyZ2MsIGNoYXIg KmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpvcHRzdHJpbmcsCiAjIGRlZmluZSBOT05PUFRJT05f UCAoYXJndltkLT5vcHRpbmRdWzBdICE9ICctJyB8fCBhcmd2W2QtPm9wdGluZF1bMV0gPT0gJ1ww JykKICNlbmRpZgogCi0gIGlmIChkLT5fX25leHRjaGFyID09IE5VTEwgfHwgKmQtPl9fbmV4dGNo YXIgPT0gJ1wwJykKKyAgbmV4dGNoYXIgPSAiIjsKKyAgaWYgKGQtPm9wdGluZCA8IGFyZ2MgJiYg ZC0+b3B0cG9zID4gMCkKKyAgICAvKiBDb3VsZCBiZSBzaW1wbHkgIm5leHRjaGFyID0gYXJndltk LT5vcHRpbmRdICsgZC0+b3B0cG9zIgorICAgICAqIGJ1dCBsZXQncyBiZSBwYXJhbm9pZCBhYm91 dCBvcHRwb3MgcG9pbnRpbmcgYmV5b25kIG51bCBieXRlLgorICAgICAqLworICAgIG5leHRjaGFy ID0gYXJndltkLT5vcHRpbmRdICsgc3Rybmxlbihhcmd2W2QtPm9wdGluZF0sIGQtPm9wdHBvcyk7 CisKKyAgaWYgKCpuZXh0Y2hhciA9PSAnXDAnKQogICAgIHsKICAgICAgIC8qIEFkdmFuY2UgdG8g dGhlIG5leHQgQVJHVi1lbGVtZW50LiAgKi8KKyAgICAgIC8qIChkLT5vcHRpbmQgYWxyZWFkeSBw b2ludHMgdG8gdGhlIG5leHQgYXJndltpXSkgKi8KIAogICAgICAgLyogR2l2ZSBGSVJTVF9OT05P UFQgJiBMQVNUX05PTk9QVCByYXRpb25hbCB2YWx1ZXMgaWYgT1BUSU5EIGhhcyBiZWVuCiAJIG1v dmVkIGJhY2sgYnkgdGhlIHVzZXIgKHdobyBtYXkgYWxzbyBoYXZlIGNoYW5nZWQgdGhlIGFyZ3Vt ZW50cykuICAqLwpAQCAtNDgwLDggKzQ5MSw4IEBAIF9nZXRvcHRfaW50ZXJuYWxfciAoaW50IGFy Z2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpvcHRzdHJpbmcsCiAgICAgICAvKiBX ZSBoYXZlIGZvdW5kIGFub3RoZXIgb3B0aW9uLUFSR1YtZWxlbWVudC4KIAkgU2tpcCB0aGUgaW5p dGlhbCBwdW5jdHVhdGlvbi4gICovCiAKLSAgICAgIGQtPl9fbmV4dGNoYXIgPSAoYXJndltkLT5v cHRpbmRdICsgMQotCQkgICsgKGxvbmdvcHRzICE9IE5VTEwgJiYgYXJndltkLT5vcHRpbmRdWzFd ID09ICctJykpOworICAgICAgZC0+b3B0cG9zID0gKDEgKyAobG9uZ29wdHMgIT0gTlVMTCAmJiBh cmd2W2QtPm9wdGluZF1bMV0gPT0gJy0nKSk7CisgICAgICBuZXh0Y2hhciA9IGFyZ3ZbZC0+b3B0 aW5kXSArIGQtPm9wdHBvczsKICAgICB9CiAKICAgLyogRGVjb2RlIHRoZSBjdXJyZW50IG9wdGlv bi1BUkdWLWVsZW1lbnQuICAqLwpAQCAtNTEyLDE1ICs1MjMsMTUgQEAgX2dldG9wdF9pbnRlcm5h bF9yIChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKm9wdHN0cmluZywK ICAgICAgIGludCBpbmRmb3VuZCA9IC0xOwogICAgICAgaW50IG9wdGlvbl9pbmRleDsKIAotICAg ICAgZm9yIChuYW1lZW5kID0gZC0+X19uZXh0Y2hhcjsgKm5hbWVlbmQgJiYgKm5hbWVlbmQgIT0g Jz0nOyBuYW1lZW5kKyspCisgICAgICBmb3IgKG5hbWVlbmQgPSBuZXh0Y2hhcjsgKm5hbWVlbmQg JiYgKm5hbWVlbmQgIT0gJz0nOyBuYW1lZW5kKyspCiAJLyogRG8gbm90aGluZy4gICovIDsKIAog ICAgICAgLyogVGVzdCBhbGwgbG9uZyBvcHRpb25zIGZvciBlaXRoZXIgZXhhY3QgbWF0Y2gKIAkg b3IgYWJicmV2aWF0ZWQgbWF0Y2hlcy4gICovCiAgICAgICBmb3IgKHAgPSBsb25nb3B0cywgb3B0 aW9uX2luZGV4ID0gMDsgcC0+bmFtZTsgcCsrLCBvcHRpb25faW5kZXgrKykKLQlpZiAoIXN0cm5j bXAgKHAtPm5hbWUsIGQtPl9fbmV4dGNoYXIsIG5hbWVlbmQgLSBkLT5fX25leHRjaGFyKSkKKwlp ZiAoIXN0cm5jbXAgKHAtPm5hbWUsIG5leHRjaGFyLCBuYW1lZW5kIC0gbmV4dGNoYXIpKQogCSAg ewotCSAgICBpZiAoKHVuc2lnbmVkIGludCkgKG5hbWVlbmQgLSBkLT5fX25leHRjaGFyKQorCSAg ICBpZiAoKHVuc2lnbmVkIGludCkgKG5hbWVlbmQgLSBuZXh0Y2hhcikKIAkJPT0gKHVuc2lnbmVk IGludCkgc3RybGVuIChwLT5uYW1lKSkKIAkgICAgICB7CiAJCS8qIEV4YWN0IG1hdGNoIGZvdW5k LiAgKi8KQEAgLTU3MCw3ICs1ODEsNyBAQCBfZ2V0b3B0X2ludGVybmFsX3IgKGludCBhcmdjLCBj aGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqb3B0c3RyaW5nLAogCQkgICAgICAgYXJndlsw XSwgYXJndltkLT5vcHRpbmRdKTsKICNlbmRpZgogCSAgICB9Ci0JICBkLT5fX25leHRjaGFyICs9 IHN0cmxlbiAoZC0+X19uZXh0Y2hhcik7CisJICBkLT5vcHRwb3MgPSAwOwogCSAgZC0+b3B0aW5k Kys7CiAJICBkLT5vcHRvcHQgPSAwOwogCSAgcmV0dXJuICc/JzsKQEAgLTY0Myw3ICs2NTQsNyBA QCBfZ2V0b3B0X2ludGVybmFsX3IgKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgY29uc3Qg Y2hhciAqb3B0c3RyaW5nLAogI2VuZGlmCiAJCSAgICB9CiAKLQkJICBkLT5fX25leHRjaGFyICs9 IHN0cmxlbiAoZC0+X19uZXh0Y2hhcik7CisJCSAgZC0+b3B0cG9zID0gMDsKIAogCQkgIGQtPm9w dG9wdCA9IHBmb3VuZC0+dmFsOwogCQkgIHJldHVybiAnPyc7CkBAIC02ODMsMTIgKzY5NCwxMiBA QCBfZ2V0b3B0X2ludGVybmFsX3IgKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgY29uc3Qg Y2hhciAqb3B0c3RyaW5nLAogCQkJICAgICAgIGFyZ3ZbMF0sIGFyZ3ZbZC0+b3B0aW5kIC0gMV0p OwogI2VuZGlmCiAJCSAgICB9Ci0JCSAgZC0+X19uZXh0Y2hhciArPSBzdHJsZW4gKGQtPl9fbmV4 dGNoYXIpOworCQkgIGQtPm9wdHBvcyA9IDA7CiAJCSAgZC0+b3B0b3B0ID0gcGZvdW5kLT52YWw7 CiAJCSAgcmV0dXJuIG9wdHN0cmluZ1swXSA9PSAnOicgPyAnOicgOiAnPyc7CiAJCX0KIAkgICAg fQotCSAgZC0+X19uZXh0Y2hhciArPSBzdHJsZW4gKGQtPl9fbmV4dGNoYXIpOworCSAgZC0+b3B0 cG9zID0gMDsKIAkgIGlmIChsb25naW5kICE9IE5VTEwpCiAJICAgICpsb25naW5kID0gb3B0aW9u X2luZGV4OwogCSAgaWYgKHBmb3VuZC0+ZmxhZykKQEAgLTcwNCw3ICs3MTUsNyBAQCBfZ2V0b3B0 X2ludGVybmFsX3IgKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqb3B0 c3RyaW5nLAogCSBvcHRpb24sIHRoZW4gaXQncyBhbiBlcnJvci4KIAkgT3RoZXJ3aXNlIGludGVy cHJldCBpdCBhcyBhIHNob3J0IG9wdGlvbi4gICovCiAgICAgICBpZiAoIWxvbmdfb25seSB8fCBh cmd2W2QtPm9wdGluZF1bMV0gPT0gJy0nCi0JICB8fCBzdHJjaHIgKG9wdHN0cmluZywgKmQtPl9f bmV4dGNoYXIpID09IE5VTEwpCisJICB8fCBzdHJjaHIgKG9wdHN0cmluZywgKm5leHRjaGFyKSA9 PSBOVUxMKQogCXsKIAkgIGlmIChwcmludF9lcnJvcnMpCiAJICAgIHsKQEAgLTcxOCwxMCArNzI5 LDEwIEBAIF9nZXRvcHRfaW50ZXJuYWxfciAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBj b25zdCBjaGFyICpvcHRzdHJpbmcsCiAJCSAgLyogLS1vcHRpb24gKi8KICNpZiBkZWZpbmVkIF9M SUJDICYmIGRlZmluZWQgVVNFX0lOX0xJQklPCiAJCSAgbiA9IF9fYXNwcmludGYgKCZidWYsICIl czogdW5yZWNvZ25pemVkIG9wdGlvbiBgLS0lcydcbiIsCi0JCQkJICBhcmd2WzBdLCBkLT5fX25l eHRjaGFyKTsKKwkJCQkgIGFyZ3ZbMF0sIG5leHRjaGFyKTsKICNlbHNlCiAJCSAgZnByaW50ZiAo c3RkZXJyLCAiJXM6IHVucmVjb2duaXplZCBvcHRpb24gYC0tJXMnXG4iLAotCQkJICAgYXJndlsw XSwgZC0+X19uZXh0Y2hhcik7CisJCQkgICBhcmd2WzBdLCBuZXh0Y2hhcik7CiAjZW5kaWYKIAkJ fQogCSAgICAgIGVsc2UKQEAgLTcyOSwxMCArNzQwLDEwIEBAIF9nZXRvcHRfaW50ZXJuYWxfciAo aW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpvcHRzdHJpbmcsCiAJCSAg LyogK29wdGlvbiBvciAtb3B0aW9uICovCiAjaWYgZGVmaW5lZCBfTElCQyAmJiBkZWZpbmVkIFVT RV9JTl9MSUJJTwogCQkgIG4gPSBfX2FzcHJpbnRmICgmYnVmLCAiJXM6IHVucmVjb2duaXplZCBv cHRpb24gYCVjJXMnXG4iLAotCQkJCSAgYXJndlswXSwgYXJndltkLT5vcHRpbmRdWzBdLCBkLT5f X25leHRjaGFyKTsKKwkJCQkgIGFyZ3ZbMF0sIGFyZ3ZbZC0+b3B0aW5kXVswXSwgbmV4dGNoYXIp OwogI2Vsc2UKIAkJICBmcHJpbnRmIChzdGRlcnIsICIlczogdW5yZWNvZ25pemVkIG9wdGlvbiBg JWMlcydcbiIsCi0JCQkgICBhcmd2WzBdLCBhcmd2W2QtPm9wdGluZF1bMF0sIGQtPl9fbmV4dGNo YXIpOworCQkJICAgYXJndlswXSwgYXJndltkLT5vcHRpbmRdWzBdLCBuZXh0Y2hhcik7CiAjZW5k aWYKIAkJfQogCkBAIC03NTMsNyArNzY0LDcgQEAgX2dldG9wdF9pbnRlcm5hbF9yIChpbnQgYXJn YywgY2hhciAqY29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKm9wdHN0cmluZywKIAkJfQogI2VuZGlm CiAJICAgIH0KLQkgIGQtPl9fbmV4dGNoYXIgPSAoY2hhciAqKSAiIjsKKwkgIGQtPm9wdHBvcyA9 IDA7CiAJICBkLT5vcHRpbmQrKzsKIAkgIGQtPm9wdG9wdCA9IDA7CiAJICByZXR1cm4gJz8nOwpA QCAtNzYzLDExICs3NzQsMTIgQEAgX2dldG9wdF9pbnRlcm5hbF9yIChpbnQgYXJnYywgY2hhciAq Y29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKm9wdHN0cmluZywKICAgLyogTG9vayBhdCBhbmQgaGFu ZGxlIHRoZSBuZXh0IHNob3J0IG9wdGlvbi1jaGFyYWN0ZXIuICAqLwogCiAgIHsKLSAgICBjaGFy IGMgPSAqZC0+X19uZXh0Y2hhcisrOworICAgIGNoYXIgYyA9ICpuZXh0Y2hhcisrOwogICAgIGNo YXIgKnRlbXAgPSBzdHJjaHIgKG9wdHN0cmluZywgYyk7CisgICAgZC0+b3B0cG9zKys7CiAKICAg ICAvKiBJbmNyZW1lbnQgYG9wdGluZCcgd2hlbiB3ZSBzdGFydCB0byBwcm9jZXNzIGl0cyBsYXN0 IGNoYXJhY3Rlci4gICovCi0gICAgaWYgKCpkLT5fX25leHRjaGFyID09ICdcMCcpCisgICAgaWYg KCpuZXh0Y2hhciA9PSAnXDAnKQogICAgICAgKytkLT5vcHRpbmQ7CiAKICAgICBpZiAodGVtcCA9 PSBOVUxMIHx8IGMgPT0gJzonKQpAQCAtODMyLDkgKzg0NCw5IEBAIF9nZXRvcHRfaW50ZXJuYWxf ciAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpvcHRzdHJpbmcsCiAJ aW50IG9wdGlvbl9pbmRleDsKIAogCS8qIFRoaXMgaXMgYW4gb3B0aW9uIHRoYXQgcmVxdWlyZXMg YW4gYXJndW1lbnQuICAqLwotCWlmICgqZC0+X19uZXh0Y2hhciAhPSAnXDAnKQorCWlmICgqbmV4 dGNoYXIgIT0gJ1wwJykKIAkgIHsKLQkgICAgZC0+b3B0YXJnID0gZC0+X19uZXh0Y2hhcjsKKwkg ICAgZC0+b3B0YXJnID0gbmV4dGNoYXI7CiAJICAgIC8qIElmIHdlIGVuZCB0aGlzIEFSR1YtZWxl bWVudCBieSB0YWtpbmcgdGhlIHJlc3QgYXMgYW4gYXJnLAogCSAgICAgICB3ZSBtdXN0IGFkdmFu Y2UgdG8gdGhlIG5leHQgZWxlbWVudCBub3cuICAqLwogCSAgICBkLT5vcHRpbmQrKzsKQEAgLTg3 OSwyMCArODkxLDIxIEBAIF9nZXRvcHRfaW50ZXJuYWxfciAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0 ICphcmd2LCBjb25zdCBjaGFyICpvcHRzdHJpbmcsCiAJICAvKiBXZSBhbHJlYWR5IGluY3JlbWVu dGVkIGBkLT5vcHRpbmQnIG9uY2U7CiAJICAgICBpbmNyZW1lbnQgaXQgYWdhaW4gd2hlbiB0YWtp bmcgbmV4dCBBUkdWLWVsdCBhcyBhcmd1bWVudC4gICovCiAJICBkLT5vcHRhcmcgPSBhcmd2W2Qt Pm9wdGluZCsrXTsKKwlkLT5vcHRwb3MgPSAwOwogCiAJLyogb3B0YXJnIGlzIG5vdyB0aGUgYXJn dW1lbnQsIHNlZSBpZiBpdCdzIGluIHRoZQogCSAgIHRhYmxlIG9mIGxvbmdvcHRzLiAgKi8KIAot CWZvciAoZC0+X19uZXh0Y2hhciA9IG5hbWVlbmQgPSBkLT5vcHRhcmc7ICpuYW1lZW5kICYmICpu YW1lZW5kICE9ICc9JzsKKwlmb3IgKG5leHRjaGFyID0gbmFtZWVuZCA9IGQtPm9wdGFyZzsgKm5h bWVlbmQgJiYgKm5hbWVlbmQgIT0gJz0nOwogCSAgICAgbmFtZWVuZCsrKQogCSAgLyogRG8gbm90 aGluZy4gICovIDsKIAogCS8qIFRlc3QgYWxsIGxvbmcgb3B0aW9ucyBmb3IgZWl0aGVyIGV4YWN0 IG1hdGNoCiAJICAgb3IgYWJicmV2aWF0ZWQgbWF0Y2hlcy4gICovCiAJZm9yIChwID0gbG9uZ29w dHMsIG9wdGlvbl9pbmRleCA9IDA7IHAtPm5hbWU7IHArKywgb3B0aW9uX2luZGV4KyspCi0JICBp ZiAoIXN0cm5jbXAgKHAtPm5hbWUsIGQtPl9fbmV4dGNoYXIsIG5hbWVlbmQgLSBkLT5fX25leHRj aGFyKSkKKwkgIGlmICghc3RybmNtcCAocC0+bmFtZSwgbmV4dGNoYXIsIG5hbWVlbmQgLSBuZXh0 Y2hhcikpCiAJICAgIHsKLQkgICAgICBpZiAoKHVuc2lnbmVkIGludCkgKG5hbWVlbmQgLSBkLT5f X25leHRjaGFyKSA9PSBzdHJsZW4gKHAtPm5hbWUpKQorCSAgICAgIGlmICgodW5zaWduZWQgaW50 KSAobmFtZWVuZCAtIG5leHRjaGFyKSA9PSBzdHJsZW4gKHAtPm5hbWUpKQogCQl7CiAJCSAgLyog RXhhY3QgbWF0Y2ggZm91bmQuICAqLwogCQkgIHBmb3VuZCA9IHA7CkBAIC05MzcsNyArOTUwLDcg QEAgX2dldG9wdF9pbnRlcm5hbF9yIChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGNvbnN0 IGNoYXIgKm9wdHN0cmluZywKIAkJCSBhcmd2WzBdLCBhcmd2W2QtPm9wdGluZF0pOwogI2VuZGlm CiAJICAgICAgfQotCSAgICBkLT5fX25leHRjaGFyICs9IHN0cmxlbiAoZC0+X19uZXh0Y2hhcik7 CisJICAgIGQtPm9wdHBvcyA9IDA7CiAJICAgIGQtPm9wdGluZCsrOwogCSAgICByZXR1cm4gJz8n OwogCSAgfQpAQCAtOTgxLDcgKzk5NCw3IEBAIF9nZXRvcHRfaW50ZXJuYWxfciAoaW50IGFyZ2Ms IGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpvcHRzdHJpbmcsCiAjZW5kaWYKIAkJICAg ICAgfQogCi0JCSAgICBkLT5fX25leHRjaGFyICs9IHN0cmxlbiAoZC0+X19uZXh0Y2hhcik7CisJ CSAgICBkLT5vcHRwb3MgPSAwOwogCQkgICAgcmV0dXJuICc/JzsKIAkJICB9CiAJICAgICAgfQpA QCAtMTAxOSwxMSArMTAzMiwxMSBAQCBfZ2V0b3B0X2ludGVybmFsX3IgKGludCBhcmdjLCBjaGFy ICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqb3B0c3RyaW5nLAogCQkJCSBhcmd2WzBdLCBhcmd2 W2QtPm9wdGluZCAtIDFdKTsKICNlbmRpZgogCQkgICAgICB9Ci0JCSAgICBkLT5fX25leHRjaGFy ICs9IHN0cmxlbiAoZC0+X19uZXh0Y2hhcik7CisJCSAgICBkLT5vcHRwb3MgPSAwOwogCQkgICAg cmV0dXJuIG9wdHN0cmluZ1swXSA9PSAnOicgPyAnOicgOiAnPyc7CiAJCSAgfQogCSAgICAgIH0K LQkgICAgZC0+X19uZXh0Y2hhciArPSBzdHJsZW4gKGQtPl9fbmV4dGNoYXIpOworCSAgICBkLT5v cHRwb3MgPSAwOwogCSAgICBpZiAobG9uZ2luZCAhPSBOVUxMKQogCSAgICAgICpsb25naW5kID0g b3B0aW9uX2luZGV4OwogCSAgICBpZiAocGZvdW5kLT5mbGFnKQpAQCAtMTAzMyw3ICsxMDQ2LDcg QEAgX2dldG9wdF9pbnRlcm5hbF9yIChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGNvbnN0 IGNoYXIgKm9wdHN0cmluZywKIAkgICAgICB9CiAJICAgIHJldHVybiBwZm91bmQtPnZhbDsKIAkg IH0KLQkgIGQtPl9fbmV4dGNoYXIgPSBOVUxMOworCSAgZC0+b3B0cG9zID0gMDsKIAkgIHJldHVy biAnVyc7CS8qIExldCB0aGUgYXBwbGljYXRpb24gaGFuZGxlIGl0LiAgICovCiAgICAgICB9CiAj ZW5kaWYKQEAgLTEwNDIsMjEgKzEwNTUsMjEgQEAgX2dldG9wdF9pbnRlcm5hbF9yIChpbnQgYXJn YywgY2hhciAqY29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKm9wdHN0cmluZywKIAlpZiAodGVtcFsy XSA9PSAnOicpCiAJICB7CiAJICAgIC8qIFRoaXMgaXMgYW4gb3B0aW9uIHRoYXQgYWNjZXB0cyBh biBhcmd1bWVudCBvcHRpb25hbGx5LiAgKi8KLQkgICAgaWYgKCpkLT5fX25leHRjaGFyICE9ICdc MCcpCisJICAgIGlmICgqbmV4dGNoYXIgIT0gJ1wwJykKIAkgICAgICB7Ci0JCWQtPm9wdGFyZyA9 IGQtPl9fbmV4dGNoYXI7CisJCWQtPm9wdGFyZyA9IG5leHRjaGFyOwogCQlkLT5vcHRpbmQrKzsK IAkgICAgICB9CiAJICAgIGVsc2UKIAkgICAgICBkLT5vcHRhcmcgPSBOVUxMOwotCSAgICBkLT5f X25leHRjaGFyID0gTlVMTDsKKwkgICAgZC0+b3B0cG9zID0gMDsKIAkgIH0KIAllbHNlCiAJICB7 CiAJICAgIC8qIFRoaXMgaXMgYW4gb3B0aW9uIHRoYXQgcmVxdWlyZXMgYW4gYXJndW1lbnQuICAq LwotCSAgICBpZiAoKmQtPl9fbmV4dGNoYXIgIT0gJ1wwJykKKwkgICAgaWYgKCpuZXh0Y2hhciAh PSAnXDAnKQogCSAgICAgIHsKLQkJZC0+b3B0YXJnID0gZC0+X19uZXh0Y2hhcjsKKwkJZC0+b3B0 YXJnID0gbmV4dGNoYXI7CiAJCS8qIElmIHdlIGVuZCB0aGlzIEFSR1YtZWxlbWVudCBieSB0YWtp bmcgdGhlIHJlc3QgYXMgYW4gYXJnLAogCQkgICB3ZSBtdXN0IGFkdmFuY2UgdG8gdGhlIG5leHQg ZWxlbWVudCBub3cuICAqLwogCQlkLT5vcHRpbmQrKzsKQEAgLTExMDEsNyArMTExNCw3IEBAIF9n ZXRvcHRfaW50ZXJuYWxfciAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFy ICpvcHRzdHJpbmcsCiAJICAgICAgLyogV2UgYWxyZWFkeSBpbmNyZW1lbnRlZCBgb3B0aW5kJyBv bmNlOwogCQkgaW5jcmVtZW50IGl0IGFnYWluIHdoZW4gdGFraW5nIG5leHQgQVJHVi1lbHQgYXMg YXJndW1lbnQuICAqLwogCSAgICAgIGQtPm9wdGFyZyA9IGFyZ3ZbZC0+b3B0aW5kKytdOwotCSAg ICBkLT5fX25leHRjaGFyID0gTlVMTDsKKwkgICAgZC0+b3B0cG9zID0gMDsKIAkgIH0KICAgICAg IH0KICAgICByZXR1cm4gYzsKQEAgLTExMTUsMTIgKzExMjgsMTQgQEAgX2dldG9wdF9pbnRlcm5h bCAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpvcHRzdHJpbmcsCiAg IGludCByZXN1bHQ7CiAKICAgZ2V0b3B0X2RhdGEub3B0aW5kID0gb3B0aW5kOworICBnZXRvcHRf ZGF0YS5vcHRwb3MgPSBfX29wdHBvczsKICAgZ2V0b3B0X2RhdGEub3B0ZXJyID0gb3B0ZXJyOwog CiAgIHJlc3VsdCA9IF9nZXRvcHRfaW50ZXJuYWxfciAoYXJnYywgYXJndiwgb3B0c3RyaW5nLCBs b25nb3B0cywKIAkJCSAgICAgICBsb25naW5kLCBsb25nX29ubHksICZnZXRvcHRfZGF0YSk7CiAK ICAgb3B0aW5kID0gZ2V0b3B0X2RhdGEub3B0aW5kOworICBfX29wdHBvcyA9IGdldG9wdF9kYXRh Lm9wdHBvczsKICAgb3B0YXJnID0gZ2V0b3B0X2RhdGEub3B0YXJnOwogICBvcHRvcHQgPSBnZXRv cHRfZGF0YS5vcHRvcHQ7CiAKZGlmZiAtLWdpdCBhL2xpYmMvdW5pc3RkL2dldG9wdF9pbnQuaCBi L2xpYmMvdW5pc3RkL2dldG9wdF9pbnQuaAppbmRleCBhNzBmYThiLi40YzAzZmUwIDEwMDY0NAot LS0gYS9saWJjL3VuaXN0ZC9nZXRvcHRfaW50LmgKKysrIGIvbGliYy91bmlzdGQvZ2V0b3B0X2lu dC5oCkBAIC00Miw2ICs0MiwxMyBAQCBzdHJ1Y3QgX2dldG9wdF9kYXRhCiAgICAgIHZhcmlhYmxl cywgZXhjZXB0IHRoYXQgdGhleSBhcmUgdXNlZCBmb3IgdGhlIHJlZW50cmFudAogICAgICB2ZXJz aW9ucyBvZiBnZXRvcHQuICAqLwogICBpbnQgb3B0aW5kOworICAvKiBUaGUgbmV4dCBjaGFyIHRv IGJlIHNjYW5uZWQgaW4gdGhlIG9wdGlvbi1lbGVtZW50CisgICAgIGluIHdoaWNoIHRoZSBsYXN0 IG9wdGlvbiBjaGFyYWN0ZXIgd2UgcmV0dXJuZWQgd2FzIGZvdW5kLgorICAgICBUaGlzIGFsbG93 cyB1cyB0byBwaWNrIHVwIHRoZSBzY2FuIHdoZXJlIHdlIGxlZnQgb2ZmLgorCisgICAgIElmIHRo aXMgaXMgemVybywgaXQgbWVhbnMgcmVzdW1lIHRoZSBzY2FuCisgICAgIGJ5IGFkdmFuY2luZyB0 byB0aGUgbmV4dCBBUkdWLWVsZW1lbnQuICAqLworICBpbnQgb3B0cG9zOwogICBpbnQgb3B0ZXJy OwogICBjaGFyICpvcHRhcmc7CiAgIHNtYWxsdWludCBvcHRvcHQ7IC8qIHdlIHN0b3JlIGNoYXJh Y3RlcnMgaGVyZSwgYSBieXRlIGlzIGVub3VnaCAqLwpAQCAtODQsMTQgKzkxLDYgQEAgc3RydWN0 IF9nZXRvcHRfZGF0YQogICAvKiBJZiB0aGUgUE9TSVhMWV9DT1JSRUNUIGVudmlyb25tZW50IHZh cmlhYmxlIGlzIHNldC4gICovCiAgIHNtYWxsaW50IF9fcG9zaXhseV9jb3JyZWN0OwogCi0gIC8q IFRoZSBuZXh0IGNoYXIgdG8gYmUgc2Nhbm5lZCBpbiB0aGUgb3B0aW9uLWVsZW1lbnQKLSAgICAg aW4gd2hpY2ggdGhlIGxhc3Qgb3B0aW9uIGNoYXJhY3RlciB3ZSByZXR1cm5lZCB3YXMgZm91bmQu Ci0gICAgIFRoaXMgYWxsb3dzIHVzIHRvIHBpY2sgdXAgdGhlIHNjYW4gd2hlcmUgd2UgbGVmdCBv ZmYuCi0KLSAgICAgSWYgdGhpcyBpcyB6ZXJvLCBvciBhIG51bGwgc3RyaW5nLCBpdCBtZWFucyBy ZXN1bWUgdGhlIHNjYW4KLSAgICAgYnkgYWR2YW5jaW5nIHRvIHRoZSBuZXh0IEFSR1YtZWxlbWVu dC4gICovCi0gIGNoYXIgKl9fbmV4dGNoYXI7Ci0KIAogICAvKiBIYW5kbGUgcGVybXV0YXRpb24g b2YgYXJndW1lbnRzLiAgKi8KIAo= --089e08221790e63bf70557d1caca--