Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vfDe5-005QaI-1q for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Jan 2026 08:51:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vfDe1-00Doh4-2S for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Jan 2026 08:51:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vfDe1-00Dogo-0D for pgsql-hackers@lists.postgresql.org; Mon, 12 Jan 2026 08:51:26 +0000 Received: from mail-qt1-x82e.google.com ([2607:f8b0:4864:20::82e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vfDdz-005h5n-2t for pgsql-hackers@postgresql.org; Mon, 12 Jan 2026 08:51:24 +0000 Received: by mail-qt1-x82e.google.com with SMTP id d75a77b69052e-4f34c5f2f98so68839621cf.1 for ; Mon, 12 Jan 2026 00:51:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768207883; x=1768812683; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=XpuhsBvbeOJNnzBCU3UKpn09aSNhJEIVmizw60GUyCw=; b=OZoplCrtPJHRq/RLuQtTuKzZKqe2Xe7jILOk7tPh2YVLBQhPMr8iUTbxC1D+xleo3N OP7M2CpM/07f076UjJNK6DFMlln7TVhGggk5XvSKRWZv0ZLrCQLclSf+FvJb+eSIbGUT Muk+GbNZYyQcCXqIAaZVFRjb+n7WZ7WLBRdy4aoCQBPryq1Gr0m9Db7wa+3ReI8W3CSC l7waUxeSw6rxJ9HhvOKohSudKaWF2lv8Pb+ghKv50Rymq10qYlB+5RGIB7bwRYyrxml1 6jZleKkRwNnmz8JTtgDXiq2XNvbaktdEFbBpXz75wTpEfUuY9yi3VFyFQCvpJxXTymZt s/yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768207883; x=1768812683; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=XpuhsBvbeOJNnzBCU3UKpn09aSNhJEIVmizw60GUyCw=; b=ot5jS7mVzxf9evr5KQqB/VqKlHHk9hkViX0ao2yOO7UIvhd0XZvvztgKvNiMQQNwKH zHlSftsxYetmTSoE9W1uwyFyUY3u5OIYMxcb4d8HYkeBeCXlpi7XcdFPzxMrYk/kwPSG z29DrJaj3V6bm1ftEAVctxQM4FqHu7fd0Jd6jp5UPRCl5t6hC3CLhC1L+deP+7adu8CT erv3snid8uDjdIk4Vb+uTKY6dByd0fg4RnahZyQuEbgJqBZjjuO1BuhftnyhVHiAHsFM sQ0z3WAIrssH+pW8NrdI7xL8cDYiy5eq6KKPTHNGKDUcneaxQwZrsjhuIfA5GTjZTMeO +JrA== X-Forwarded-Encrypted: i=1; AJvYcCXX8cTMsNToFdPjDcTAiYmiUxi/NRuFddF8LSZJ/VYwsVaZIu6oAelh8GSrX2/7mKwS6r3nW6qsvoJXzrYz@postgresql.org X-Gm-Message-State: AOJu0YxypactwunUdTpwFEv+Na3sD8T/yCAYcJFXoXh/6+PwiHd2hr6H zTKfXmR/EFRysyTL+4Xds+o83z7nu1wWSBRPEVZIk6Fvu2+zcxcNJ3tq3Ugv5HRbLy2beYUDuIZ riL5EPXVtlcL8ZD8gBIZkofXp6+lQr7k= X-Gm-Gg: AY/fxX7tX2/Kl9rap2KFx55TyfYsrXByJcv1jYLvQMM4D3sPqkFooeO2hzsb70i+4uZ QdHZuhdpayNoO4xP21JiucKxdOzNFGFODdpVMqEj2FILmj1lTRwxkuiJhM9o90QckV948skO4fX vpXahp6YPZZNSAhUf5/+j3U7cH0U2WzpwhmOjAKYYchZQu31MA6/wwb4SIW6eGTtMcWnzlUwE4r WW5WvwKjK6BirGv5C0GAvF52BZ/CGqkIYTfA+j2rtdFAZFoK8ipVBNM6fZbNt+iOvUOeiNs4RJp FRqs6qbjPfxGPtResT7mz6QVS+SPgZt5gGOKwW6eMjl7HAOnAh0j1TA= X-Google-Smtp-Source: AGHT+IEFvjXf5FHLLbM12uWxuLYMFK3iCkR2Rn0xfRFbpBss4U1FL5NjEWptn38Kk8B9n7RFMqq6sl/9jsurtlm0O7E= X-Received: by 2002:a05:622a:283:b0:4ff:b2cb:a44c with SMTP id d75a77b69052e-4ffb4a7006cmr242569941cf.83.1768207882738; Mon, 12 Jan 2026 00:51:22 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Kirill Reshke Date: Mon, 12 Jan 2026 13:51:10 +0500 X-Gm-Features: AZwV_QjVghfF5xhe3MDQlpT75VoCXKSXsKe6lHSEJvEz5K4dOsHU1HhnoA5B7T8 Message-ID: Subject: Re: Use correct macro for accessing offset numbers. To: li carol Cc: Michael Paquier , Roman Khapov , pgsql-hackers , zengman Content-Type: multipart/mixed; boundary="000000000000bd744706482cfa5e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bd744706482cfa5e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 12 Jan 2026 at 04:23, Michael Paquier wrote: > > On Sun, Jan 11, 2026 at 04:58:39PM +0500, Kirill Reshke wrote: > > Maybe, I have stopped some more cases, in v2-0001 > > Right. It's true that we could be more consistent for all these based > on their base type, some of them, particularly in the GIN code now, > caring about using the correct macro. It may be a good occasion to > double-check the whole tree for similar holes based on unsigned types. > -- > Michael Ok > Hi Kirill, Roman, and Michael, > While double-checking the tree for similar holes as Michael suggested, I = noticed a couple more inconsistencies in contrib/pageinspect/ginfuncs.c whe= re we are using signed macros for unsigned types. > Specifically, in gin_page_opaque_info, we use Int32GetDatum for maxoff: > > values[1] =3D Int32GetDatum(opaq->maxoff); > > Since maxoff is of type OffsetNumber (uint16), this seems to be the exact= same pattern Kirill is addressing in other parts of the GIN code. Although= it is widened to int32 here, for the sake of consistency, it should probab= ly be using a 16-bit or unsigned macro. > > Similarly, in gin_metapage_info, tailFreeSize (which is defined as uint32= in GinMetaPageData) is also converted using Int32GetDatum: > > values[2] =3D Int32GetDatum(metadata->tailFreeSize); > > It might be better to include these cleanups in the next version of the p= atch to ensure all pageinspect GIN functions follow the same standard. Thank you, I have included your findings in v3. On Mon, 12 Jan 2026 at 11:53, zengman wrote: > > Hi, > > I=E2=80=99ve also seen such cases in the kernel code, and I=E2=80=99m won= dering if this should be added to the patch here? > ``` > postgres@zxm-VMware-Virtual-Platform:~/code/postgres$ git diff > diff --git a/src/backend/utils/adt/lockfuncs.c b/src/backend/utils/adt/lo= ckfuncs.c > index bcbc226125c..9dadd6da672 100644 > --- a/src/backend/utils/adt/lockfuncs.c > +++ b/src/backend/utils/adt/lockfuncs.c > @@ -329,7 +329,7 @@ pg_lock_status(PG_FUNCTION_ARGS) > values[1] =3D ObjectIdGetDatum(instance->= locktag.locktag_field1); > values[8] =3D ObjectIdGetDatum(instance->= locktag.locktag_field2); > values[6] =3D ObjectIdGetDatum(instance->= locktag.locktag_field3); > - values[9] =3D Int16GetDatum(instance->loc= ktag.locktag_field4); > + values[9] =3D UInt16GetDatum(instance->lo= cktag.locktag_field4); > nulls[2] =3D true; > nulls[3] =3D true; > nulls[4] =3D true; > @@ -343,7 +343,7 @@ pg_lock_status(PG_FUNCTION_ARGS) > values[1] =3D ObjectIdGetDatum(instance->= locktag.locktag_field1); > values[7] =3D ObjectIdGetDatum(instance->= locktag.locktag_field2); > values[8] =3D ObjectIdGetDatum(instance->= locktag.locktag_field3); > - values[9] =3D Int16GetDatum(instance->loc= ktag.locktag_field4); > + values[9] =3D UInt16GetDatum(instance->lo= cktag.locktag_field4); > nulls[2] =3D true; > nulls[3] =3D true; > nulls[4] =3D true; Thank you, I have included your findings in v3. PFA v3 with fixes for signed usage across the tree, with my new findings and suggestions from thread --=20 Best regards, Kirill Reshke --000000000000bd744706482cfa5e Content-Type: application/octet-stream; name="v3-0001-Use-correct-macro-for-accessing-unsigned-numbers.patch" Content-Disposition: attachment; filename="v3-0001-Use-correct-macro-for-accessing-unsigned-numbers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkax87380 RnJvbSA5YzViMzdkOWY0YjdhMzU1ZWQ1Nzk3OWMzZmNhYzAyOTY1MzE4MTQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiByZXNoa2UgPHJlc2hrZUBkb3VibGUuY2xvdWQ+CkRhdGU6IFN1 biwgMTEgSmFuIDIwMjYgMTE6MTc6MTMgKzAwMDAKU3ViamVjdDogW1BBVENIIHYzXSBVc2UgY29y cmVjdCBtYWNybyBmb3IgYWNjZXNzaW5nIHVuc2lnbmVkIG51bWJlcnMuCgpUaGlzIHBhdGNoIGNs ZWFudXBzIHVzYWdlIG9mIEludDE2R2V0RGF0dW0gdnMgVUludDE2R2V0RGF0dW0sCmVuZm9yY2lu ZyBjb3JyZWN0IG1hcmNvIHVzYWdlIGluIG51bWJlciBvZiBwbGFjZXMuClBhdGNoIGluY2x1ZGVz IHVzaW5nIFVJbnQxNkdldERhdHVtIGZvciBPZmZzZXROdW1iZXJzICh3aGljaCBhcmUgdWluMTYp CmFuZCBzYW1lIGZvciBzdHJhdGVneSBudW1iZXJzLiBTb21lIHBhcnRzIG9mIGNvbW1pdHMgYXJl IHN1Z2dlc3RlZApieSBoYWNrZXJzIGluIHRocmVhZC4KClJldmlld2VkLWJ5OiBSb21hbiBLaGFw b3YgPHJraGFwb3ZAeWFuZGV4LXRlYW0ucnU+ClN1Z2dlc3RlZC1ieTogTWljaGFlbCBQYXF1aWVy IDxtaWNoYWVsQHBhcXVpZXIueHl6PgpTdWdnZXN0ZWQtYnk6IGxpIGNhcm9sIDxjYXJvbC5saTIw MjVAb3V0bG9vay5jb20+ClN1Z2dlc3RlZC1ieTogemVuZ21hbiA8emVuZ21hbkBoYWxvZGJ0ZWNo LmNvbT4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FMZFNTUGlkdEM3ajNNd2hr cVJqMEsyaHlwMzZ6dG5ualN0NnF6R3hRdGllUFIxZHp3QG1haWwuZ21haWwuY29tCi0tLQogY29u dHJpYi9wYWdlaW5zcGVjdC9idHJlZWZ1bmNzLmMgICAgICAgICAgICAgIHwgMiArLQogY29udHJp Yi9wYWdlaW5zcGVjdC9naW5mdW5jcy5jICAgICAgICAgICAgICAgIHwgNCArKy0tCiBjb250cmli L3BhZ2VpbnNwZWN0L2dpc3RmdW5jcy5jICAgICAgICAgICAgICAgfCA0ICsrLS0KIGNvbnRyaWIv cGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYyB8IDIgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW5faW5jbHVzaW9uLmMgICAgICB8IDIgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW5fbWlubWF4LmMgICAgICAgICB8IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW5fbWlubWF4X211bHRpLmMgICB8IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3RnZXQuYyAgICAgICAgICAgICB8IDQgKystLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9h aW8vYWlvX2Z1bmNzLmMgICAgICAgICAgIHwgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xv Y2tmdW5jcy5jICAgICAgICAgICAgIHwgNCArKy0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYyAgICAgICAgICAgfCAyICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRp b25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0 L2J0cmVlZnVuY3MuYyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVmdW5jcy5jCmluZGV4IDYy YzkwNWM2ZTdjLi4wNTg1YjdjZWU0MCAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9i dHJlZWZ1bmNzLmMKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9idHJlZWZ1bmNzLmMKQEAgLTUw Nyw3ICs1MDcsNyBAQCBidF9wYWdlX3ByaW50X3R1cGxlcyh1YV9wYWdlX2l0ZW1zICp1YXJncykK IAogCWogPSAwOwogCW1lbXNldChudWxscywgMCwgc2l6ZW9mKG51bGxzKSk7Ci0JdmFsdWVzW2or K10gPSBJbnQxNkdldERhdHVtKG9mZnNldCk7CisJdmFsdWVzW2orK10gPSBVSW50MTZHZXREYXR1 bShvZmZzZXQpOwogCXZhbHVlc1tqKytdID0gSXRlbVBvaW50ZXJHZXREYXR1bSgmaXR1cC0+dF90 aWQpOwogCXZhbHVlc1tqKytdID0gSW50MzJHZXREYXR1bSgoaW50KSBJbmRleFR1cGxlU2l6ZShp dHVwKSk7CiAJdmFsdWVzW2orK10gPSBCb29sR2V0RGF0dW0oSW5kZXhUdXBsZUhhc051bGxzKGl0 dXApKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2luZnVuY3MuYyBiL2NvbnRy aWIvcGFnZWluc3BlY3QvZ2luZnVuY3MuYwppbmRleCBlYmNjMmIzZGI1Yy4uNDgyNWFkM2FlY2Ug MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2luZnVuY3MuYworKysgYi9jb250cmli L3BhZ2VpbnNwZWN0L2dpbmZ1bmNzLmMKQEAgLTczLDcgKzczLDcgQEAgZ2luX21ldGFwYWdlX2lu Zm8oUEdfRlVOQ1RJT05fQVJHUykKIAogCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0obWV0YWRh dGEtPmhlYWQpOwogCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0obWV0YWRhdGEtPnRhaWwpOwot CXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0obWV0YWRhdGEtPnRhaWxGcmVlU2l6ZSk7CisJdmFs dWVzWzJdID0gVUludDMyR2V0RGF0dW0obWV0YWRhdGEtPnRhaWxGcmVlU2l6ZSk7CiAJdmFsdWVz WzNdID0gSW50NjRHZXREYXR1bShtZXRhZGF0YS0+blBlbmRpbmdQYWdlcyk7CiAJdmFsdWVzWzRd ID0gSW50NjRHZXREYXR1bShtZXRhZGF0YS0+blBlbmRpbmdIZWFwVHVwbGVzKTsKIApAQCAtMTU5 LDcgKzE1OSw3IEBAIGdpbl9wYWdlX29wYXF1ZV9pbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJbWVt c2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKIAogCXZhbHVlc1swXSA9IEludDY0R2V0RGF0 dW0ob3BhcS0+cmlnaHRsaW5rKTsKLQl2YWx1ZXNbMV0gPSBJbnQzMkdldERhdHVtKG9wYXEtPm1h eG9mZik7CisJdmFsdWVzWzFdID0gVUludDE2R2V0RGF0dW0ob3BhcS0+bWF4b2ZmKTsKIAl2YWx1 ZXNbMl0gPSBQb2ludGVyR2V0RGF0dW0oY29uc3RydWN0X2FycmF5X2J1aWx0aW4oZmxhZ3MsIG5m bGFncywgVEVYVE9JRCkpOwogCiAJLyogQnVpbGQgYW5kIHJldHVybiB0aGUgcmVzdWx0IHR1cGxl LiAqLwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9naXN0ZnVuY3MuYyBiL2NvbnRy aWIvcGFnZWluc3BlY3QvZ2lzdGZ1bmNzLmMKaW5kZXggNjBhNGIyNDAzMDIuLjliN2UzY2VjODgy IDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L2dpc3RmdW5jcy5jCisrKyBiL2NvbnRy aWIvcGFnZWluc3BlY3QvZ2lzdGZ1bmNzLmMKQEAgLTE3NSw3ICsxNzUsNyBAQCBnaXN0X3BhZ2Vf aXRlbXNfYnl0ZWEoUEdfRlVOQ1RJT05fQVJHUykKIAogCQltZW1zZXQobnVsbHMsIDAsIHNpemVv ZihudWxscykpOwogCi0JCXZhbHVlc1swXSA9IEludDE2R2V0RGF0dW0ob2Zmc2V0KTsKKwkJdmFs dWVzWzBdID0gVUludDE2R2V0RGF0dW0ob2Zmc2V0KTsKIAkJdmFsdWVzWzFdID0gSXRlbVBvaW50 ZXJHZXREYXR1bSgmaXR1cC0+dF90aWQpOwogCQl2YWx1ZXNbMl0gPSBJbnQzMkdldERhdHVtKChp bnQpIEluZGV4VHVwbGVTaXplKGl0dXApKTsKIApAQCAtMjgyLDcgKzI4Miw3IEBAIGdpc3RfcGFn ZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCiAJCW1lbXNldChudWxscywgMCwgc2l6ZW9mKG51 bGxzKSk7CiAKLQkJdmFsdWVzWzBdID0gSW50MTZHZXREYXR1bShvZmZzZXQpOworCQl2YWx1ZXNb MF0gPSBVSW50MTZHZXREYXR1bShvZmZzZXQpOwogCQl2YWx1ZXNbMV0gPSBJdGVtUG9pbnRlckdl dERhdHVtKCZpdHVwLT50X3RpZCk7CiAJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0oKGludCkg SW5kZXhUdXBsZVNpemUoaXR1cCkpOwogCQl2YWx1ZXNbM10gPSBCb29sR2V0RGF0dW0oSXRlbUlk SXNEZWFkKGlkKSk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZl cmNhY2hlX3BhZ2VzLmMgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3Bh Z2VzLmMKaW5kZXggMGM1OGU0YjI2NWMuLmI2ODJkY2E2NThiIDEwMDY0NAotLS0gYS9jb250cmli L3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMKKysrIGIvY29udHJpYi9wZ19i dWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jCkBAIC0yNzYsNyArMjc2LDcgQEAgcGdf YnVmZmVyY2FjaGVfcGFnZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCW51bGxzWzVdID0gZmFsc2U7 CiAJCQl2YWx1ZXNbNl0gPSBCb29sR2V0RGF0dW0oZmN0eC0+cmVjb3JkW2ldLmlzZGlydHkpOwog CQkJbnVsbHNbNl0gPSBmYWxzZTsKLQkJCXZhbHVlc1s3XSA9IEludDE2R2V0RGF0dW0oZmN0eC0+ cmVjb3JkW2ldLnVzYWdlY291bnQpOworCQkJdmFsdWVzWzddID0gVUludDE2R2V0RGF0dW0oZmN0 eC0+cmVjb3JkW2ldLnVzYWdlY291bnQpOwogCQkJbnVsbHNbN10gPSBmYWxzZTsKIAkJCS8qIHVu dXNlZCBmb3IgdjEuMCBjYWxsZXJzLCBidXQgdGhlIGFycmF5IGlzIGFsd2F5cyBsb25nIGVub3Vn aCAqLwogCQkJdmFsdWVzWzhdID0gSW50MzJHZXREYXR1bShmY3R4LT5yZWNvcmRbaV0ucGlubmlu Z19iYWNrZW5kcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2lu Y2x1c2lvbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9pbmNsdXNpb24uYwppbmRl eCAwODg5MGEzZDAwOS4uNWEyMDU4ZDlhYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW5faW5jbHVzaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bl9pbmNsdXNpb24uYwpAQCAtNjQxLDcgKzY0MSw3IEBAIGluY2x1c2lvbl9nZXRfc3RyYXRlZ3lf cHJvY2luZm8oQnJpbkRlc2MgKmJkZXNjLCB1aW50MTYgYXR0bm8sIE9pZCBzdWJ0eXBlLAogCQl0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlNChBTU9QU1RSQVRFR1ksIE9iamVjdElkR2V0RGF0dW0ob3Bm YW1pbHkpLAogCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKGF0dHItPmF0dHR5cGlkKSwKIAkJCQkJ CQkJT2JqZWN0SWRHZXREYXR1bShzdWJ0eXBlKSwKLQkJCQkJCQkJSW50MTZHZXREYXR1bShzdHJh dGVneW51bSkpOworCQkJCQkJCQlVSW50MTZHZXREYXR1bShzdHJhdGVneW51bSkpOwogCiAJCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCiAJCQllbG9nKEVSUk9SLCAibWlzc2luZyBvcGVy YXRvciAlZCgldSwldSkgaW4gb3BmYW1pbHkgJXUiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5f bWlubWF4LmMKaW5kZXggOWQ0ZTQ3YjRkYzAuLjczMjAxMDI5MzcxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW5fbWlubWF4LmMKQEAgLTI5NCw3ICsyOTQsNyBAQCBtaW5tYXhfZ2V0X3N0cmF0 ZWd5X3Byb2NpbmZvKEJyaW5EZXNjICpiZGVzYywgdWludDE2IGF0dG5vLCBPaWQgc3VidHlwZSwK IAkJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTQoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdldERhdHVt KG9wZmFtaWx5KSwKIAkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShhdHRyLT5hdHR0eXBpZCksCiAJ CQkJCQkJCU9iamVjdElkR2V0RGF0dW0oc3VidHlwZSksCi0JCQkJCQkJCUludDE2R2V0RGF0dW0o c3RyYXRlZ3ludW0pKTsKKwkJCQkJCQkJVUludDE2R2V0RGF0dW0oc3RyYXRlZ3ludW0pKTsKIAog CQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQogCQkJZWxvZyhFUlJPUiwgIm1pc3Npbmcg b3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFtaWx5ICV1IiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4X211bHRpLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluX21pbm1heF9tdWx0aS5jCmluZGV4IDZiODZiMWZkODg5Li42ODhjYTlmMmRiYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5jCkBAIC0yOTMy LDcgKzI5MzIsNyBAQCBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKEJyaW5EZXNj ICpiZGVzYywgdWludDE2IGF0dG5vLCBPaWQgc3VidHlwZSwKIAkJdHVwbGUgPSBTZWFyY2hTeXND YWNoZTQoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5KSwKIAkJCQkJCQkJ T2JqZWN0SWRHZXREYXR1bShhdHRyLT5hdHR0eXBpZCksCiAJCQkJCQkJCU9iamVjdElkR2V0RGF0 dW0oc3VidHlwZSksCi0JCQkJCQkJCUludDE2R2V0RGF0dW0oc3RyYXRlZ3ludW0pKTsKKwkJCQkJ CQkJVUludDE2R2V0RGF0dW0oc3RyYXRlZ3ludW0pKTsKIAkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cGxlKSkKIAkJCWVsb2coRVJST1IsICJtaXNzaW5nIG9wZXJhdG9yICVkKCV1LCV1KSBpbiBv cGZhbWlseSAldSIsCiAJCQkJIHN0cmF0ZWd5bnVtLCBhdHRyLT5hdHR0eXBpZCwgc3VidHlwZSwg b3BmYW1pbHkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGdldC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGdldC5jCmluZGV4IDZkMDVhNWZkYzM0Li5k NmRlOGU5NTRlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGdldC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYwpAQCAtMjIyLDcgKzIyMiw3 IEBAIGdpc3RpbmRleF9rZXl0ZXN0KEluZGV4U2NhbkRlc2Mgc2NhbiwKIAkJCQkJCQkJCSBrZXkt PnNrX2NvbGxhdGlvbiwKIAkJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oJmRlKSwKIAkJCQkJCQkJ CSBrZXktPnNrX2FyZ3VtZW50LAotCQkJCQkJCQkJIEludDE2R2V0RGF0dW0oa2V5LT5za19zdHJh dGVneSksCisJCQkJCQkJCQkgVUludDE2R2V0RGF0dW0oa2V5LT5za19zdHJhdGVneSksCiAJCQkJ CQkJCQkgT2JqZWN0SWRHZXREYXR1bShrZXktPnNrX3N1YnR5cGUpLAogCQkJCQkJCQkJIFBvaW50 ZXJHZXREYXR1bSgmcmVjaGVjaykpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgZ2lzdGluZGV4X2tl eXRlc3QoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJIGtleS0+c2tfY29sbGF0aW9uLAog CQkJCQkJCQkJIFBvaW50ZXJHZXREYXR1bSgmZGUpLAogCQkJCQkJCQkJIGtleS0+c2tfYXJndW1l bnQsCi0JCQkJCQkJCQkgSW50MTZHZXREYXR1bShrZXktPnNrX3N0cmF0ZWd5KSwKKwkJCQkJCQkJ CSBVSW50MTZHZXREYXR1bShrZXktPnNrX3N0cmF0ZWd5KSwKIAkJCQkJCQkJCSBPYmplY3RJZEdl dERhdHVtKGtleS0+c2tfc3VidHlwZSksCiAJCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKCZyZWNo ZWNrKSk7CiAJCQkqcmVjaGVja19kaXN0YW5jZXNfcCB8PSByZWNoZWNrOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvX2Z1bmNzLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2Fpby9haW9fZnVuY3MuYwppbmRleCA4OTk3Yzc2MjA2Mi4uOTgwZTk2YzQ1ODIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpb19mdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYWlvL2Fpb19mdW5jcy5jCkBAIC0xOTcsNyArMTk3LDcgQEAgcmV0cnk6CiAJCXZh bHVlc1s3XSA9IENTdHJpbmdHZXRUZXh0RGF0dW0ocGdhaW9faW9fZ2V0X3RhcmdldF9uYW1lKCZp b2hfY29weSkpOwogCiAJCS8qIGNvbHVtbjogbGVuZ3RoIG9mIElPJ3MgZGF0YSBhcnJheSAqLwot CQl2YWx1ZXNbOF0gPSBJbnQxNkdldERhdHVtKGlvaF9jb3B5LmhhbmRsZV9kYXRhX2xlbik7CisJ CXZhbHVlc1s4XSA9IFVJbnQxNkdldERhdHVtKGlvaF9jb3B5LmhhbmRsZV9kYXRhX2xlbik7CiAK IAkJLyogY29sdW1uOiByYXcgcmVzdWx0IChpLmUuIHNvbWUgZm9ybSBvZiBzeXNjYWxsIHJldHVy biB2YWx1ZSkgKi8KIAkJaWYgKHN0YXJ0X3N0YXRlID09IFBHQUlPX0hTX0NPTVBMRVRFRF9JTwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCmluZGV4IGJjYmMyMjYxMjVjLi45ZGFkZDZkYTY3MiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwpAQCAtMzI5LDcgKzMyOSw3IEBAIHBnX2xvY2tf c3RhdHVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJdmFsdWVzWzFdID0gT2JqZWN0SWRHZXREYXR1 bShpbnN0YW5jZS0+bG9ja3RhZy5sb2NrdGFnX2ZpZWxkMSk7CiAJCQkJdmFsdWVzWzhdID0gT2Jq ZWN0SWRHZXREYXR1bShpbnN0YW5jZS0+bG9ja3RhZy5sb2NrdGFnX2ZpZWxkMik7CiAJCQkJdmFs dWVzWzZdID0gT2JqZWN0SWRHZXREYXR1bShpbnN0YW5jZS0+bG9ja3RhZy5sb2NrdGFnX2ZpZWxk Myk7Ci0JCQkJdmFsdWVzWzldID0gSW50MTZHZXREYXR1bShpbnN0YW5jZS0+bG9ja3RhZy5sb2Nr dGFnX2ZpZWxkNCk7CisJCQkJdmFsdWVzWzldID0gVUludDE2R2V0RGF0dW0oaW5zdGFuY2UtPmxv Y2t0YWcubG9ja3RhZ19maWVsZDQpOwogCQkJCW51bGxzWzJdID0gdHJ1ZTsKIAkJCQludWxsc1sz XSA9IHRydWU7CiAJCQkJbnVsbHNbNF0gPSB0cnVlOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHBnX2xv Y2tfc3RhdHVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJdmFsdWVzWzFdID0gT2JqZWN0SWRHZXRE YXR1bShpbnN0YW5jZS0+bG9ja3RhZy5sb2NrdGFnX2ZpZWxkMSk7CiAJCQkJdmFsdWVzWzddID0g T2JqZWN0SWRHZXREYXR1bShpbnN0YW5jZS0+bG9ja3RhZy5sb2NrdGFnX2ZpZWxkMik7CiAJCQkJ dmFsdWVzWzhdID0gT2JqZWN0SWRHZXREYXR1bShpbnN0YW5jZS0+bG9ja3RhZy5sb2NrdGFnX2Zp ZWxkMyk7Ci0JCQkJdmFsdWVzWzldID0gSW50MTZHZXREYXR1bShpbnN0YW5jZS0+bG9ja3RhZy5s b2NrdGFnX2ZpZWxkNCk7CisJCQkJdmFsdWVzWzldID0gVUludDE2R2V0RGF0dW0oaW5zdGFuY2Ut PmxvY2t0YWcubG9ja3RhZ19maWVsZDQpOwogCQkJCW51bGxzWzJdID0gdHJ1ZTsKIAkJCQludWxs c1szXSA9IHRydWU7CiAJCQkJbnVsbHNbNF0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYwppbmRleCBiOTI0YTJkOTAwYi4uODFhNmJkZTBhZjUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jCkBAIC0xNzYsNyArMTc2LDcgQEAgZ2V0X29wZmFtaWx5X21lbWJlcihP aWQgb3BmYW1pbHksIE9pZCBsZWZ0dHlwZSwgT2lkIHJpZ2h0dHlwZSwKIAkJCQkJCSBPYmplY3RJ ZEdldERhdHVtKG9wZmFtaWx5KSwKIAkJCQkJCSBPYmplY3RJZEdldERhdHVtKGxlZnR0eXBlKSwK IAkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJpZ2h0dHlwZSksCi0JCQkJCQkgSW50MTZHZXREYXR1 bShzdHJhdGVneSkpOworCQkJCQkJIFVJbnQxNkdldERhdHVtKHN0cmF0ZWd5KSk7CiAJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHRwKSkKIAkJcmV0dXJuIEludmFsaWRPaWQ7CiAJYW1vcF90dXAgPSAo Rm9ybV9wZ19hbW9wKSBHRVRTVFJVQ1QodHApOwotLSAKMi40My4wCgo= --000000000000bd744706482cfa5e--