Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from ) id 1jCEsx-0006Wx-In for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Mar 2020 03:51:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1jCEsu-0001Ku-Lt for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Mar 2020 03:51:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1jCEsu-0001Kn-3l for pgsql-hackers@lists.postgresql.org; Thu, 12 Mar 2020 03:51:48 +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 1jCEsr-00020R-3H for pgsql-hackers@lists.postgresql.org; Thu, 12 Mar 2020 03:51:46 +0000 ARC-Seal: i=1; a=rsa-sha256; t=1583985101; cv=none; d=zohomail.com; s=zohoarc; b=V/YKUTsCcvvO7i2XnfD1/leN+5jZh4Ydo3KKE7pK38DckN+sZurM/W4vMPuiO2CReK3wi4u97Lm1bCbZYzP4KJfui8owa4yIxGpvrec2Db7jV6qUKe4DQHFtSWGALusOEmf/EdFJzeKbOnxp8xvQryE/zGfR5RZML69UTaroH/g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583985101; h=Content-Type:Date:From:MIME-Version:Message-ID:Subject:To; bh=keL1fIEJKoA9h0XBp8oBSD2SwnyIUhCr9K8ZB93q1d4=; b=KiTN7O1nNFiEnY7j64/+efvCX0uNEXLdIhz0Z2pJpdLiNWD748hfGEUPwom/sOwHLA/FeuSR/4uU28wVyVr3j+KpSBKvxqancq6n1tFLhSPW9oTdyMDQdZyR2W9hsfO12O5gIhRMOT+MvHMNY5G7t3IyeJaDDxsdY+0ZfWZ5Sqs= 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=1583985101; s=zoho; d=highgo.ca; i=movead.li@highgo.ca; h=Date:From:To:Subject:Mime-Version:Message-ID:Content-Type; bh=keL1fIEJKoA9h0XBp8oBSD2SwnyIUhCr9K8ZB93q1d4=; b=O1Jm8Gp7lf1MKkTsOteGqLB6iDnMIkwLwXOCcjSPdjyR/nVjRVoN19Ha6jvXkNYT hhd3rN3cPV7z3lHj7gV/OJ1Aap3Pj8Cj12QO5Yq5RI+78abugEkiCJ76xUVI2iuw4r7 n/jtDZpwfiyEcRhjb/OxLfM4I0gwle9VzTlFRktQ= Received: from lchch (124.133.18.218 [124.133.18.218]) by mx.zohomail.com with SMTPS id 15839850993281022.4933947360275; Wed, 11 Mar 2020 20:51:39 -0700 (PDT) Date: Thu, 12 Mar 2020 11:51:38 +0800 From: "movead.li@highgo.ca" To: pgsql-hackers Subject: A bug when use get_bit() function for a long bytea string X-Priority: 3 X-GUID: 0FDE034A-613B-464C-9CEC-A1CF67554687 X-Has-Attach: yes X-Mailer: Foxmail 7.2.14.410[cn] Mime-Version: 1.0 Message-ID: <20200312115135445367128@highgo.ca> Content-Type: multipart/mixed; boundary="----=_001_NextPart534303620088_=----" X-Zoho-Virus-Status: 1 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_NextPart534303620088_=---- Content-Type: multipart/alternative; boundary="----=_002_NextPart252168157356_=----" ------=_002_NextPart252168157356_=---- Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64 SGVsbG8gaGFja2VycywNCg0KSSBmb3VuZCBhbiBpc3N1ZSBhYm91dCBnZXRfYml0KCkgYW5kIHNl dF9iaXQoKSBmdW5jdGlvbixoZXJlIGl0IGlzOg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMNCnBvc3RncmVzPSMgc2VsZWN0IGdldF9iaXQocGdfcmVhZF9iaW5hcnlfZmlsZSgnL2hv bWUvbW92ZWFkL3RlbXAvZmlsZV9zZWVrL2ZfNTEyTScpLCAwKTsNCjIwMjAtMDMtMTIgMTA6MDU6 MjMuMjk2IENTVCBbMTA1NDldIEVSUk9SOiAgaW5kZXggMCBvdXQgb2YgdmFsaWQgcmFuZ2UsIDAu Li0xDQoyMDIwLTAzLTEyIDEwOjA1OjIzLjI5NiBDU1QgWzEwNTQ5XSBTVEFURU1FTlQ6ICBzZWxl Y3QgZ2V0X2JpdChwZ19yZWFkX2JpbmFyeV9maWxlKCcvaG9tZS9tb3ZlYWQvdGVtcC9maWxlX3Nl ZWsvZl81MTJNJyksIDApOw0KRVJST1I6ICBpbmRleCAwIG91dCBvZiB2YWxpZCByYW5nZSwgMC4u LTENCnBvc3RncmVzPSMgc2VsZWN0IHNldF9iaXQocGdfcmVhZF9iaW5hcnlfZmlsZSgnL2hvbWUv bW92ZWFkL3RlbXAvZmlsZV9zZWVrL2ZfNTEyTScpLCAwLDEpOw0KMjAyMC0wMy0xMiAxMDowNToy Ny45NTkgQ1NUIFsxMDU0OV0gRVJST1I6ICBpbmRleCAwIG91dCBvZiB2YWxpZCByYW5nZSwgMC4u LTENCjIwMjAtMDMtMTIgMTA6MDU6MjcuOTU5IENTVCBbMTA1NDldIFNUQVRFTUVOVDogIHNlbGVj dCBzZXRfYml0KHBnX3JlYWRfYmluYXJ5X2ZpbGUoJy9ob21lL21vdmVhZC90ZW1wL2ZpbGVfc2Vl ay9mXzUxMk0nKSwgMCwxKTsNCkVSUk9SOiAgaW5kZXggMCBvdXQgb2YgdmFsaWQgcmFuZ2UsIDAu Li0xDQpwb3N0Z3Jlcz0jDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KUG9zdGdy ZVNRTCBjYW4gaGFuZGxlIGJ5dGVhIHNpemUgbmVhcmJ5IDFHLCBidXQgbm93IGl0IHJlcG9ydHMg YW4NCmVycm9yIHdoZW4gNTEyTS4gQW5kIEkgcmVzZWFyY2ggaXQgYW5kIGZvdW5kIGl0IGlzIGJ5 dGVhU2V0Qml0KCkgYW5kDQpieXRlYUdldEJpdCgpLCBpdCB1c2VzIGFuICdpbnQzMiBsZW4nIHRv IGhvbGQgYml0IG51bWJlcnMgZm9yIHRoZSBsb25nDQpieXRlYSBkYXRhLCBhbmQgb2J2aW91cyA1 MTJNICogOGJpdCBpcyBhbiBvdmVyZmxvdyBmb3IgYW4gaW50MzIuIA0KU28gSSBmaXggaXQgYW5k IHRlc3Qgb2ssIGFzIGJlbG93Lg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCnBv c3RncmVzPSMgc2VsZWN0IGdldF9iaXQoc2V0X2JpdChwZ19yZWFkX2JpbmFyeV9maWxlKCcvaG9t ZS9tb3ZlYWQvdGVtcC9maWxlX3NlZWsvZl81MTJNJyksIDAsMSksMCk7IGdldF9iaXQgLS0tLS0t LS0tIDEgKDEgcm93KSBwb3N0Z3Jlcz0jIHNlbGVjdCBnZXRfYml0KHNldF9iaXQocGdfcmVhZF9i aW5hcnlfZmlsZSgnL2hvbWUvbW92ZWFkL3RlbXAvZmlsZV9zZWVrL2ZfNTEyTScpLCAwLDApLDAp OyBnZXRfYml0IC0tLS0tLS0tLSAwICgxIHJvdykgcG9zdGdyZXM9Iw0KIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMNCg0KDQpBbmQgSSBkbyBhIGNoZWNrIGFib3V0IGlmIGFueXRoaW5n IGVsc2UgcmVsYXRlZCBieXRlYSBoYXMgdGhpcyBpc3N1ZSwgc2V2ZXJhbCBjb2RlcyBoYXZlIHRo ZSBzYW1lIGlzc3VlOg0KMS4gYnl0ZWFvdXQoKSBXaGVuIGZvcm1hdHRpbmcgYnl0ZWEgYXMgYW4g ZXNjYXBlLCB0aGUgJ2xlbicgdmFyaWFibGUgc2hvdWxkIGJlIGludDY0LCBvcg0KaXQgbWF5IHVz ZSBhbiBvdmVyZmxvd2luZyBudW1iZXIuIDIuIGVzY19lbmNfbGVuKCkgU2FtZSBhcyBhYm92ZSwg dGhlICdsZW4nIHZhcmlhYmxlIHNob3VsZCBiZSBpbnQ2NCwgYW5kIHRoZSByZXR1cm4gdHlwZQ0K c2hvdWxkIGNoYW5nZSBhcyBpbnQ2NC4gRHVlIHRvIGVzY19lbmNfbGVuKCkgaGFzIHNhbWUgY2Fs bCBzdHJ1Y3Qgd2l0aCBwZ19iYXNlNjRfZW5jX2xlbigpIGFuZCBoZXhfZW5jX2xlbigpLCBzbyBJ IHdhbnQgdG8gY2hhbmdlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHR3byBmdW5jdGlvbi4gQW5k IHRoZSBvcHBvc2l0ZSBmdW5jdGlvbiBlc2NfZGVjX2xlbigpIHNlZW0gbm90aGluZyB3cm9uZy4g My4gYmluYXJ5X2VuY29kZSgpIGFuZCBiaW5hcnlfZGVjb2RlKCkgSGVyZSB1c2UgYW4gJ2ludDMy IHJlc3VsdGxlbicgdG8gYWNjZXB0IGFuICd1bnNpZ25lZCBpbnQnIGZ1bmN0aW9uIHJldHVybiwg d2hpY2ggc2VlbSB1bmZvcnRhYmxlLg0KSSBmaXggYWxsIG1lbnRpb25lZCBhYm92ZSwgYW5kIHBh dGNoIGF0dGFjaG1lbnRzLg0KSG93IGRvIHlvdSB0aGluayBhYm91dCB0aGF0Pw0KDQoNCg0KDQpI aWdoZ28gU29mdHdhcmUgKENhbmFkYS9DaGluYS9QYWtpc3RhbikgDQpVUkwgOiB3d3cuaGlnaGdv LmNhIA0KRU1BSUw6IG1haWx0bzptb3ZlYWQoZG90KWxpKGF0KWhpZ2hnbyhkb3QpY2ENCg== ------=_002_NextPart252168157356_=---- Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable =0A
Hello hackers,

=0A
I found an issue about get_bit() and set_bit() functi= on,here it is:
################################
postgres=3D# select get_bit(p= g_read_binary_file('/home/movead/temp/file_seek/f_512M'), 0);
20= 20-03-12 10:05:23.296 CST [10549] ERROR:  index 0 out of valid range,= 0..-1
2020-03-12 10:05:23.296 CST [10549] STATEMENT:  sele= ct get_bit(pg_read_binary_file('/home/movead/temp/file_seek/f_512M'), 0);<= /div>
ERROR:  index 0 out of valid range, 0..-1
postgre= s=3D# select set_bit(pg_read_binary_file('/home/movead/temp/file_seek/f_51= 2M'), 0,1);
2020-03-12 10:05:27.959 CST [10549] ERROR:  ind= ex 0 out of valid range, 0..-1
2020-03-12 10:05:27.959 CST [1054= 9] STATEMENT:  select set_bit(pg_read_binary_file('/home/movead/temp/= file_seek/f_512M'), 0,1);
ERROR:  index 0 out of valid rang= e, 0..-1
postgres=3D#
################
Postgr= eSQL can handle bytea size nearby 1G, but now it reports an
erro= r when 512M. And I research it and found it is byteaSetBit() and
byteaGetBit(), it uses an 'int32 len' to hold bit numbers for the long
bytea data, and obvious 512M * 8bit is an overflow = for an int32. 
So I fix it and test ok, as= below.
###############= #################
postgres=3D# select get_bit(set_bit(pg_read_binar= y_file('/home/movead/temp/file_seek/f_512M'), 0,1),0);=0A get_bit =0A-----= ----=0A 1=0A(1 row)=0Apostgres=3D# select get_bit(set_bit(pg_read_bi= nary_file('/home/movead/temp/file_seek/f_512M'), 0,0),0);=0A get_bit =0A--= -------=0A 0=0A(1 row)=0Apostgres=3D#
#######= #########################


And I do a che= ck about if anything else related bytea has this issue, several=0Acodes ha= ve the same issue:
=0A1. byteaout()=0AWhen formatting bytea as an escape, the = 'len' variable should be int64, or
it may use an overflowing number.=0A2. esc_= enc_len()=0ASame as above, the 'len' variable should be int64, and the re= turn type
should change as int64.=0ADue to esc_enc_len() has same call struct = with pg_base64_enc_len() and=0Ahex_enc_len(), so I want to change the retu= rn value of the two function.=0AAnd the opposite function esc_dec_len() se= em nothing wrong.=0A3. binary_encode() and binary_decode()=0AHere use an '= int32 resultlen' to accept an 'unsigned int' function return,=0Awhich seem= unfortable.
=0AI fix all mentioned above, and patch attachments.
=
How do you think= about that?



=0A
Highgo Software (Canada/China/Pakistan)
URL : <= /span>www.highgo.ca
EMAIL: mailto:movead(dot)li(at)highgo(dot)ca
<= /span>
=0A ------=_002_NextPart252168157356_=------ ------=_001_NextPart534303620088_=---- Content-Type: application/octet-stream; name="long_bytea_string_bug_fix.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="long_bytea_string_bug_fix.patch" ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9lbmNvZGUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9lbmNvZGUuYwppbmRleCBiOGQ5ZWM3ZTAwLi44YWUyYmQ1OGEzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZW5jb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2VuY29kZS5jCkBAIC0yMCw3ICsyMCw3IEBACiAKIHN0cnVjdCBwZ19lbmNvZGluZwog ewotCXVuc2lnbmVkCSgqZW5jb2RlX2xlbikgKGNvbnN0IGNoYXIgKmRhdGEsIHVuc2lnbmVkIGRs ZW4pOworCVNpemUJCSgqZW5jb2RlX2xlbikgKGNvbnN0IGNoYXIgKmRhdGEsIHVuc2lnbmVkIGRs ZW4pOwogCXVuc2lnbmVkCSgqZGVjb2RlX2xlbikgKGNvbnN0IGNoYXIgKmRhdGEsIHVuc2lnbmVk IGRsZW4pOwogCXVuc2lnbmVkCSgqZW5jb2RlKSAoY29uc3QgY2hhciAqZGF0YSwgdW5zaWduZWQg ZGxlbiwgY2hhciAqcmVzKTsKIAl1bnNpZ25lZAkoKmRlY29kZSkgKGNvbnN0IGNoYXIgKmRhdGEs IHVuc2lnbmVkIGRsZW4sIGNoYXIgKnJlcyk7CkBAIC00MCw4ICs0MCw4IEBAIGJpbmFyeV9lbmNv ZGUoUEdfRlVOQ1RJT05fQVJHUykKIAl0ZXh0CSAgICpyZXN1bHQ7CiAJY2hhcgkgICAqbmFtZWJ1 ZjsKIAlpbnQJCQlkYXRhbGVuLAotCQkJCXJlc3VsdGxlbiwKIAkJCQlyZXM7CisJU2l6ZQkJcmVz dWx0bGVuOwogCWNvbnN0IHN0cnVjdCBwZ19lbmNvZGluZyAqZW5jOwogCiAJZGF0YWxlbiA9IFZB UlNJWkVfQU5ZX0VYSERSKGRhdGEpOwpAQCAtNjAsNyArNjAsNyBAQCBiaW5hcnlfZW5jb2RlKFBH X0ZVTkNUSU9OX0FSR1MpCiAJcmVzID0gZW5jLT5lbmNvZGUoVkFSREFUQV9BTlkoZGF0YSksIGRh dGFsZW4sIFZBUkRBVEEocmVzdWx0KSk7CiAKIAkvKiBNYWtlIHRoaXMgRkFUQUwgJ2NhdXNlIHdl J3ZlIHRyb2RkZW4gb24gbWVtb3J5IC4uLiAqLwotCWlmIChyZXMgPiByZXN1bHRsZW4pCisJaWYg KChTaXplKXJlcyA+IHJlc3VsdGxlbikKIAkJZWxvZyhGQVRBTCwgIm92ZXJmbG93IC0gZW5jb2Rl IGVzdGltYXRlIHRvbyBzbWFsbCIpOwogCiAJU0VUX1ZBUlNJWkUocmVzdWx0LCBWQVJIRFJTWiAr IHJlcyk7CkBAIC03Niw4ICs3Niw4IEBAIGJpbmFyeV9kZWNvZGUoUEdfRlVOQ1RJT05fQVJHUykK IAlieXRlYQkgICAqcmVzdWx0OwogCWNoYXIJICAgKm5hbWVidWY7CiAJaW50CQkJZGF0YWxlbiwK LQkJCQlyZXN1bHRsZW4sCiAJCQkJcmVzOworCXVuc2lnbmVkCXJlc3VsdGxlbjsKIAljb25zdCBz dHJ1Y3QgcGdfZW5jb2RpbmcgKmVuYzsKIAogCWRhdGFsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihk YXRhKTsKQEAgLTE4NCwxMCArMTg0LDEwIEBAIGhleF9kZWNvZGUoY29uc3QgY2hhciAqc3JjLCB1 bnNpZ25lZCBsZW4sIGNoYXIgKmRzdCkKIAlyZXR1cm4gcCAtIGRzdDsKIH0KIAotc3RhdGljIHVu c2lnbmVkCitzdGF0aWMgU2l6ZQogaGV4X2VuY19sZW4oY29uc3QgY2hhciAqc3JjLCB1bnNpZ25l ZCBzcmNsZW4pCiB7Ci0JcmV0dXJuIHNyY2xlbiA8PCAxOworCXJldHVybiAoU2l6ZSkoc3JjbGVu IDw8IDEpOwogfQogCiBzdGF0aWMgdW5zaWduZWQKQEAgLTMzMSwxMSArMzMxLDExIEBAIHBnX2Jh c2U2NF9kZWNvZGUoY29uc3QgY2hhciAqc3JjLCB1bnNpZ25lZCBsZW4sIGNoYXIgKmRzdCkKIH0K IAogCi1zdGF0aWMgdW5zaWduZWQKK3N0YXRpYyBTaXplCiBwZ19iYXNlNjRfZW5jX2xlbihjb25z dCBjaGFyICpzcmMsIHVuc2lnbmVkIHNyY2xlbikKIHsKIAkvKiAzIGJ5dGVzIHdpbGwgYmUgY29u dmVydGVkIHRvIDQsIGxpbmVmZWVkIGFmdGVyIDc2IGNoYXJzICovCi0JcmV0dXJuIChzcmNsZW4g KyAyKSAqIDQgLyAzICsgc3JjbGVuIC8gKDc2ICogMyAvIDQpOworCXJldHVybiAoU2l6ZSkoKHNy Y2xlbiArIDIpICogNCAvIDMgKyBzcmNsZW4gLyAoNzYgKiAzIC8gNCkpOwogfQogCiBzdGF0aWMg dW5zaWduZWQKQEAgLTQ0OCwxMSArNDQ4LDExIEBAIGVzY19kZWNvZGUoY29uc3QgY2hhciAqc3Jj LCB1bnNpZ25lZCBzcmNsZW4sIGNoYXIgKmRzdCkKIAlyZXR1cm4gbGVuOwogfQogCi1zdGF0aWMg dW5zaWduZWQKK3N0YXRpYyBTaXplCiBlc2NfZW5jX2xlbihjb25zdCBjaGFyICpzcmMsIHVuc2ln bmVkIHNyY2xlbikKIHsKIAljb25zdCBjaGFyICplbmQgPSBzcmMgKyBzcmNsZW47Ci0JaW50CQkJ bGVuID0gMDsKKwlTaXplCQlsZW4gPSAwOwogCiAJd2hpbGUgKHNyYyA8IGVuZCkKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3ZhcmxlbmEuYwppbmRleCA5MDdiNWFiN2IwLi41ZmU3MTI1NjI5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC92YXJsZW5hLmMKQEAgLTM4OCw3ICszODgsNyBAQCBieXRlYW91dChQR19GVU5DVElPTl9B UkdTKQogCXsKIAkJLyogUHJpbnQgdHJhZGl0aW9uYWwgZXNjYXBlZCBmb3JtYXQgKi8KIAkJY2hh cgkgICAqdnA7Ci0JCWludAkJCWxlbjsKKwkJU2l6ZQkJbGVuOwogCQlpbnQJCQlpOwogCiAJCWxl biA9IDE7CQkJCS8qIGVtcHR5IHN0cmluZyBoYXMgMSBjaGFyICovCkBAIC0zNDU4LDE1ICszNDU4 LDE1IEBAIGJ5dGVhR2V0Qml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW50MzIJCW4gPSBQR19HRVRB UkdfSU5UMzIoMSk7CiAJaW50CQkJYnl0ZU5vLAogCQkJCWJpdE5vOwotCWludAkJCWxlbjsKKwlT aXplCQlsZW47CiAJaW50CQkJYnl0ZTsKIAotCWxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKHYpOwor CWxlbiA9IChTaXplKShWQVJTSVpFX0FOWV9FWEhEUih2KSk7CiAKLQlpZiAobiA8IDAgfHwgbiA+ PSBsZW4gKiA4KQorCWlmIChuIDwgMCB8fCAoU2l6ZSluID49IGxlbiAqIDgpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9BUlJBWV9TVUJTQ1JJUFRfRVJST1IpLAotCQkJ CSBlcnJtc2coImluZGV4ICVkIG91dCBvZiB2YWxpZCByYW5nZSwgMC4uJWQiLAorCQkJCSBlcnJt c2coImluZGV4ICVkIG91dCBvZiB2YWxpZCByYW5nZSwgMC4uJWxkIiwKIAkJCQkJCW4sIGxlbiAq IDggLSAxKSkpOwogCiAJYnl0ZU5vID0gbiAvIDg7CkBAIC0zNTI2LDE4ICszNTI2LDE4IEBAIGJ5 dGVhU2V0Qml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJYnl0ZWEJICAgKnJlcyA9IFBHX0dFVEFSR19C WVRFQV9QX0NPUFkoMCk7CiAJaW50MzIJCW4gPSBQR19HRVRBUkdfSU5UMzIoMSk7CiAJaW50MzIJ CW5ld0JpdCA9IFBHX0dFVEFSR19JTlQzMigyKTsKLQlpbnQJCQlsZW47CisJU2l6ZQkJbGVuOwog CWludAkJCW9sZEJ5dGUsCiAJCQkJbmV3Qnl0ZTsKIAlpbnQJCQlieXRlTm8sCiAJCQkJYml0Tm87 CiAKLQlsZW4gPSBWQVJTSVpFKHJlcykgLSBWQVJIRFJTWjsKKwlsZW4gPSAoU2l6ZSkoVkFSU0la RShyZXMpIC0gVkFSSERSU1opOwogCi0JaWYgKG4gPCAwIHx8IG4gPj0gbGVuICogOCkKKwlpZiAo biA8IDAgfHwgKFNpemUpbiA+PSBsZW4gKiA4KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJj b2RlKEVSUkNPREVfQVJSQVlfU1VCU0NSSVBUX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJpbmRleCAl ZCBvdXQgb2YgdmFsaWQgcmFuZ2UsIDAuLiVkIiwKKwkJCQkgZXJybXNnKCJpbmRleCAlZCBvdXQg b2YgdmFsaWQgcmFuZ2UsIDAuLiVsZCIsCiAJCQkJCQluLCBsZW4gKiA4IC0gMSkpKTsKIAogCWJ5 dGVObyA9IG4gLyA4Owo= ------=_001_NextPart534303620088_=------