Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jJUXh-0000CB-FD for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2020 03:59:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jJUXg-0002fV-Af for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2020 03:59:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jJUXf-0002fO-O5 for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2020 03:59:52 +0000 Received: from sender4-op-o13.zoho.com ([136.143.188.13]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from ) id 1jJUXY-0000FA-P2 for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2020 03:59:50 +0000 ARC-Seal: i=1; a=rsa-sha256; t=1585713580; cv=none; d=zohomail.com; s=zohoarc; b=YoluY+jSbC0y+4gaxLGwdgjBZmCz5Gjd+RwfkFYvBVcd86QyF7hJTL8FcYBKOWEhO8OKovDrvz3MtegktuYqYkdq5gDuVzpzOI6o1gHZeGV2npKnU3vW1mUZUjLOJl6vZAg8PVlsaq0+q/mfqS70szjjlgs7kGS4MdsquBriwhU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585713580; h=Content-Type:Cc:Date:From:MIME-Version:Message-ID:References:Subject:To; bh=LZ0olcmwB1SblQJw4S3hl0ZF8nHmrOscPPhwcNgsisY=; b=a9/Ovw0headHXPzNm5KBTrzGYPTyc8AgoMN+7hEcdyCmYHqY0L07Y+6upeqAbHGPO3YyjZhkTOmOCTjyW8VJvYhLz7VavYkrvh4J2ydDKjE+vY0tg5HVGHbURCyVk+kPDHUZEbr6jpWEm99tV5hVNlXPXGac9okKVF8i/di1YVg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=highgo.ca; spf=pass smtp.mailfrom=movead.li@highgo.ca; dmarc=pass header.from= header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1585713580; s=zoho; d=highgo.ca; i=movead.li@highgo.ca; h=Date:From:To:Cc:Subject:References:Mime-Version:Message-ID:Content-Type; bh=LZ0olcmwB1SblQJw4S3hl0ZF8nHmrOscPPhwcNgsisY=; b=eyrHxeDrKez+5HdD49l/g/PaSw7tWdUgi48FKIKKJ3a6kYFxGqcAHF4nsDjj5gSi 61Lx49zPpP3P8cWPHc+WFMxzWMJvC3MfAVM0Z7oOx5aEjPY4vMFk60pB+afDjJk1ZZ+ x2IxBILjz/8AAKR0wGHX+qdgBrr8QKDkW5RyRPMU= Received: from lchch (124.133.18.218 [124.133.18.218]) by mx.zohomail.com with SMTPS id 1585713579719497.5669404716134; Tue, 31 Mar 2020 20:59:39 -0700 (PDT) Date: Wed, 1 Apr 2020 11:59:39 +0800 From: "movead.li@highgo.ca" To: ashutosh.bapat Cc: pgsql-hackers Subject: Re: A bug when use get_bit() function for a long bytea string References: <20200312115135445367128@highgo.ca>, , <20200313111842791351178@highgo.ca>, , <2020031810480643107833@highgo.ca>, , <2020032817093521193529@highgo.ca>, X-Priority: 3 X-GUID: FA0D6521-B836-4DC8-8069-45018646211B X-Has-Attach: yes X-Mailer: Foxmail 7.2.14.410[cn] Mime-Version: 1.0 Message-ID: <2020040111593809632067@highgo.ca> Content-Type: multipart/mixed; boundary="----=_001_NextPart546562808044_=----" X-Zoho-Virus-Status: 2 X-ZohoMailClient: External List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. ------=_001_NextPart546562808044_=---- Content-Type: multipart/alternative; boundary="----=_002_NextPart164844253717_=----" ------=_002_NextPart164844253717_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 DQo+KyBpbnQ2NCByZXMscmVzdWx0bGVuOw0KPkl0J3MgYmV0dGVyIHRvIGhhdmUgdGhlbSBvbiBz ZXBhcmF0ZSBsaW5lcy4NClNvcnJ5IGZvciB0aGF0LCBkb25lLg0KDQo+LXVuc2lnbmVkDQo+K2lu dDY0DQo+IGhleF9kZWNvZGUoY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBsZW4sIGNoYXIgKmRz dCkNCj5EbyB3ZSB3YW50IHRvIGV4cGxpY2l0bHkgY2FzdCB0aGUgcmV0dXJuIHZhbHVlIHRvIGlu dDY0PyBXaWxsIGJ1aWxkIG9uIHNvbWUgcGxhdGZvcm0gY3JpYiBpZiBub3QgZG9uZSBzbz8NCj5J IGRvbid0IGtub3cgb2Ygc3VjaCBhIHBsYXRmb3JtIGJ1dCBteSBrbm93bGVkZ2UgaW4gdGhpcyBh cmVhIGlzIG5vdCBncmVhdC4NCkkgdGhpbmsgY3VycmVudCBjaGFuZ2UgY2FuIG1ha2Ugc3VyZSBu b3RoaW5nIHdyb25nLg0KDQo+KyBieXRlTm8gPSAoaW50KShuIC8gOCk7DQo+KyBiaXRObyA9IChp bnQpKG4gJSA4KTsNCj5zb21lIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgdGhpcyBkb3duY2FzdGlu ZyBpcyBzYWZlIGhlcmU/DQpEb25lDQoNCj4tICBwcm9uYW1lID0+ICdnZXRfYml0JywgcHJvcmV0 dHlwZSA9PiAnaW50NCcsIHByb2FyZ3R5cGVzID0+ICdieXRlYSBpbnQ0JywNCj4rICBwcm9uYW1l ID0+ICdnZXRfYml0JywgcHJvcmV0dHlwZSA9PiAnaW50NCcsIHByb2FyZ3R5cGVzID0+ICdieXRl YSBpbnQ4JywNCj4gICBwcm9zcmMgPT4gJ2J5dGVhR2V0Qml0JyB9LA0KPiB7IG9pZCA9PiAnNzI0 JywgZGVzY3IgPT4gJ3NldCBiaXQnLA0KPi0gIHByb25hbWUgPT4gJ3NldF9iaXQnLCBwcm9yZXR0 eXBlID0+ICdieXRlYScsIHByb2FyZ3R5cGVzID0+ICdieXRlYSBpbnQ0IGludDQnLA0KPisgIHBy b25hbWUgPT4gJ3NldF9iaXQnLCBwcm9yZXR0eXBlID0+ICdieXRlYScsIHByb2FyZ3R5cGVzID0+ ICdieXRlYSBpbnQ4IGludDQnLA0KPiAgIHByb3NyYyA9PiAnYnl0ZWFTZXRCaXQnIH0sDQo+U2hv dWxkbid0IHdlIGhhdmUgc2ltaWxhciBjaGFuZ2VzIGZvciBmb2xsb3dpbmcgZW50cmllcyBhcyB3 ZWxsPw0KPnsgb2lkID0+ICczMDMyJywgZGVzY3IgPT4gJ2dldCBiaXQnLA0KPiBwcm9uYW1lID0+ ICdnZXRfYml0JywgcHJvcmV0dHlwZSA9PiAnaW50NCcsIHByb2FyZ3R5cGVzID0+ICdiaXQgaW50 NCcsDQo+ICBwcm9zcmMgPT4gJ2JpdGdldGJpdCcgfSwNCj57IG9pZCA9PiAnMzAzMycsIGRlc2Ny ID0+ICdzZXQgYml0JywNCj4gIHByb25hbWUgPT4gJ3NldF9iaXQnLCBwcm9yZXR0eXBlID0+ICdi aXQnLCBwcm9hcmd0eXBlcyA9PiAnYml0IGludDQgaW50NCcsDQogPiBwcm9zcmMgPT4gJ2JpdHNl dGJpdCcgfSwNCkJlY2F1c2UgJ2JpdHNldGJpdCcgYW5kICdiaXRnZXRiaXQnIGRvIG5vdCBoYXZl IHRvIGNhbGN1bGF0ZSBiaXQgc2l6ZSBieSAnbXVsdGlwbHkgOCcsDQpzbyBJIHRoaW5rIGl0IHNl ZW1zIG5lZWQgbm90IHRvIGNoYW5nZSBpdC4NCg0KPlRoZSB0ZXN0cyB5b3UgaGF2ZSBhZGRlZCBh cmUgZm9yIGJ5dGVhIHZhcmlhbnQgd2hpY2ggdWx0aW1hdGVseSBjYWxsZXMgYnl0ZWFHZXQvU2V0 Qml0KCkuIA0KPkJ1dCBJIHRoaW5rIHdlIGFsc28gbmVlZCB0ZXN0cyBmb3IgYml0IHZhcmlhbnRz IHdoaWNoIHdpbGwgdWx0aW1hdGVseSBjYWxsIGJpdGdldGJpdCBhbmQgYml0c2V0Yml0IGZ1bmN0 aW9ucy4NCkFzIGFib3ZlLCBpdCBuZWVkIG5vdCB0byB0b3VjaCAnYml0Z2V0Yml0JyBhbmQgJ2Jp dHNldGJpdCcuDQoNCj5PbmNlIHlvdSBhZGRyZXNzIHRoZXNlIGNvbW1lbnRzLCBJIHRoaW5rIHRo ZSBwYXRjaCBpcyBnb29kIGZvciBhIGNvbW1pdHRlci4gDQo+U28gcGxlYXNlIG1hcmsgdGhlIGNv bW1pdGZlc3QgZW50cnkgYXMgc3VjaCB3aGVuIHlvdSBwb3N0IHRoZSBuZXh0IHZlcnNpb24gb2Yg cGF0Y2guDQpUaGFua3MgYSBsb3QgZm9yIHRoZSBkZXRhaWxlZCByZXZpZXcgYWdhaW4sIGFuZCBj aGFuZ2VkIHBhdGNoIGF0dGFjaGVkLg0KDQoNCg0KUmVnYXJkcywNCkhpZ2hnbyBTb2Z0d2FyZSAo Q2FuYWRhL0NoaW5hL1Bha2lzdGFuKSANClVSTCA6IHd3dy5oaWdoZ28uY2EgDQpFTUFJTDogbWFp bHRvOm1vdmVhZChkb3QpbGkoYXQpaGlnaGdvKGRvdCljYQ0K ------=_002_NextPart164844253717_=---- Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =0A

=
>+ int64 res,resultlen;
>It's better to ha= ve them on separate lines.
Sorry for that, done.

<= /div>
>-unsigned
>+int64
> hex_decode(const char *= src, unsigned len, char *dst)
>Do we want to explicitly cast = the return value to int64? Will build on some platform crib if not done so= ?
>I don't know of such a platform but my knowledge in this a= rea is not great.
I think current change can make sure not= hing wrong.

>+ byteNo =3D (int)(n / 8);
>= ;+ bitNo =3D (int)(n % 8);
>some comment explaining why t= his downcasting is safe here?
Done

>= -  proname =3D> 'get_bit', prorettype =3D> 'int4', proargtypes = =3D> 'bytea int4',
>+  proname =3D> 'get_bit', prorettype= =3D> 'int4', proargtypes =3D> 'bytea int8',
>   pro= src =3D> 'byteaGetBit' },
> { oid= =3D> '724', descr =3D> 'set bit',
>-  proname =3D> 'set_bit', prorettype =3D> 'bytea', proarg= types =3D> 'bytea int4 int4',
>+  proname =3D> 'set_bit',= prorettype =3D> 'bytea', proargtypes =3D> 'bytea int8 int4',
>= ;   prosrc =3D> 'byteaSetBit' },
>Shouldn't we have similar changes for following entries as well?
<= div>>{ oid =3D> '3032', descr =3D> 'get bit',> proname =3D> 'get_bit', prorettyp= e =3D> 'int4', proargtypes =3D> 'bit int4',
>  prosrc =3D> 'bitgetbit' },
>{ oid =3D> '3= 033', descr =3D> 'set bit',
>  proname =3D> 'set_bit', pr= orettype =3D> 'bit', proargtypes =3D> 'bit int4 int4',
 > prosrc =3D> 'bitsetbit' },
Because 'bitsetbit' and 'bitgetbit' do no= t have to calcu= late bit size by 'mu= ltiply 8',
so I think it seems need not to change it.

>The tests you have added are for bytea variant whic= h ultimately calles byteaGet/SetBit(). 
>But I think we = also need tests for bit variants which will ultimately call bitgetbit and bitsetbit functions.
As above, it nee= d not to touch 'bitgetbit' and ''.

>Once yo= u address these comments, I think the patch is good for a committer. =
>So please mark the commitfest entry as such when you post t= he next version of patch.
=0A
Thanks a lot for the detailed= review again, and changed patch attached.


=0A
Regards,
Highgo Software (Canada/China/Pakistan)
URL : www.highgo.ca <= br style=3D"box-sizing: border-box; color: rgb(13, 10, 11); font-family: m= onospace, monospace; font-size: 10.7333px; font-variant-ligatures: normal;= orphans: 2; white-space: pre-wrap; widows: 2;">EMAIL: mailto:movead(dot)li(at)highgo(dot)ca
=0A
=0A ------=_002_NextPart164844253717_=------ ------=_001_NextPart546562808044_=---- Content-Type: application/octet-stream; name="long_bytea_string_bug_fix_ver5.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="long_bytea_string_bug_fix_ver5.patch" ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9lbmNvZGUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9lbmNvZGUuYwppbmRleCBiOGQ5ZWM3ZTAwLi41ODVmZTBjNGJiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZW5jb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2VuY29kZS5jCkBAIC0yMCwxMCArMjAsMTAgQEAKIAogc3RydWN0IHBnX2VuY29kaW5n CiB7Ci0JdW5zaWduZWQJKCplbmNvZGVfbGVuKSAoY29uc3QgY2hhciAqZGF0YSwgdW5zaWduZWQg ZGxlbik7Ci0JdW5zaWduZWQJKCpkZWNvZGVfbGVuKSAoY29uc3QgY2hhciAqZGF0YSwgdW5zaWdu ZWQgZGxlbik7Ci0JdW5zaWduZWQJKCplbmNvZGUpIChjb25zdCBjaGFyICpkYXRhLCB1bnNpZ25l ZCBkbGVuLCBjaGFyICpyZXMpOwotCXVuc2lnbmVkCSgqZGVjb2RlKSAoY29uc3QgY2hhciAqZGF0 YSwgdW5zaWduZWQgZGxlbiwgY2hhciAqcmVzKTsKKwlpbnQ2NAkJKCplbmNvZGVfbGVuKSAoY29u c3QgY2hhciAqZGF0YSwgdW5zaWduZWQgZGxlbik7CisJaW50NjQJCSgqZGVjb2RlX2xlbikgKGNv bnN0IGNoYXIgKmRhdGEsIHVuc2lnbmVkIGRsZW4pOworCWludDY0CQkoKmVuY29kZSkgKGNvbnN0 IGNoYXIgKmRhdGEsIHVuc2lnbmVkIGRsZW4sIGNoYXIgKnJlcyk7CisJaW50NjQJCSgqZGVjb2Rl KSAoY29uc3QgY2hhciAqZGF0YSwgdW5zaWduZWQgZGxlbiwgY2hhciAqcmVzKTsKIH07CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgcGdfZW5jb2RpbmcgKnBnX2ZpbmRfZW5jb2RpbmcoY29uc3QgY2hh ciAqbmFtZSk7CkBAIC0zOSw5ICszOSw5IEBAIGJpbmFyeV9lbmNvZGUoUEdfRlVOQ1RJT05fQVJH UykKIAlEYXR1bQkJbmFtZSA9IFBHX0dFVEFSR19EQVRVTSgxKTsKIAl0ZXh0CSAgICpyZXN1bHQ7 CiAJY2hhcgkgICAqbmFtZWJ1ZjsKLQlpbnQJCQlkYXRhbGVuLAotCQkJCXJlc3VsdGxlbiwKLQkJ CQlyZXM7CisJaW50CQkJZGF0YWxlbjsKKwlpbnQ2NAkJcmVzOworCWludDY0CQlyZXN1bHRsZW47 CiAJY29uc3Qgc3RydWN0IHBnX2VuY29kaW5nICplbmM7CiAKIAlkYXRhbGVuID0gVkFSU0laRV9B TllfRVhIRFIoZGF0YSk7CkBAIC03NSw5ICs3NSw4IEBAIGJpbmFyeV9kZWNvZGUoUEdfRlVOQ1RJ T05fQVJHUykKIAlEYXR1bQkJbmFtZSA9IFBHX0dFVEFSR19EQVRVTSgxKTsKIAlieXRlYQkgICAq cmVzdWx0OwogCWNoYXIJICAgKm5hbWVidWY7Ci0JaW50CQkJZGF0YWxlbiwKLQkJCQlyZXN1bHRs ZW4sCi0JCQkJcmVzOworCWludAkJCWRhdGFsZW47CisJaW50NjQJCXJlc3VsdGxlbiwgcmVzOwog CWNvbnN0IHN0cnVjdCBwZ19lbmNvZGluZyAqZW5jOwogCiAJZGF0YWxlbiA9IFZBUlNJWkVfQU5Z X0VYSERSKGRhdGEpOwpAQCAtMTIyLDcgKzEyMSw3IEBAIHN0YXRpYyBjb25zdCBpbnQ4IGhleGxv b2t1cFsxMjhdID0gewogCS0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLAogfTsKIAotdW5zaWduZWQKK2ludDY0CiBoZXhfZW5jb2Rl KGNvbnN0IGNoYXIgKnNyYywgdW5zaWduZWQgbGVuLCBjaGFyICpkc3QpCiB7CiAJY29uc3QgY2hh ciAqZW5kID0gc3JjICsgbGVuOwpAQCAtMTMzLDcgKzEzMiw3IEBAIGhleF9lbmNvZGUoY29uc3Qg Y2hhciAqc3JjLCB1bnNpZ25lZCBsZW4sIGNoYXIgKmRzdCkKIAkJKmRzdCsrID0gaGV4dGJsWypz cmMgJiAweEZdOwogCQlzcmMrKzsKIAl9Ci0JcmV0dXJuIGxlbiAqIDI7CisJcmV0dXJuIChpbnQ2 NClsZW4gKiAyOwogfQogCiBzdGF0aWMgaW5saW5lIGNoYXIKQEAgLTE1Miw3ICsxNTEsNyBAQCBn ZXRfaGV4KGNoYXIgYykKIAlyZXR1cm4gKGNoYXIpIHJlczsKIH0KIAotdW5zaWduZWQKK2ludDY0 CiBoZXhfZGVjb2RlKGNvbnN0IGNoYXIgKnNyYywgdW5zaWduZWQgbGVuLCBjaGFyICpkc3QpCiB7 CiAJY29uc3QgY2hhciAqcywKQEAgLTE4NCwxNiArMTgzLDE2IEBAIGhleF9kZWNvZGUoY29uc3Qg Y2hhciAqc3JjLCB1bnNpZ25lZCBsZW4sIGNoYXIgKmRzdCkKIAlyZXR1cm4gcCAtIGRzdDsKIH0K IAotc3RhdGljIHVuc2lnbmVkCitzdGF0aWMgaW50NjQKIGhleF9lbmNfbGVuKGNvbnN0IGNoYXIg KnNyYywgdW5zaWduZWQgc3JjbGVuKQogewotCXJldHVybiBzcmNsZW4gPDwgMTsKKwlyZXR1cm4g KGludDY0KXNyY2xlbiA8PCAxOwogfQogCi1zdGF0aWMgdW5zaWduZWQKK3N0YXRpYyBpbnQ2NAog aGV4X2RlY19sZW4oY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBzcmNsZW4pCiB7Ci0JcmV0dXJu IHNyY2xlbiA+PiAxOworCXJldHVybiAoaW50NjQpc3JjbGVuID4+IDE7CiB9CiAKIC8qCkBAIC0y MTQsNyArMjEzLDcgQEAgc3RhdGljIGNvbnN0IGludDggYjY0bG9va3VwWzEyOF0gPSB7CiAJNDEs IDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCAtMSwgLTEsIC0xLCAtMSwg LTEsCiB9OwogCi1zdGF0aWMgdW5zaWduZWQKK3N0YXRpYyBpbnQ2NAogcGdfYmFzZTY0X2VuY29k ZShjb25zdCBjaGFyICpzcmMsIHVuc2lnbmVkIGxlbiwgY2hhciAqZHN0KQogewogCWNoYXIJICAg KnAsCkBAIC0yNjEsNyArMjYwLDcgQEAgcGdfYmFzZTY0X2VuY29kZShjb25zdCBjaGFyICpzcmMs IHVuc2lnbmVkIGxlbiwgY2hhciAqZHN0KQogCXJldHVybiBwIC0gZHN0OwogfQogCi1zdGF0aWMg dW5zaWduZWQKK3N0YXRpYyBpbnQ2NAogcGdfYmFzZTY0X2RlY29kZShjb25zdCBjaGFyICpzcmMs IHVuc2lnbmVkIGxlbiwgY2hhciAqZHN0KQogewogCWNvbnN0IGNoYXIgKnNyY2VuZCA9IHNyYyAr IGxlbiwKQEAgLTMzMSwxNyArMzMwLDE3IEBAIHBnX2Jhc2U2NF9kZWNvZGUoY29uc3QgY2hhciAq c3JjLCB1bnNpZ25lZCBsZW4sIGNoYXIgKmRzdCkKIH0KIAogCi1zdGF0aWMgdW5zaWduZWQKK3N0 YXRpYyBpbnQ2NAogcGdfYmFzZTY0X2VuY19sZW4oY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBz cmNsZW4pCiB7CiAJLyogMyBieXRlcyB3aWxsIGJlIGNvbnZlcnRlZCB0byA0LCBsaW5lZmVlZCBh ZnRlciA3NiBjaGFycyAqLwotCXJldHVybiAoc3JjbGVuICsgMikgKiA0IC8gMyArIHNyY2xlbiAv ICg3NiAqIDMgLyA0KTsKKwlyZXR1cm4gKChpbnQ2NClzcmNsZW4gKyAyKSAqIDQgLyAzICsgKGlu dDY0KXNyY2xlbiAvICg3NiAqIDMgLyA0KTsKIH0KIAotc3RhdGljIHVuc2lnbmVkCitzdGF0aWMg aW50NjQKIHBnX2Jhc2U2NF9kZWNfbGVuKGNvbnN0IGNoYXIgKnNyYywgdW5zaWduZWQgc3JjbGVu KQogewotCXJldHVybiAoc3JjbGVuICogMykgPj4gMjsKKwlyZXR1cm4gKChpbnQ2NClzcmNsZW4g KiAzKSA+PiAyOwogfQogCiAvKgpAQCAtMzYxLDEyICszNjAsMTIgQEAgcGdfYmFzZTY0X2RlY19s ZW4oY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBzcmNsZW4pCiAjZGVmaW5lIFZBTChDSCkJCQko KENIKSAtICcwJykKICNkZWZpbmUgRElHKFZBTCkJCSgoVkFMKSArICcwJykKIAotc3RhdGljIHVu c2lnbmVkCitzdGF0aWMgaW50NjQKIGVzY19lbmNvZGUoY29uc3QgY2hhciAqc3JjLCB1bnNpZ25l ZCBzcmNsZW4sIGNoYXIgKmRzdCkKIHsKIAljb25zdCBjaGFyICplbmQgPSBzcmMgKyBzcmNsZW47 CiAJY2hhcgkgICAqcnAgPSBkc3Q7Ci0JaW50CQkJbGVuID0gMDsKKwlpbnQ2NAkJbGVuID0gMDsK IAogCXdoaWxlIChzcmMgPCBlbmQpCiAJewpAQCAtNDAwLDEyICszOTksMTIgQEAgZXNjX2VuY29k ZShjb25zdCBjaGFyICpzcmMsIHVuc2lnbmVkIHNyY2xlbiwgY2hhciAqZHN0KQogCXJldHVybiBs ZW47CiB9CiAKLXN0YXRpYyB1bnNpZ25lZAorc3RhdGljIGludDY0CiBlc2NfZGVjb2RlKGNvbnN0 IGNoYXIgKnNyYywgdW5zaWduZWQgc3JjbGVuLCBjaGFyICpkc3QpCiB7CiAJY29uc3QgY2hhciAq ZW5kID0gc3JjICsgc3JjbGVuOwogCWNoYXIJICAgKnJwID0gZHN0OwotCWludAkJCWxlbiA9IDA7 CisJaW50NjQJCWxlbiA9IDA7CiAKIAl3aGlsZSAoc3JjIDwgZW5kKQogCXsKQEAgLTQ0OCwxMSAr NDQ3LDExIEBAIGVzY19kZWNvZGUoY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBzcmNsZW4sIGNo YXIgKmRzdCkKIAlyZXR1cm4gbGVuOwogfQogCi1zdGF0aWMgdW5zaWduZWQKK3N0YXRpYyBpbnQ2 NAogZXNjX2VuY19sZW4oY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBzcmNsZW4pCiB7CiAJY29u c3QgY2hhciAqZW5kID0gc3JjICsgc3JjbGVuOwotCWludAkJCWxlbiA9IDA7CisJaW50NjQJCWxl biA9IDA7CiAKIAl3aGlsZSAoc3JjIDwgZW5kKQogCXsKQEAgLTQ2OSwxMSArNDY4LDExIEBAIGVz Y19lbmNfbGVuKGNvbnN0IGNoYXIgKnNyYywgdW5zaWduZWQgc3JjbGVuKQogCXJldHVybiBsZW47 CiB9CiAKLXN0YXRpYyB1bnNpZ25lZAorc3RhdGljIGludDY0CiBlc2NfZGVjX2xlbihjb25zdCBj aGFyICpzcmMsIHVuc2lnbmVkIHNyY2xlbikKIHsKIAljb25zdCBjaGFyICplbmQgPSBzcmMgKyBz cmNsZW47Ci0JaW50CQkJbGVuID0gMDsKKwlpbnQ2NAkJbGVuID0gMDsKIAogCXdoaWxlIChzcmMg PCBlbmQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXggOTA3YjVhYjdiMC4uNDdhYTVi ZTNhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCkBAIC0zODgsNyArMzg4LDcgQEAgYnl0ZWFv dXQoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCS8qIFByaW50IHRyYWRpdGlvbmFsIGVzY2FwZWQg Zm9ybWF0ICovCiAJCWNoYXIJICAgKnZwOwotCQlpbnQJCQlsZW47CisJCWludDY0CQlsZW47CiAJ CWludAkJCWk7CiAKIAkJbGVuID0gMTsJCQkJLyogZW1wdHkgc3RyaW5nIGhhcyAxIGNoYXIgKi8K QEAgLTM0NTUsNyArMzQ1NSw3IEBAIERhdHVtCiBieXRlYUdldEJpdChQR19GVU5DVElPTl9BUkdT KQogewogCWJ5dGVhCSAgICp2ID0gUEdfR0VUQVJHX0JZVEVBX1BQKDApOwotCWludDMyCQluID0g UEdfR0VUQVJHX0lOVDMyKDEpOworCWludDY0CQluID0gUEdfR0VUQVJHX0lOVDY0KDEpOwogCWlu dAkJCWJ5dGVObywKIAkJCQliaXRObzsKIAlpbnQJCQlsZW47CkBAIC0zNDYzLDE0ICszNDYzLDE3 IEBAIGJ5dGVhR2V0Qml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlsZW4gPSBWQVJTSVpFX0FOWV9F WEhEUih2KTsKIAotCWlmIChuIDwgMCB8fCBuID49IGxlbiAqIDgpCisJaWYgKG4gPCAwIHx8IG4g Pj0gKGludDY0KWxlbiAqIDgpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9BUlJBWV9TVUJTQ1JJUFRfRVJST1IpLAotCQkJCSBlcnJtc2coImluZGV4ICVkIG91dCBvZiB2 YWxpZCByYW5nZSwgMC4uJWQiLAotCQkJCQkJbiwgbGVuICogOCAtIDEpKSk7Ci0KLQlieXRlTm8g PSBuIC8gODsKLQliaXRObyA9IG4gJSA4OworCQkJCSBlcnJtc2coImluZGV4ICJJTlQ2NF9GT1JN QVQiIG91dCBvZiB2YWxpZCByYW5nZSwgMC4uIklOVDY0X0ZPUk1BVCwKKwkJCQkJCW4sIChpbnQ2 NClsZW4gKiA4IC0gMSkpKTsKKwkvKgorCSAqIFRoZSB2YWx1ZSBvZiAnbicgaXMgc21hbGxlciB0 aGFuICdsZW4gKiA4JywgYW5kICdsZW4nIGlzIGJ5IGludCB0eXBlLAorCSAqIHNvIGl0IGlzIHNh ZmUgdG8gZG93bmNhc3RpbmcgJ24nIGZyb20gaW50NjQgdG8gaW50LgorCSAqLworCWJ5dGVObyA9 IChpbnQpKG4gLyA4KTsKKwliaXRObyA9IChpbnQpKG4gJSA4KTsKIAogCWJ5dGUgPSAoKHVuc2ln bmVkIGNoYXIgKikgVkFSREFUQV9BTlkodikpW2J5dGVOb107CiAKQEAgLTM1MjQsNyArMzUyNyw3 IEBAIERhdHVtCiBieXRlYVNldEJpdChQR19GVU5DVElPTl9BUkdTKQogewogCWJ5dGVhCSAgICpy ZXMgPSBQR19HRVRBUkdfQllURUFfUF9DT1BZKDApOwotCWludDMyCQluID0gUEdfR0VUQVJHX0lO VDMyKDEpOworCWludDY0CQluID0gUEdfR0VUQVJHX0lOVDY0KDEpOwogCWludDMyCQluZXdCaXQg PSBQR19HRVRBUkdfSU5UMzIoMik7CiAJaW50CQkJbGVuOwogCWludAkJCW9sZEJ5dGUsCkBAIC0z NTM0LDE0ICszNTM3LDE3IEBAIGJ5dGVhU2V0Qml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlsZW4g PSBWQVJTSVpFKHJlcykgLSBWQVJIRFJTWjsKIAotCWlmIChuIDwgMCB8fCBuID49IGxlbiAqIDgp CisJaWYgKG4gPCAwIHx8IG4gPj0gKGludDY0KWxlbiAqIDgpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9BUlJBWV9TVUJTQ1JJUFRfRVJST1IpLAotCQkJCSBlcnJtc2co ImluZGV4ICVkIG91dCBvZiB2YWxpZCByYW5nZSwgMC4uJWQiLAotCQkJCQkJbiwgbGVuICogOCAt IDEpKSk7Ci0KLQlieXRlTm8gPSBuIC8gODsKLQliaXRObyA9IG4gJSA4OworCQkJCSBlcnJtc2co ImluZGV4ICJJTlQ2NF9GT1JNQVQiIG91dCBvZiB2YWxpZCByYW5nZSwgMC4uIklOVDY0X0ZPUk1B VCwKKwkJCQkJCW4sIChpbnQ2NClsZW4gKiA4IC0gMSkpKTsKKwkvKgorCSAqIFRoZSB2YWx1ZSBv ZiAnbicgaXMgc21hbGxlciB0aGFuICdsZW4gKiA4JywgYW5kICdsZW4nIGlzIGJ5IGludCB0eXBl LAorCSAqIHNvIGl0IGlzIHNhZmUgdG8gZG93bmNhc3RpbmcgJ24nIGZyb20gaW50NjQgdG8gaW50 LgorCSAqLworCWJ5dGVObyA9IChpbnQ2NCkobiAvIDgpOworCWJpdE5vID0gKGludDY0KShuICUg OCk7CiAKIAkvKgogCSAqIHNhbml0eSBjaGVjayEKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4 IGE2YTcwOGNjYTkuLjIxOGFmNWFiMmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTQw MywxMCArMTQwMywxMCBAQAogICBwcm9uYW1lID0+ICdzZXRfYnl0ZScsIHByb3JldHR5cGUgPT4g J2J5dGVhJywKICAgcHJvYXJndHlwZXMgPT4gJ2J5dGVhIGludDQgaW50NCcsIHByb3NyYyA9PiAn Ynl0ZWFTZXRCeXRlJyB9LAogeyBvaWQgPT4gJzcyMycsIGRlc2NyID0+ICdnZXQgYml0JywKLSAg cHJvbmFtZSA9PiAnZ2V0X2JpdCcsIHByb3JldHR5cGUgPT4gJ2ludDQnLCBwcm9hcmd0eXBlcyA9 PiAnYnl0ZWEgaW50NCcsCisgIHByb25hbWUgPT4gJ2dldF9iaXQnLCBwcm9yZXR0eXBlID0+ICdp bnQ0JywgcHJvYXJndHlwZXMgPT4gJ2J5dGVhIGludDgnLAogICBwcm9zcmMgPT4gJ2J5dGVhR2V0 Qml0JyB9LAogeyBvaWQgPT4gJzcyNCcsIGRlc2NyID0+ICdzZXQgYml0JywKLSAgcHJvbmFtZSA9 PiAnc2V0X2JpdCcsIHByb3JldHR5cGUgPT4gJ2J5dGVhJywgcHJvYXJndHlwZXMgPT4gJ2J5dGVh IGludDQgaW50NCcsCisgIHByb25hbWUgPT4gJ3NldF9iaXQnLCBwcm9yZXR0eXBlID0+ICdieXRl YScsIHByb2FyZ3R5cGVzID0+ICdieXRlYSBpbnQ4IGludDQnLAogICBwcm9zcmMgPT4gJ2J5dGVh U2V0Qml0JyB9LAogeyBvaWQgPT4gJzc0OScsIGRlc2NyID0+ICdzdWJzdGl0dXRlIHBvcnRpb24g b2Ygc3RyaW5nJywKICAgcHJvbmFtZSA9PiAnb3ZlcmxheScsIHByb3JldHR5cGUgPT4gJ2J5dGVh JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmggYi9zcmMvaW5jbHVk ZS91dGlscy9idWlsdGlucy5oCmluZGV4IGUyMDE2YThiYzIuLjU1OTI1ZWFkOGIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv YnVpbHRpbnMuaApAQCAtMzIsOCArMzIsOCBAQCBleHRlcm4gaW50CWVycmRhdGF0eXBlKE9pZCBk YXRhdHlwZU9pZCk7CiBleHRlcm4gaW50CWVycmRvbWFpbmNvbnN0cmFpbnQoT2lkIGRhdGF0eXBl T2lkLCBjb25zdCBjaGFyICpjb25uYW1lKTsKIAogLyogZW5jb2RlLmMgKi8KLWV4dGVybiB1bnNp Z25lZCBoZXhfZW5jb2RlKGNvbnN0IGNoYXIgKnNyYywgdW5zaWduZWQgbGVuLCBjaGFyICpkc3Qp OwotZXh0ZXJuIHVuc2lnbmVkIGhleF9kZWNvZGUoY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBs ZW4sIGNoYXIgKmRzdCk7CitleHRlcm4gaW50NjQgaGV4X2VuY29kZShjb25zdCBjaGFyICpzcmMs IHVuc2lnbmVkIGxlbiwgY2hhciAqZHN0KTsKK2V4dGVybiBpbnQ2NCBoZXhfZGVjb2RlKGNvbnN0 IGNoYXIgKnNyYywgdW5zaWduZWQgbGVuLCBjaGFyICpkc3QpOwogCiAvKiBpbnQuYyAqLwogZXh0 ZXJuIGludDJ2ZWN0b3IgKmJ1aWxkaW50MnZlY3Rvcihjb25zdCBpbnQxNiAqaW50MnMsIGludCBu KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYml0Lm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYml0Lm91dAppbmRleCBhMWZhYjdlYmNiLi44ZTU2Mjg5OTY4 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JpdC5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9iaXQub3V0CkBAIC02NTYsNiArNjU2LDQwIEBAIFNFTEVD VCBzZXRfYml0KEInMDEwMTAxMTAwMDEwMDEwMCcsIDE1LCAxKTsKIAogU0VMRUNUIHNldF9iaXQo QicwMTAxMDExMDAwMTAwMTAwJywgMTYsIDEpOwktLSBmYWlsCiBFUlJPUjogIGJpdCBpbmRleCAx NiBvdXQgb2YgdmFsaWQgcmFuZ2UgKDAuLjE1KQorU0VMRUNUIGdldF9iaXQoCisgICAgICAgc2V0 X2JpdCgocmVwZWF0KCdQb3N0Z3JlcycsIDUxMiAqIDEwMjQgKiAxMDI0IC8gOCkpOjpieXRlYSwg MCwgMCkKKyAgICAgICAsMCk7CisgZ2V0X2JpdCAKKy0tLS0tLS0tLQorICAgICAgIDAKKygxIHJv dykKKworU0VMRUNUIGdldF9iaXQoCisgICAgICAgc2V0X2JpdCgocmVwZWF0KCdQb3N0Z3Jlcycs IDUxMiAqIDEwMjQgKiAxMDI0IC8gOCkpOjpieXRlYSwgMCwgMSkKKyAgICAgICAsMCk7CisgZ2V0 X2JpdCAKKy0tLS0tLS0tLQorICAgICAgIDEKKygxIHJvdykKKworc2VsZWN0IGdldF9iaXQoCisg ICAgICAgIHNldF9iaXQoKHJlcGVhdCgnUG9zdGdyZXMnLCA1MTIgKiAxMDI0ICogMTAyNCAvIDgp KTo6Ynl0ZWEsIAorICAgICAgICAgICAgICAgIDUxMjo6YmlnaW50ICogMTAyNCAqIDEwMjQgKiA4 IC0gMSwgMCkKKyAgICAgICAgLDUxMjo6YmlnaW50ICogMTAyNCAqIDEwMjQgKiA4IC0gMSk7Cisg Z2V0X2JpdCAKKy0tLS0tLS0tLQorICAgICAgIDAKKygxIHJvdykKKworc2VsZWN0IGdldF9iaXQo CisgICAgICAgIHNldF9iaXQoKHJlcGVhdCgnUG9zdGdyZXMnLCA1MTIgKiAxMDI0ICogMTAyNCAv IDgpKTo6Ynl0ZWEsCisgICAgICAgICAgICAgICAgNTEyOjpiaWdpbnQgKiAxMDI0ICogMTAyNCAq IDggLSAxLCAxKQorICAgICAgICw1MTI6OmJpZ2ludCAqIDEwMjQgKiAxMDI0ICogOCAtIDEpOwor IGdldF9iaXQgCistLS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cpCisKIC0tIE92ZXJsYXkKIFNF TEVDVCBvdmVybGF5KEInMDEwMTAxMTEwMCcgcGxhY2luZyAnMDAxJyBmcm9tIDIgZm9yIDMpOwog ICBvdmVybGF5ICAgCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9iaXQuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvYml0LnNxbAppbmRleCA3NjgxZDRhYjRkLi41OTE0MDk1OTQx IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9iaXQuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2JpdC5zcWwKQEAgLTIwMCw2ICsyMDAsMjEgQEAgRFJPUCBUQUJMRSBWQVJC SVRfU0hJRlRfVEFCTEU7CiBTRUxFQ1QgZ2V0X2JpdChCJzAxMDEwMTEwMDAxMDAnLCAxMCk7CiBT RUxFQ1Qgc2V0X2JpdChCJzAxMDEwMTEwMDAxMDAxMDAnLCAxNSwgMSk7CiBTRUxFQ1Qgc2V0X2Jp dChCJzAxMDEwMTEwMDAxMDAxMDAnLCAxNiwgMSk7CS0tIGZhaWwKK1NFTEVDVCBnZXRfYml0KAor ICAgICAgIHNldF9iaXQoKHJlcGVhdCgnUG9zdGdyZXMnLCA1MTIgKiAxMDI0ICogMTAyNCAvIDgp KTo6Ynl0ZWEsIDAsIDApCisgICAgICAgLDApOworU0VMRUNUIGdldF9iaXQoCisgICAgICAgc2V0 X2JpdCgocmVwZWF0KCdQb3N0Z3JlcycsIDUxMiAqIDEwMjQgKiAxMDI0IC8gOCkpOjpieXRlYSwg MCwgMSkKKyAgICAgICAsMCk7CitzZWxlY3QgZ2V0X2JpdCgKKyAgICAgICAgc2V0X2JpdCgocmVw ZWF0KCdQb3N0Z3JlcycsIDUxMiAqIDEwMjQgKiAxMDI0IC8gOCkpOjpieXRlYSwgCisgICAgICAg ICAgICAgICAgNTEyOjpiaWdpbnQgKiAxMDI0ICogMTAyNCAqIDggLSAxLCAwKQorICAgICAgICAs NTEyOjpiaWdpbnQgKiAxMDI0ICogMTAyNCAqIDggLSAxKTsKK3NlbGVjdCBnZXRfYml0KAorICAg ICAgICBzZXRfYml0KChyZXBlYXQoJ1Bvc3RncmVzJywgNTEyICogMTAyNCAqIDEwMjQgLyA4KSk6 OmJ5dGVhLAorICAgICAgICAgICAgICAgIDUxMjo6YmlnaW50ICogMTAyNCAqIDEwMjQgKiA4IC0g MSwgMSkKKyAgICAgICAsNTEyOjpiaWdpbnQgKiAxMDI0ICogMTAyNCAqIDggLSAxKTsKKwogCiAt LSBPdmVybGF5CiBTRUxFQ1Qgb3ZlcmxheShCJzAxMDEwMTExMDAnIHBsYWNpbmcgJzAwMScgZnJv bSAyIGZvciAzKTsK ------=_001_NextPart546562808044_=------