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 1vNd2t-00970T-2F for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Nov 2025 20:20:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vNd2r-00406W-2n for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Nov 2025 20:20:22 +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 1vNd2r-00406L-0z for pgsql-hackers@lists.postgresql.org; Mon, 24 Nov 2025 20:20:21 +0000 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vNd2o-001GEO-09 for pgsql-hackers@postgresql.org; Mon, 24 Nov 2025 20:20:20 +0000 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-64312565c10so363777a12.2 for ; Mon, 24 Nov 2025 12:20:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764015617; x=1764620417; darn=postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=0mZdc6AZihPUJHeoUHB9eMD9e+aGOnmNuZfLdK5KRkI=; b=hJDGQxwZn7KiErKMptsqXArZt+CQb6PVqC7mJEdteracTDqF+7JFntV/masjDYihTT mDAJmOVKCc/Fd8jHd311td58UraoHqnQxdFa/D79Ag5zgMv2rJkYZkBt0CDX8JaZL5Hg FwPmDWrJXeM5jH94FgvB2M3v3KUlb2uBgLv8dgCUsF1DLqFSR+SNfvlCyCw8E+cgD2fj /89gvBTrORokNy9KRCNc0uIBxuMSGqcpEykOyDvAhZUzOGqCHGEbEbCB/WcLDMkFMeB1 4bEeMzns/Pjqmr9zQ9zs4n34HEJu7/Q0gTHsHQLnciRmxTEP4CGgOiBvWT4uo3bAA6Rs 6BSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764015617; x=1764620417; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=0mZdc6AZihPUJHeoUHB9eMD9e+aGOnmNuZfLdK5KRkI=; b=MtWUjx552sK1u47ld62BO+eeXsDYOU96g7K0g/8qr5CWiw9l2aIPYIFaQNQYgyRUF9 AtlBeLMd+7L68v3NPUdzwiaWTEFf2HzCGoQDZtrv+6IoiVcdEJ2Wa1j1osCsgO/IAHsc i5Ekkfrysz2NvYr6pNmzdGj7RBIMKNIW6TXFL9f10jhxf5Rk1p7dkD57cvji+hpkL41+ Az3t5sC7UNzDNGE2dT8nUdMhKHntrgpuOFXKyyhP7DFpRdhNLn53THntIYJaWmWVt9/q WeLerQG0npAbjFyDnbBVzAnvwtjdue9h5NlmU8cuZw9cRGrJpHZb6VEJT5Qo/zQEGPsG b5rg== X-Forwarded-Encrypted: i=1; AJvYcCWCx1+XrlJY/yIuPePpRHuPMoCzm/80hi0oNmz4a/Ymc1LO9BbNjFao0d+EOyPwYjetJGK35uOP28YrkAJB@postgresql.org X-Gm-Message-State: AOJu0YxVLmWCZzGyv3L+53rfuuh091b7qqNkHfJ9eZvK3Rs66muKFaoh jSA7CVkboU/L/MEyRPJHsovj37K6vjARvnMRyuBR0A6FYsPGrpTMMaPeHFzUkA== X-Gm-Gg: ASbGnct2x7YYJNnNgbU9mNsvA1sav4bdK742ZtCoD9g/Fecbabsevre7B01+j4Z0B/W Pt5l03tLWL6jusdpMJybKJQH/0vXtjAUd+TyAoAtVNowtvH7e2A7fH5HvZK3yRDVMASXCNdzwou fjD9HAZD9zXsmsaBSu27gWUD9KXxEdYU7Ak+m15QE2ay9rGJPSVyTX12y/S3+Mt486UQQRi6mAi HWsI9swb8woWJzTqmGpdXH25B4Wz3AGKAiwdvfK9cMNQE3S1pT9kHmqnspajipimdFSJIO069+7 7GF0IkQP3sTExsU3ZQuvcVMpxSmeEsfyqEp9jBn3L2aAs+i+HR3ousR2M7bW4J5BM102rw9NiAt zuHnVWwEfGsY/ZPxi0VVlV+O/FYVKTS8lQ452jf1y+LM/XcTUpFhm3+0iqB6BVAI+yhXEHzV3ui r5Mvb287Tbxzo= X-Google-Smtp-Source: AGHT+IFS7lm+UwpbGGa3ncT29oSBU5cZ6+8cab4GFB+pltpaix7//0wQV7ylVTwP7iildK1jb5V1tg== X-Received: by 2002:a05:6402:280a:b0:641:1d64:8dce with SMTP id 4fb4d7f45d1cf-645eb296780mr241305a12.17.1764015616892; Mon, 24 Nov 2025 12:20:16 -0800 (PST) Received: from [192.168.2.32] ([165.225.27.7]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6453642d32csm12932179a12.21.2025.11.24.12.20.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 24 Nov 2025 12:20:15 -0800 (PST) Content-Type: multipart/mixed; boundary="------------dJcdxdddE8cLUakjUM2utDcx" Message-ID: <7c7e1e59-284b-49f6-a496-17dd4170f979@gmail.com> Date: Mon, 24 Nov 2025 21:20:14 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: get rid of Pointer type, mostly To: Robert Haas , Tom Lane Cc: Peter Eisentraut , pgsql-hackers References: <4154950a-47ae-4223-bd01-1235cc50e933@eisentraut.org> <955002.1764000569@sss.pgh.pa.us> <957744.1764002037@sss.pgh.pa.us> <970261.1764008763@sss.pgh.pa.us> <987824.1764013105@sss.pgh.pa.us> Content-Language: en-US From: David Geier In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------dJcdxdddE8cLUakjUM2utDcx Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 24.11.2025 20:52, Robert Haas wrote: > On Mon, Nov 24, 2025 at 2:38 PM Tom Lane wrote: >> Well, either Peter just ran out of energy or there is actually some >> notational value in Pointer. If it's the latter, I'd like to know. > > I agree that would be nice to know. > > Peter's original email seemed to indicate that he was deterred by this > sort of thing: > > Pointer **extra_data = (Pointer **) PG_GETARG_POINTER(4); > > If Pointer is merely char *, then this is equivalent to: > > char ***extra_data = (char ***) PG_GETARG_POINTER(4); > > I believe this is the same extra_data that is documented thus: I figured the same while doing the change. > So in other words, it's a pointer to an array of generic pointers. In > a vacuum, I'd suggest that having three levels of indirection that are > all semantically different but all denoted by an asterisk in C is > confusing enough to be a bad idea regardless of the specifics. But > since we've already crossed that bridge, we'll just need to make the > best of it. Maybe we could use a more specific typedef here, like > GinExtraPointer. That would be a lot more greppable than just writing > Pointer, and every GinExtraPointer would be the same flavor of generic > pointer, whereas any given Pointer is not necessarily related in any > semantic way to any other. I went with your proposal of GinExtraPointer. See attached patch. It's based on the series of patches from Peter's initial mail. I've included the removal of the Pointer typedef in the same patch. -- David Geier --------------dJcdxdddE8cLUakjUM2utDcx Content-Type: text/x-patch; charset=UTF-8; name="0001-Remove-uses-of-Pointer-in-GIN-related-code.patch" Content-Disposition: attachment; filename="0001-Remove-uses-of-Pointer-in-GIN-related-code.patch" Content-Transfer-Encoding: base64 RnJvbSA3OGFmOTc0YmI5YjUwYTdhMWFiNTJlOWFhNWE0MTA4YzgyYjIzZjMxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAyNCBOb3YgMjAyNSAyMToxNjoxMiArMDEwMApTdWJqZWN0OiBbUEFU Q0hdIFJlbW92ZSB1c2VzIG9mIFBvaW50ZXIgaW4gR0lOIHJlbGF0ZWQgY29kZQoKLS0tCiBj b250cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5jICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIv YnRyZWVfZ2luL2J0cmVlX2dpbi5jICAgICAgICAgfCAgNyArKysrLS0tCiBjb250cmliL2hz dG9yZS9oc3RvcmVfZ2luLmMgICAgICAgICAgIHwgIDIgKy0KIGNvbnRyaWIvaW50YXJyYXkv X2ludF9naW4uYyAgICAgICAgICAgfCAgMiArLQogY29udHJpYi9wZ190cmdtL3RyZ21fZ2lu LmMgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KIGRvYy9zcmMvc2dtbC9naW4uc2dtbCAg ICAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5hcnJheXByb2MuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5l bnRyeXBhZ2UuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5zY2Fu LmMgICAgICB8ICA4ICsrKystLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfZ2lu LmMgICAgIHwgMTYgKysrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdHNnaW5pZHgu YyAgICAgIHwgMTIgKysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2luLmggICAg ICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9naW5fcHJpdmF0ZS5oICAg ICAgfCAgNiArKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naW5ibG9jay5oICAgICAgICAg fCAgMiArLQogc3JjL2luY2x1ZGUvYy5oICAgICAgICAgICAgICAgICAgICAgICB8ICA3IC0t LS0tLS0KIDE2IGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfZ2luLmMgYi9jb250 cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5jCmluZGV4IDVjM2ViNGQwZmQ0Li40ZGM4YWY0ZTQw MyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9naW4uYworKysgYi9jb250 cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5jCkBAIC05OCw3ICs5OCw3IEBAIGdpbl9pbmRleF9j aGVjayhQR19GVU5DVElPTl9BUkdTKQogc3RhdGljIEl0ZW1Qb2ludGVyCiBnaW5SZWFkVHVw bGVXaXRob3V0U3RhdGUoSW5kZXhUdXBsZSBpdHVwLCBpbnQgKm5pdGVtcykKIHsKLQlQb2lu dGVyCQlwdHIgPSBHaW5HZXRQb3N0aW5nKGl0dXApOworCXZvaWQgKgkJcHRyID0gR2luR2V0 UG9zdGluZyhpdHVwKTsKIAlpbnQJCQluaXBkID0gR2luR2V0TlBvc3RpbmcoaXR1cCk7CiAJ SXRlbVBvaW50ZXIgaXBkOwogCWludAkJCW5kZWNvZGVkOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9idHJlZV9naW4vYnRyZWVfZ2luLmMgYi9jb250cmliL2J0cmVlX2dpbi9idHJlZV9naW4u YwppbmRleCA4YzQ3N2QxN2UyMi4uNDcyNWY0YzE3ODcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YnRyZWVfZ2luL2J0cmVlX2dpbi5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2luL2J0cmVlX2dp bi5jCkBAIC01LDYgKzUsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRl ICJhY2Nlc3MvZ2luLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVk ZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtNzMs NyArNzQsNyBAQCBnaW5fYnRyZWVfZXh0cmFjdF9xdWVyeShGdW5jdGlvbkNhbGxJbmZvIGZj aW5mbywKIAlpbnQzMgkgICAqbmVudHJpZXMgPSAoaW50MzIgKikgUEdfR0VUQVJHX1BPSU5U RVIoMSk7CiAJU3RyYXRlZ3lOdW1iZXIgc3RyYXRlZ3kgPSBQR19HRVRBUkdfVUlOVDE2KDIp OwogCWJvb2wJICAqKnBhcnRpYWxtYXRjaCA9IChib29sICoqKSBQR19HRVRBUkdfUE9JTlRF UigzKTsKLQlQb2ludGVyICAgKipleHRyYV9kYXRhID0gKFBvaW50ZXIgKiopIFBHX0dFVEFS R19QT0lOVEVSKDQpOworCUdpbkV4dHJhUG9pbnRlciAqKmV4dHJhX2RhdGEgPSAoR2luRXh0 cmFQb2ludGVyICoqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsKIAlEYXR1bQkgICAqZW50cmll cyA9IChEYXR1bSAqKSBwYWxsb2Moc2l6ZW9mKERhdHVtKSk7CiAJUXVlcnlJbmZvICAqZGF0 YSA9IChRdWVyeUluZm8gKikgcGFsbG9jKHNpemVvZihRdWVyeUluZm8pKTsKIAlib29sCSAg ICpwdHJfcGFydGlhbG1hdGNoID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSk7CkBA IC0xMzksOCArMTQwLDggQEAgZ2luX2J0cmVlX2V4dHJhY3RfcXVlcnkoRnVuY3Rpb25DYWxs SW5mbyBmY2luZm8sCiAJZGF0YS0+b3JpZ19kYXR1bSA9IGRhdHVtOwogCWRhdGEtPmVudHJ5 X2RhdHVtID0gZW50cmllc1swXTsKIAlkYXRhLT50eXBlY21wID0gY21wX2Zuc1tyaHNfY29k ZV07Ci0JKmV4dHJhX2RhdGEgPSAoUG9pbnRlciAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50ZXIp KTsKLQkqKmV4dHJhX2RhdGEgPSAoUG9pbnRlcikgZGF0YTsKKwkqZXh0cmFfZGF0YSA9IChH aW5FeHRyYVBvaW50ZXIgKikgcGFsbG9jKHNpemVvZihHaW5FeHRyYVBvaW50ZXIpKTsKKwkq KmV4dHJhX2RhdGEgPSAoR2luRXh0cmFQb2ludGVyKSBkYXRhOwogCiAJUEdfUkVUVVJOX1BP SU5URVIoZW50cmllcyk7CiB9CmRpZmYgLS1naXQgYS9jb250cmliL2hzdG9yZS9oc3RvcmVf Z2luLmMgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfZ2luLmMKaW5kZXggMmU1ZmExMTU5MjQu LjA5ZmYyZGQwZDk5IDEwMDY0NAotLS0gYS9jb250cmliL2hzdG9yZS9oc3RvcmVfZ2luLmMK KysrIGIvY29udHJpYi9oc3RvcmUvaHN0b3JlX2dpbi5jCkBAIC0xNTYsNyArMTU2LDcgQEAg Z2luX2NvbnNpc3RlbnRfaHN0b3JlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogSFN0b3JlCSAg ICpxdWVyeSA9IFBHX0dFVEFSR19IU1RPUkVfUCgyKTsgKi8KIAlpbnQzMgkJbmtleXMgPSBQ R19HRVRBUkdfSU5UMzIoMyk7CiAKLQkvKiBQb2ludGVyCSAgICpleHRyYV9kYXRhID0gKFBv aW50ZXIgKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7ICovCisJLyogR2luRXh0cmFQb2ludGVy ICpleHRyYV9kYXRhID0gKEdpbkV4dHJhUG9pbnRlciAqKSBQR19HRVRBUkdfUE9JTlRFUig0 KTsgKi8KIAlib29sCSAgICpyZWNoZWNrID0gKGJvb2wgKikgUEdfR0VUQVJHX1BPSU5URVIo NSk7CiAJYm9vbAkJcmVzID0gdHJ1ZTsKIAlpbnQzMgkJaTsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvaW50YXJyYXkvX2ludF9naW4uYyBiL2NvbnRyaWIvaW50YXJyYXkvX2ludF9naW4uYwpp bmRleCBiNzk1OGQ4ZWNhNS4uYWIxNWQ2OTA4NGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaW50 YXJyYXkvX2ludF9naW4uYworKysgYi9jb250cmliL2ludGFycmF5L19pbnRfZ2luLmMKQEAg LTExMyw3ICsxMTMsNyBAQCBnaW5pbnQ0X2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykK IAlTdHJhdGVneU51bWJlciBzdHJhdGVneSA9IFBHX0dFVEFSR19VSU5UMTYoMSk7CiAJaW50 MzIJCW5rZXlzID0gUEdfR0VUQVJHX0lOVDMyKDMpOwogCi0JLyogUG9pbnRlcgkgICAqZXh0 cmFfZGF0YSA9IChQb2ludGVyICopIFBHX0dFVEFSR19QT0lOVEVSKDQpOyAqLworCS8qIEdp bkV4dHJhUG9pbnRlciAqZXh0cmFfZGF0YSA9IChHaW5FeHRyYVBvaW50ZXIgKikgUEdfR0VU QVJHX1BPSU5URVIoNCk7ICovCiAJYm9vbAkgICAqcmVjaGVjayA9IChib29sICopIFBHX0dF VEFSR19QT0lOVEVSKDUpOwogCWJvb2wJCXJlcyA9IGZhbHNlOwogCWludDMyCQlpOwpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMgYi9jb250cmliL3BnX3RyZ20v dHJnbV9naW4uYwppbmRleCAyOWE1MmVhYzdhZi4uNWU0NWNlZmFjMjYgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpbi5jCisrKyBiL2NvbnRyaWIvcGdfdHJnbS90cmdt X2dpbi5jCkBAIC03NCw3ICs3NCw3IEBAIGdpbl9leHRyYWN0X3F1ZXJ5X3RyZ20oUEdfRlVO Q1RJT05fQVJHUykKIAlTdHJhdGVneU51bWJlciBzdHJhdGVneSA9IFBHX0dFVEFSR19VSU5U MTYoMik7CiAKIAkvKiBib29sICAgKipwbWF0Y2ggPSAoYm9vbCAqKikgUEdfR0VUQVJHX1BP SU5URVIoMyk7ICovCi0JUG9pbnRlciAgICoqZXh0cmFfZGF0YSA9IChQb2ludGVyICoqKSBQ R19HRVRBUkdfUE9JTlRFUig0KTsKKwlHaW5FeHRyYVBvaW50ZXIgKipleHRyYV9kYXRhID0g KEdpbkV4dHJhUG9pbnRlciAqKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7CiAKIAkvKiBib29s ICAgKipudWxsRmxhZ3MgPSAoYm9vbCAqKikgUEdfR0VUQVJHX1BPSU5URVIoNSk7ICovCiAJ aW50MzIJICAgKnNlYXJjaE1vZGUgPSAoaW50MzIgKikgUEdfR0VUQVJHX1BPSU5URVIoNik7 CkBAIC0xMjMsOSArMTIzLDkgQEAgZ2luX2V4dHJhY3RfcXVlcnlfdHJnbShQR19GVU5DVElP Tl9BUkdTKQogCQkJCSAqIFBvaW50ZXJzLCBidXQgd2UganVzdCBwdXQgdGhlIHNhbWUgdmFs dWUgaW4gZWFjaCBlbGVtZW50LgogCQkJCSAqLwogCQkJCXRyZ2xlbiA9IEFSUk5FTEVNKHRy Zyk7Ci0JCQkJKmV4dHJhX2RhdGEgPSAoUG9pbnRlciAqKSBwYWxsb2Moc2l6ZW9mKFBvaW50 ZXIpICogdHJnbGVuKTsKKwkJCQkqZXh0cmFfZGF0YSA9IChHaW5FeHRyYVBvaW50ZXIgKikg cGFsbG9jKHNpemVvZihHaW5FeHRyYVBvaW50ZXIpICogdHJnbGVuKTsKIAkJCQlmb3IgKGkg PSAwOyBpIDwgdHJnbGVuOyBpKyspCi0JCQkJCSgqZXh0cmFfZGF0YSlbaV0gPSAoUG9pbnRl cikgZ3JhcGg7CisJCQkJCSgqZXh0cmFfZGF0YSlbaV0gPSAoR2luRXh0cmFQb2ludGVyKSBn cmFwaDsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTE3NCw3ICsxNzQsNyBAQCBnaW5fdHJn bV9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiB0ZXh0ICAgICpxdWVyeSA9 IFBHX0dFVEFSR19URVhUX1BQKDIpOyAqLwogCWludDMyCQlua2V5cyA9IFBHX0dFVEFSR19J TlQzMigzKTsKLQlQb2ludGVyICAgICpleHRyYV9kYXRhID0gKFBvaW50ZXIgKikgUEdfR0VU QVJHX1BPSU5URVIoNCk7CisJR2luRXh0cmFQb2ludGVyICpleHRyYV9kYXRhID0gKEdpbkV4 dHJhUG9pbnRlciAqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsKIAlib29sCSAgICpyZWNoZWNr ID0gKGJvb2wgKikgUEdfR0VUQVJHX1BPSU5URVIoNSk7CiAJYm9vbAkJcmVzOwogCWludDMy CQlpLApAQCAtMjczLDcgKzI3Myw3IEBAIGdpbl90cmdtX3RyaWNvbnNpc3RlbnQoUEdfRlVO Q1RJT05fQVJHUykKIAogCS8qIHRleHQgICAgKnF1ZXJ5ID0gUEdfR0VUQVJHX1RFWFRfUFAo Mik7ICovCiAJaW50MzIJCW5rZXlzID0gUEdfR0VUQVJHX0lOVDMyKDMpOwotCVBvaW50ZXIg ICAgKmV4dHJhX2RhdGEgPSAoUG9pbnRlciAqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsKKwlH aW5FeHRyYVBvaW50ZXIgKmV4dHJhX2RhdGEgPSAoR2luRXh0cmFQb2ludGVyICopIFBHX0dF VEFSR19QT0lOVEVSKDQpOwogCUdpblRlcm5hcnlWYWx1ZSByZXMgPSBHSU5fTUFZQkU7CiAJ aW50MzIJCWksCiAJCQkJbnRydWU7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2luLnNn bWwgYi9kb2Mvc3JjL3NnbWwvZ2luLnNnbWwKaW5kZXggODI0MTBiMWZiZGYuLmJkMzkyYmNm ZGZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZ2luLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2dpbi5zZ21sCkBAIC0xODQsNyArMTg0LDcgQEAKIAogICAgIDx2YXJsaXN0ZW50cnk+ CiAgICAgIDx0ZXJtPjxmdW5jdGlvbj5EYXR1bSAqZXh0cmFjdFF1ZXJ5KERhdHVtIHF1ZXJ5 LCBpbnQzMiAqbmtleXMsCi0gICAgICAgIFN0cmF0ZWd5TnVtYmVyIG4sIGJvb2wgKipwbWF0 Y2gsIFBvaW50ZXIgKipleHRyYV9kYXRhLAorICAgICAgICBTdHJhdGVneU51bWJlciBuLCBi b29sICoqcG1hdGNoLCBHaW5FeHRyYVBvaW50ZXIgKipleHRyYV9kYXRhLAogICAgICAgICBi b29sICoqbnVsbEZsYWdzLCBpbnQzMiAqc2VhcmNoTW9kZSk8L2Z1bmN0aW9uPjwvdGVybT4K ICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+CkBAIC0yNzMsNyArMjczLDcgQEAKICAg PHZhcmlhYmxlbGlzdD4KICAgICA8dmFybGlzdGVudHJ5PgogICAgICA8dGVybT48ZnVuY3Rp b24+Ym9vbCBjb25zaXN0ZW50KGJvb2wgY2hlY2tbXSwgU3RyYXRlZ3lOdW1iZXIgbiwgRGF0 dW0gcXVlcnksCi0gICAgICAgIGludDMyIG5rZXlzLCBQb2ludGVyIGV4dHJhX2RhdGFbXSwg Ym9vbCAqcmVjaGVjaywKKyAgICAgICAgaW50MzIgbmtleXMsIEdpbkV4dHJhUG9pbnRlciBl eHRyYV9kYXRhW10sIGJvb2wgKnJlY2hlY2ssCiAgICAgICAgIERhdHVtIHF1ZXJ5S2V5c1td LCBib29sIG51bGxGbGFnc1tdKTwvZnVuY3Rpb24+PC90ZXJtPgogICAgICA8bGlzdGl0ZW0+ CiAgICAgICA8cGFyYT4KQEAgLTMyNCw3ICszMjQsNyBAQAogCiAgICAgPHZhcmxpc3RlbnRy eT4KICAgICAgPHRlcm0+PGZ1bmN0aW9uPkdpblRlcm5hcnlWYWx1ZSB0cmlDb25zaXN0ZW50 KEdpblRlcm5hcnlWYWx1ZSBjaGVja1tdLCBTdHJhdGVneU51bWJlciBuLCBEYXR1bSBxdWVy eSwKLSAgICAgICAgaW50MzIgbmtleXMsIFBvaW50ZXIgZXh0cmFfZGF0YVtdLAorICAgICAg ICBpbnQzMiBua2V5cywgR2luRXh0cmFQb2ludGVyIGV4dHJhX2RhdGFbXSwKICAgICAgICAg RGF0dW0gcXVlcnlLZXlzW10sIGJvb2wgbnVsbEZsYWdzW10pPC9mdW5jdGlvbj48L3Rlcm0+ CiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgpAQCAtMzkxLDcgKzM5MSw3IEBACiAg IDx2YXJpYWJsZWxpc3Q+CiAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgPHRlcm0+PGZ1bmN0 aW9uPmludCBjb21wYXJlUGFydGlhbChEYXR1bSBwYXJ0aWFsX2tleSwgRGF0dW0ga2V5LCBT dHJhdGVneU51bWJlciBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRl ciBleHRyYV9kYXRhKTwvZnVuY3Rpb24+PC90ZXJtPgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR2luRXh0cmFQb2ludGVyIGV4dHJhX2RhdGEpPC9mdW5jdGlvbj48L3Rlcm0+ CiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIENvbXBhcmUgYSBwYXJ0 aWFsLW1hdGNoIHF1ZXJ5IGtleSB0byBhbiBpbmRleCBrZXkuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbmFycmF5cHJvYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5hcnJheXByb2MuYwppbmRleCAxZjgyMTMyM2ViMC4uNDZkOWMyOWEwOGIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYXJyYXlwcm9jLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5hcnJheXByb2MuYwpAQCAtODQsNyArODQsNyBA QCBnaW5xdWVyeWFycmF5ZXh0cmFjdChQR19GVU5DVElPTl9BUkdTKQogCVN0cmF0ZWd5TnVt YmVyIHN0cmF0ZWd5ID0gUEdfR0VUQVJHX1VJTlQxNigyKTsKIAogCS8qIGJvb2wgICAqKnBt YXRjaCA9IChib29sICoqKSBQR19HRVRBUkdfUE9JTlRFUigzKTsgKi8KLQkvKiBQb2ludGVy CSAgICpleHRyYV9kYXRhID0gKFBvaW50ZXIgKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7ICov CisJLyogR2luRXh0cmFQb2ludGVyICpleHRyYV9kYXRhID0gKEdpbkV4dHJhUG9pbnRlciAq KSBQR19HRVRBUkdfUE9JTlRFUig0KTsgKi8KIAlib29sCSAgKipudWxsRmxhZ3MgPSAoYm9v bCAqKikgUEdfR0VUQVJHX1BPSU5URVIoNSk7CiAJaW50MzIJICAgKnNlYXJjaE1vZGUgPSAo aW50MzIgKikgUEdfR0VUQVJHX1BPSU5URVIoNik7CiAJaW50MTYJCWVsbWxlbjsKQEAgLTE0 Nyw3ICsxNDcsNyBAQCBnaW5hcnJheWNvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkv KiBBcnJheVR5cGUgICpxdWVyeSA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCgyKTsgKi8KIAlp bnQzMgkJbmtleXMgPSBQR19HRVRBUkdfSU5UMzIoMyk7CiAKLQkvKiBQb2ludGVyCSAgICpl eHRyYV9kYXRhID0gKFBvaW50ZXIgKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7ICovCisJLyog R2luRXh0cmFQb2ludGVyICpleHRyYV9kYXRhID0gKEdpbkV4dHJhUG9pbnRlciAqKSBQR19H RVRBUkdfUE9JTlRFUig0KTsgKi8KIAlib29sCSAgICpyZWNoZWNrID0gKGJvb2wgKikgUEdf R0VUQVJHX1BPSU5URVIoNSk7CiAKIAkvKiBEYXR1bQkgICAqcXVlcnlLZXlzID0gKERhdHVt ICopIFBHX0dFVEFSR19QT0lOVEVSKDYpOyAqLwpAQCAtMjMxLDcgKzIzMSw3IEBAIGdpbmFy cmF5dHJpY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCS8qIEFycmF5VHlwZSAgKnF1 ZXJ5ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDIpOyAqLwogCWludDMyCQlua2V5cyA9IFBH X0dFVEFSR19JTlQzMigzKTsKIAotCS8qIFBvaW50ZXIJICAgKmV4dHJhX2RhdGEgPSAoUG9p bnRlciAqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsgKi8KKwkvKiBHaW5FeHRyYVBvaW50ZXIg KmV4dHJhX2RhdGEgPSAoR2luRXh0cmFQb2ludGVyICopIFBHX0dFVEFSR19QT0lOVEVSKDQp OyAqLwogCS8qIERhdHVtCSAgICpxdWVyeUtleXMgPSAoRGF0dW0gKikgUEdfR0VUQVJHX1BP SU5URVIoNSk7ICovCiAJYm9vbAkgICAqbnVsbEZsYWdzID0gKGJvb2wgKikgUEdfR0VUQVJH X1BPSU5URVIoNik7CiAJR2luVGVybmFyeVZhbHVlIHJlczsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naW4vZ2luZW50cnlwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmVudHJ5cGFnZS5jCmluZGV4IGMwNTkyMzY3NzAwLi4wNzY0ZGEyOGM1NyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5lbnRyeXBhZ2UuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmVudHJ5cGFnZS5jCkBAIC00Myw3ICs0Myw3IEBA IHN0YXRpYyB2b2lkIGVudHJ5U3BsaXRQYWdlKEdpbkJ0cmVlIGJ0cmVlLCBCdWZmZXIgb3Jp Z2J1ZiwKIEluZGV4VHVwbGUKIEdpbkZvcm1UdXBsZShHaW5TdGF0ZSAqZ2luc3RhdGUsCiAJ CQkgT2Zmc2V0TnVtYmVyIGF0dG51bSwgRGF0dW0ga2V5LCBHaW5OdWxsQ2F0ZWdvcnkgY2F0 ZWdvcnksCi0JCQkgUG9pbnRlciBkYXRhLCBTaXplIGRhdGFTaXplLCBpbnQgbmlwZCwKKwkJ CSBjb25zdCB2b2lkICpkYXRhLCBTaXplIGRhdGFTaXplLCBpbnQgbmlwZCwKIAkJCSBib29s IGVycm9yVG9vQmlnKQogewogCURhdHVtCQlkYXR1bXNbMl07CkBAIC0xMzYsNyArMTM2LDcg QEAgR2luRm9ybVR1cGxlKEdpblN0YXRlICpnaW5zdGF0ZSwKIAkgKi8KIAlpZiAoZGF0YSkK IAl7Ci0JCWNoYXIJICAgKnB0ciA9IEdpbkdldFBvc3RpbmcoaXR1cCk7CisJCXZvaWQJICAg KnB0ciA9IEdpbkdldFBvc3RpbmcoaXR1cCk7CiAKIAkJbWVtY3B5KHB0ciwgZGF0YSwgZGF0 YVNpemUpOwogCX0KQEAgLTE2Miw3ICsxNjIsNyBAQCBJdGVtUG9pbnRlcgogZ2luUmVhZFR1 cGxlKEdpblN0YXRlICpnaW5zdGF0ZSwgT2Zmc2V0TnVtYmVyIGF0dG51bSwgSW5kZXhUdXBs ZSBpdHVwLAogCQkJIGludCAqbml0ZW1zKQogewotCVBvaW50ZXIJCXB0ciA9IEdpbkdldFBv c3RpbmcoaXR1cCk7CisJdm9pZCAqCQlwdHIgPSBHaW5HZXRQb3N0aW5nKGl0dXApOwogCWlu dAkJCW5pcGQgPSBHaW5HZXROUG9zdGluZyhpdHVwKTsKIAlJdGVtUG9pbnRlciBpcGQ7CiAJ aW50CQkJbmRlY29kZWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dp bnNjYW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luc2Nhbi5jCmluZGV4IDI2MDgx NjkzMzgzLi45MzJiYWRmZDY0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp bi9naW5zY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5zY2FuLmMKQEAg LTU3LDcgKzU3LDcgQEAgc3RhdGljIEdpblNjYW5FbnRyeQogZ2luRmlsbFNjYW5FbnRyeShH aW5TY2FuT3BhcXVlIHNvLCBPZmZzZXROdW1iZXIgYXR0bnVtLAogCQkJCSBTdHJhdGVneU51 bWJlciBzdHJhdGVneSwgaW50MzIgc2VhcmNoTW9kZSwKIAkJCQkgRGF0dW0gcXVlcnlLZXks IEdpbk51bGxDYXRlZ29yeSBxdWVyeUNhdGVnb3J5LAotCQkJCSBib29sIGlzUGFydGlhbE1h dGNoLCBQb2ludGVyIGV4dHJhX2RhdGEpCisJCQkJIGJvb2wgaXNQYXJ0aWFsTWF0Y2gsIEdp bkV4dHJhUG9pbnRlciBleHRyYV9kYXRhKQogewogCUdpblN0YXRlICAgKmdpbnN0YXRlID0g JnNvLT5naW5zdGF0ZTsKIAlHaW5TY2FuRW50cnkgc2NhbkVudHJ5OwpAQCAtMTYwLDcgKzE2 MCw3IEBAIGdpbkZpbGxTY2FuS2V5KEdpblNjYW5PcGFxdWUgc28sIE9mZnNldE51bWJlciBh dHRudW0sCiAJCQkgICBTdHJhdGVneU51bWJlciBzdHJhdGVneSwgaW50MzIgc2VhcmNoTW9k ZSwKIAkJCSAgIERhdHVtIHF1ZXJ5LCB1aW50MzIgblF1ZXJ5VmFsdWVzLAogCQkJICAgRGF0 dW0gKnF1ZXJ5VmFsdWVzLCBHaW5OdWxsQ2F0ZWdvcnkgKnF1ZXJ5Q2F0ZWdvcmllcywKLQkJ CSAgIGJvb2wgKnBhcnRpYWxfbWF0Y2hlcywgUG9pbnRlciAqZXh0cmFfZGF0YSkKKwkJCSAg IGJvb2wgKnBhcnRpYWxfbWF0Y2hlcywgR2luRXh0cmFQb2ludGVyICpleHRyYV9kYXRhKQog ewogCUdpblNjYW5LZXkJa2V5ID0gJihzby0+a2V5c1tzby0+bmtleXMrK10pOwogCUdpblN0 YXRlICAgKmdpbnN0YXRlID0gJnNvLT5naW5zdGF0ZTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBn aW5GaWxsU2NhbktleShHaW5TY2FuT3BhcXVlIHNvLCBPZmZzZXROdW1iZXIgYXR0bnVtLAog CQlEYXR1bQkJcXVlcnlLZXk7CiAJCUdpbk51bGxDYXRlZ29yeSBxdWVyeUNhdGVnb3J5Owog CQlib29sCQlpc1BhcnRpYWxNYXRjaDsKLQkJUG9pbnRlcgkJdGhpc19leHRyYTsKKwkJR2lu RXh0cmFQb2ludGVyIHRoaXNfZXh0cmE7CiAKIAkJcXVlcnlLZXkgPSBxdWVyeVZhbHVlc1tp XTsKIAkJcXVlcnlDYXRlZ29yeSA9IHF1ZXJ5Q2F0ZWdvcmllc1tpXTsKQEAgLTMwMiw3ICsz MDIsNyBAQCBnaW5OZXdTY2FuS2V5KEluZGV4U2NhbkRlc2Mgc2NhbikKIAkJRGF0dW0JICAg KnF1ZXJ5VmFsdWVzOwogCQlpbnQzMgkJblF1ZXJ5VmFsdWVzID0gMDsKIAkJYm9vbAkgICAq cGFydGlhbF9tYXRjaGVzID0gTlVMTDsKLQkJUG9pbnRlciAgICAqZXh0cmFfZGF0YSA9IE5V TEw7CisJCUdpbkV4dHJhUG9pbnRlciAqZXh0cmFfZGF0YSA9IE5VTEw7CiAJCWJvb2wJICAg Km51bGxGbGFncyA9IE5VTEw7CiAJCUdpbk51bGxDYXRlZ29yeSAqY2F0ZWdvcmllczsKIAkJ aW50MzIJCXNlYXJjaE1vZGUgPSBHSU5fU0VBUkNIX01PREVfREVGQVVMVDsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4uYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uYl9naW4uYwppbmRleCA5YjU2MjQ4Y2YwYi4uMTZkZGNjYWFkYTYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4uYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmJfZ2luLmMKQEAgLTc0Niw3ICs3NDYsNyBAQCBlbWl0 X2pzcF9naW5fZW50cmllcyhKc29uUGF0aEdpbk5vZGUgKm5vZGUsIEdpbkVudHJpZXMgKmVu dHJpZXMpCiAgKi8KIHN0YXRpYyBEYXR1bSAqCiBleHRyYWN0X2pzcF9xdWVyeShKc29uUGF0 aCAqanAsIFN0cmF0ZWd5TnVtYmVyIHN0cmF0LCBib29sIHBhdGhPcHMsCi0JCQkJICBpbnQz MiAqbmVudHJpZXMsIFBvaW50ZXIgKipleHRyYV9kYXRhKQorCQkJCSAgaW50MzIgKm5lbnRy aWVzLCBHaW5FeHRyYVBvaW50ZXIgKipleHRyYV9kYXRhKQogewogCUpzb25QYXRoR2luQ29u dGV4dCBjeHQ7CiAJSnNvblBhdGhJdGVtIHJvb3Q7CkBAIC03ODYsNyArNzg2LDcgQEAgZXh0 cmFjdF9qc3BfcXVlcnkoSnNvblBhdGggKmpwLCBTdHJhdGVneU51bWJlciBzdHJhdCwgYm9v bCBwYXRoT3BzLAogCQlyZXR1cm4gTlVMTDsKIAogCSpleHRyYV9kYXRhID0gcGFsbG9jMChz aXplb2YoKipleHRyYV9kYXRhKSAqIGVudHJpZXMuY291bnQpOwotCSoqZXh0cmFfZGF0YSA9 IChQb2ludGVyKSBub2RlOworCSoqZXh0cmFfZGF0YSA9IChHaW5FeHRyYVBvaW50ZXIpIG5v ZGU7CiAKIAlyZXR1cm4gZW50cmllcy5idWY7CiB9CkBAIC05MDksNyArOTA5LDcgQEAgZ2lu X2V4dHJhY3RfanNvbmJfcXVlcnkoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSBzdHJhdGVneSA9 PSBKc29uYkpzb25wYXRoRXhpc3RzU3RyYXRlZ3lOdW1iZXIpCiAJewogCQlKc29uUGF0aCAg ICpqcCA9IFBHX0dFVEFSR19KU09OUEFUSF9QKDApOwotCQlQb2ludGVyICAgKipleHRyYV9k YXRhID0gKFBvaW50ZXIgKiopIFBHX0dFVEFSR19QT0lOVEVSKDQpOworCQlHaW5FeHRyYVBv aW50ZXIgICAqKmV4dHJhX2RhdGEgPSAoR2luRXh0cmFQb2ludGVyICoqKSBQR19HRVRBUkdf UE9JTlRFUig0KTsKIAogCQllbnRyaWVzID0gZXh0cmFjdF9qc3BfcXVlcnkoanAsIHN0cmF0 ZWd5LCBmYWxzZSwgbmVudHJpZXMsIGV4dHJhX2RhdGEpOwogCkBAIC05MzQsNyArOTM0LDcg QEAgZ2luX2NvbnNpc3RlbnRfanNvbmIoUEdfRlVOQ1RJT05fQVJHUykKIAkvKiBKc29uYgkg ICAqcXVlcnkgPSBQR19HRVRBUkdfSlNPTkJfUCgyKTsgKi8KIAlpbnQzMgkJbmtleXMgPSBQ R19HRVRBUkdfSU5UMzIoMyk7CiAKLQlQb2ludGVyICAgICpleHRyYV9kYXRhID0gKFBvaW50 ZXIgKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7CisJR2luRXh0cmFQb2ludGVyICAgICpleHRy YV9kYXRhID0gKEdpbkV4dHJhUG9pbnRlciAqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsKIAli b29sCSAgICpyZWNoZWNrID0gKGJvb2wgKikgUEdfR0VUQVJHX1BPSU5URVIoNSk7CiAJYm9v bAkJcmVzID0gdHJ1ZTsKIAlpbnQzMgkJaTsKQEAgLTEwMTcsNyArMTAxNyw3IEBAIGdpbl90 cmljb25zaXN0ZW50X2pzb25iKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBKc29uYgkgICAq cXVlcnkgPSBQR19HRVRBUkdfSlNPTkJfUCgyKTsgKi8KIAlpbnQzMgkJbmtleXMgPSBQR19H RVRBUkdfSU5UMzIoMyk7Ci0JUG9pbnRlciAgICAqZXh0cmFfZGF0YSA9IChQb2ludGVyICop IFBHX0dFVEFSR19QT0lOVEVSKDQpOworCUdpbkV4dHJhUG9pbnRlciAgICAqZXh0cmFfZGF0 YSA9IChHaW5FeHRyYVBvaW50ZXIgKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7CiAJR2luVGVy bmFyeVZhbHVlIHJlcyA9IEdJTl9NQVlCRTsKIAlpbnQzMgkJaTsKIApAQCAtMTIwMCw3ICsx MjAwLDcgQEAgZ2luX2V4dHJhY3RfanNvbmJfcXVlcnlfcGF0aChQR19GVU5DVElPTl9BUkdT KQogCQkJIHN0cmF0ZWd5ID09IEpzb25iSnNvbnBhdGhFeGlzdHNTdHJhdGVneU51bWJlcikK IAl7CiAJCUpzb25QYXRoICAgKmpwID0gUEdfR0VUQVJHX0pTT05QQVRIX1AoMCk7Ci0JCVBv aW50ZXIgICAqKmV4dHJhX2RhdGEgPSAoUG9pbnRlciAqKikgUEdfR0VUQVJHX1BPSU5URVIo NCk7CisJCUdpbkV4dHJhUG9pbnRlciAgICoqZXh0cmFfZGF0YSA9IChHaW5FeHRyYVBvaW50 ZXIgKiopIFBHX0dFVEFSR19QT0lOVEVSKDQpOwogCiAJCWVudHJpZXMgPSBleHRyYWN0X2pz cF9xdWVyeShqcCwgc3RyYXRlZ3ksIHRydWUsIG5lbnRyaWVzLCBleHRyYV9kYXRhKTsKIApA QCAtMTIyNCw3ICsxMjI0LDcgQEAgZ2luX2NvbnNpc3RlbnRfanNvbmJfcGF0aChQR19GVU5D VElPTl9BUkdTKQogCiAJLyogSnNvbmIJICAgKnF1ZXJ5ID0gUEdfR0VUQVJHX0pTT05CX1Ao Mik7ICovCiAJaW50MzIJCW5rZXlzID0gUEdfR0VUQVJHX0lOVDMyKDMpOwotCVBvaW50ZXIg ICAgKmV4dHJhX2RhdGEgPSAoUG9pbnRlciAqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsKKwlH aW5FeHRyYVBvaW50ZXIgICAgKmV4dHJhX2RhdGEgPSAoR2luRXh0cmFQb2ludGVyICopIFBH X0dFVEFSR19QT0lOVEVSKDQpOwogCWJvb2wJICAgKnJlY2hlY2sgPSAoYm9vbCAqKSBQR19H RVRBUkdfUE9JTlRFUig1KTsKIAlib29sCQlyZXMgPSB0cnVlOwogCWludDMyCQlpOwpAQCAt MTI3Niw3ICsxMjc2LDcgQEAgZ2luX3RyaWNvbnNpc3RlbnRfanNvbmJfcGF0aChQR19GVU5D VElPTl9BUkdTKQogCiAJLyogSnNvbmIJICAgKnF1ZXJ5ID0gUEdfR0VUQVJHX0pTT05CX1Ao Mik7ICovCiAJaW50MzIJCW5rZXlzID0gUEdfR0VUQVJHX0lOVDMyKDMpOwotCVBvaW50ZXIg ICAgKmV4dHJhX2RhdGEgPSAoUG9pbnRlciAqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsKKwlH aW5FeHRyYVBvaW50ZXIgICAgKmV4dHJhX2RhdGEgPSAoR2luRXh0cmFQb2ludGVyICopIFBH X0dFVEFSR19QT0lOVEVSKDQpOwogCUdpblRlcm5hcnlWYWx1ZSByZXMgPSBHSU5fTUFZQkU7 CiAJaW50MzIJCWk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxm dW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXggNTQwYWE5 NjI4ZDcuLjkwNTMxMzIzMDY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwpAQCAt ODI0OSw3ICs4MjQ5LDcgQEAgZ2luY29zdF9wYXR0ZXJuKEluZGV4T3B0SW5mbyAqaW5kZXgs IGludCBpbmRleGNvbCwKIAkJCQlyaWdodHR5cGU7CiAJaW50MzIJCW5lbnRyaWVzID0gMDsK IAlib29sCSAgICpwYXJ0aWFsX21hdGNoZXMgPSBOVUxMOwotCVBvaW50ZXIgICAgKmV4dHJh X2RhdGEgPSBOVUxMOworCUdpbkV4dHJhUG9pbnRlciAqZXh0cmFfZGF0YSA9IE5VTEw7CiAJ Ym9vbAkgICAqbnVsbEZsYWdzID0gTlVMTDsKIAlpbnQzMgkJc2VhcmNoTW9kZSA9IEdJTl9T RUFSQ0hfTU9ERV9ERUZBVUxUOwogCWludDMyCQlpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3RzZ2luaWR4LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNnaW5p ZHguYwppbmRleCAyNzEyZmQ4OWRmMC4uZTk0M2Y0Y2Q5NjggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC90c2dpbmlkeC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC90c2dpbmlkeC5jCkBAIC00NCw3ICs0NCw3IEBAIGdpbl9jbXBfcHJlZml4KFBHX0ZVTkNU SU9OX0FSR1MpCiAKICNpZmRlZiBOT1RfVVNFRAogCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ZWd5 ID0gUEdfR0VUQVJHX1VJTlQxNigyKTsKLQlQb2ludGVyCQlleHRyYV9kYXRhID0gUEdfR0VU QVJHX1BPSU5URVIoMyk7CisJR2luRXh0cmFQb2ludGVyICAgZXh0cmFfZGF0YSA9IFBHX0dF VEFSR19QT0lOVEVSKDMpOwogI2VuZGlmCiAJaW50CQkJY21wOwogCkBAIC05OCw3ICs5OCw3 IEBAIGdpbl9leHRyYWN0X3RzcXVlcnkoUEdfRlVOQ1RJT05fQVJHUykKIAogCS8qIFN0cmF0 ZWd5TnVtYmVyIHN0cmF0ZWd5ID0gUEdfR0VUQVJHX1VJTlQxNigyKTsgKi8KIAlib29sCSAg KipwdHJfcGFydGlhbG1hdGNoID0gKGJvb2wgKiopIFBHX0dFVEFSR19QT0lOVEVSKDMpOwot CVBvaW50ZXIgICAqKmV4dHJhX2RhdGEgPSAoUG9pbnRlciAqKikgUEdfR0VUQVJHX1BPSU5U RVIoNCk7CisJR2luRXh0cmFQb2ludGVyICAgKipleHRyYV9kYXRhID0gKEdpbkV4dHJhUG9p bnRlciAqKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7CiAKIAkvKiBib29sICAgKipudWxsRmxh Z3MgPSAoYm9vbCAqKikgUEdfR0VUQVJHX1BPSU5URVIoNSk7ICovCiAJaW50MzIJICAgKnNl YXJjaE1vZGUgPSAoaW50MzIgKikgUEdfR0VUQVJHX1BPSU5URVIoNik7CkBAIC0xNDEsNyAr MTQxLDcgQEAgZ2luX2V4dHJhY3RfdHNxdWVyeShQR19GVU5DVElPTl9BUkdTKQogCQkgKiBz YW1lLCBlbnRyeSdzKSBudW1iZXIuIEVudHJ5J3MgbnVtYmVyIGlzIHVzZWQgaW4gY2hlY2sg YXJyYXkgaW4KIAkJICogY29uc2lzdGVudCBtZXRob2QuIFdlIHVzZSB0aGUgc2FtZSBtYXAg Zm9yIGVhY2ggZW50cnkuCiAJCSAqLwotCQkqZXh0cmFfZGF0YSA9IChQb2ludGVyICopIHBh bGxvYyhzaXplb2YoUG9pbnRlcikgKiBqKTsKKwkJKmV4dHJhX2RhdGEgPSAoR2luRXh0cmFQ b2ludGVyICopIHBhbGxvYyhzaXplb2YoR2luRXh0cmFQb2ludGVyKSAqIGopOwogCQltYXBf aXRlbV9vcGVyYW5kID0gKGludCAqKSBwYWxsb2MwKHNpemVvZihpbnQpICogcXVlcnktPnNp emUpOwogCiAJCS8qIE5vdyByZXNjYW4gdGhlIFZBTCBpdGVtcyBhbmQgZmlsbCBpbiB0aGUg YXJyYXlzICovCkBAIC0xNTcsNyArMTU3LDcgQEAgZ2luX2V4dHJhY3RfdHNxdWVyeShQR19G VU5DVElPTl9BUkdTKQogCQkJCQkJCQkJCQkgICB2YWwtPmxlbmd0aCk7CiAJCQkJZW50cmll c1tqXSA9IFBvaW50ZXJHZXREYXR1bSh0eHQpOwogCQkJCXBhcnRpYWxtYXRjaFtqXSA9IHZh bC0+cHJlZml4OwotCQkJCSgqZXh0cmFfZGF0YSlbal0gPSAoUG9pbnRlcikgbWFwX2l0ZW1f b3BlcmFuZDsKKwkJCQkoKmV4dHJhX2RhdGEpW2pdID0gKEdpbkV4dHJhUG9pbnRlcikgbWFw X2l0ZW1fb3BlcmFuZDsKIAkJCQltYXBfaXRlbV9vcGVyYW5kW2ldID0gajsKIAkJCQlqKys7 CiAJCQl9CkBAIC0yMTksNyArMjE5LDcgQEAgZ2luX3RzcXVlcnlfY29uc2lzdGVudChQR19G VU5DVElPTl9BUkdTKQogCVRTUXVlcnkJCXF1ZXJ5ID0gUEdfR0VUQVJHX1RTUVVFUlkoMik7 CiAKIAkvKiBpbnQzMglua2V5cyA9IFBHX0dFVEFSR19JTlQzMigzKTsgKi8KLQlQb2ludGVy ICAgICpleHRyYV9kYXRhID0gKFBvaW50ZXIgKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7CisJ R2luRXh0cmFQb2ludGVyICAgICpleHRyYV9kYXRhID0gKEdpbkV4dHJhUG9pbnRlciAqKSBQ R19HRVRBUkdfUE9JTlRFUig0KTsKIAlib29sCSAgICpyZWNoZWNrID0gKGJvb2wgKikgUEdf R0VUQVJHX1BPSU5URVIoNSk7CiAJYm9vbAkJcmVzID0gZmFsc2U7CiAKQEAgLTI2OCw3ICsy NjgsNyBAQCBnaW5fdHNxdWVyeV90cmljb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ VFNRdWVyeQkJcXVlcnkgPSBQR19HRVRBUkdfVFNRVUVSWSgyKTsKIAogCS8qIGludDMyCW5r ZXlzID0gUEdfR0VUQVJHX0lOVDMyKDMpOyAqLwotCVBvaW50ZXIgICAgKmV4dHJhX2RhdGEg PSAoUG9pbnRlciAqKSBQR19HRVRBUkdfUE9JTlRFUig0KTsKKwlHaW5FeHRyYVBvaW50ZXIg ICAgKmV4dHJhX2RhdGEgPSAoR2luRXh0cmFQb2ludGVyICopIFBHX0dFVEFSR19QT0lOVEVS KDQpOwogCUdpblRlcm5hcnlWYWx1ZSByZXMgPSBHSU5fRkFMU0U7CiAKIAlpZiAocXVlcnkt PnNpemUgPiAwKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpbi5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2dpbi5oCmluZGV4IDEzZWE5MTkyMmVmLi5mZDI2MTY2ZTIyOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpbi5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9naW4uaApAQCAtNzAsNiArNzAsOCBAQCB0eXBlZGVmIHN0cnVjdCBHaW5TdGF0 c0RhdGEKICAqLwogdHlwZWRlZiBjaGFyIEdpblRlcm5hcnlWYWx1ZTsKIAordHlwZWRlZiB2 b2lkICpHaW5FeHRyYVBvaW50ZXI7CisKIFN0YXRpY0Fzc2VydERlY2woc2l6ZW9mKEdpblRl cm5hcnlWYWx1ZSkgPT0gc2l6ZW9mKGJvb2wpLAogCQkJCSAic2l6ZXMgb2YgR2luVGVybmFy eVZhbHVlIGFuZCBib29sIGFyZSBub3QgZXF1YWwiKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dpbl9wcml2YXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2luX3By aXZhdGUuaAppbmRleCBkYjE5ZmZkOTg5Ny4uZDRmM2M1MjRmMWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naW5fcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9naW5fcHJpdmF0ZS5oCkBAIC0yMTQsNyArMjE0LDcgQEAgZXh0ZXJuIHZvaWQgZ2luSW5z ZXJ0VmFsdWUoR2luQnRyZWUgYnRyZWUsIEdpbkJ0cmVlU3RhY2sgKnN0YWNrLAogLyogZ2lu ZW50cnlwYWdlLmMgKi8KIGV4dGVybiBJbmRleFR1cGxlIEdpbkZvcm1UdXBsZShHaW5TdGF0 ZSAqZ2luc3RhdGUsCiAJCQkJCQkJICAgT2Zmc2V0TnVtYmVyIGF0dG51bSwgRGF0dW0ga2V5 LCBHaW5OdWxsQ2F0ZWdvcnkgY2F0ZWdvcnksCi0JCQkJCQkJICAgUG9pbnRlciBkYXRhLCBT aXplIGRhdGFTaXplLCBpbnQgbmlwZCwgYm9vbCBlcnJvclRvb0JpZyk7CisJCQkJCQkJICAg Y29uc3Qgdm9pZCAqZGF0YSwgU2l6ZSBkYXRhU2l6ZSwgaW50IG5pcGQsIGJvb2wgZXJyb3JU b29CaWcpOwogZXh0ZXJuIHZvaWQgZ2luUHJlcGFyZUVudHJ5U2NhbihHaW5CdHJlZSBidHJl ZSwgT2Zmc2V0TnVtYmVyIGF0dG51bSwKIAkJCQkJCQkJRGF0dW0ga2V5LCBHaW5OdWxsQ2F0 ZWdvcnkgY2F0ZWdvcnksCiAJCQkJCQkJCUdpblN0YXRlICpnaW5zdGF0ZSk7CkBAIC0zMDMs NyArMzAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgR2luU2NhbktleURhdGEKIAkvKiBOQjogdGhl c2UgdGhyZWUgYXJyYXlzIGhhdmUgb25seSBudXNlcmVudHJpZXMgZWxlbWVudHMhICovCiAJ RGF0dW0JICAgKnF1ZXJ5VmFsdWVzOwogCUdpbk51bGxDYXRlZ29yeSAqcXVlcnlDYXRlZ29y aWVzOwotCVBvaW50ZXIgICAgKmV4dHJhX2RhdGE7CisJR2luRXh0cmFQb2ludGVyICpleHRy YV9kYXRhOwogCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ZWd5OwogCWludDMyCQlzZWFyY2hNb2Rl OwogCU9mZnNldE51bWJlciBhdHRudW07CkBAIC0zNDEsNyArMzQxLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgR2luU2NhbkVudHJ5RGF0YQogCURhdHVtCQlxdWVyeUtleTsKIAlHaW5OdWxsQ2F0 ZWdvcnkgcXVlcnlDYXRlZ29yeTsKIAlib29sCQlpc1BhcnRpYWxNYXRjaDsKLQlQb2ludGVy CQlleHRyYV9kYXRhOworCUdpbkV4dHJhUG9pbnRlciBleHRyYV9kYXRhOwogCVN0cmF0ZWd5 TnVtYmVyIHN0cmF0ZWd5OwogCWludDMyCQlzZWFyY2hNb2RlOwogCU9mZnNldE51bWJlciBh dHRudW07CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2luYmxvY2suaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naW5ibG9jay5oCmluZGV4IDRjMTY4MTA2OGRiLi5lNzM2NWMy MjBjZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpbmJsb2NrLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2dpbmJsb2NrLmgKQEAgLTIzNiw3ICsyMzYsNyBAQCB0eXBl ZGVmIHNpZ25lZCBjaGFyIEdpbk51bGxDYXRlZ29yeTsKICNkZWZpbmUgR0lOX0lUVVBfQ09N UFJFU1NFRAkJKDFVIDw8IDMxKQogI2RlZmluZSBHaW5HZXRQb3N0aW5nT2Zmc2V0KGl0dXAp CShHaW5JdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCYoaXR1cCktPnRfdGlkKSAmICh+R0lO X0lUVVBfQ09NUFJFU1NFRCkpCiAjZGVmaW5lIEdpblNldFBvc3RpbmdPZmZzZXQoaXR1cCxu KSBJdGVtUG9pbnRlclNldEJsb2NrTnVtYmVyKCYoaXR1cCktPnRfdGlkLChuKXxHSU5fSVRV UF9DT01QUkVTU0VEKQotI2RlZmluZSBHaW5HZXRQb3N0aW5nKGl0dXApCQkJKChQb2ludGVy KSAoKGNoYXIqKShpdHVwKSArIEdpbkdldFBvc3RpbmdPZmZzZXQoaXR1cCkpKQorI2RlZmlu ZSBHaW5HZXRQb3N0aW5nKGl0dXApCQkJKCh2b2lkICopICgoY2hhciopKGl0dXApICsgR2lu R2V0UG9zdGluZ09mZnNldChpdHVwKSkpCiAjZGVmaW5lIEdpbkl0dXBJc0NvbXByZXNzZWQo aXR1cCkJKChHaW5JdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCYoaXR1cCktPnRfdGlkKSAm IEdJTl9JVFVQX0NPTVBSRVNTRUQpICE9IDApCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5kZXggY2NkMmI2NTRkNDUuLjc3ODNkMDdj MTcyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5o CkBAIC01MjQsMTMgKzUyNCw2IEBAIHR5cGVkZWYgdm9pZCAoKnBnX2Z1bmNwdHJfdCkgKHZv aWQpOwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLS8qCi0gKiBQb2ludGVyCi0gKgkJVmFyaWFi bGUgaG9sZGluZyBhZGRyZXNzIG9mIGFueSBtZW1vcnkgcmVzaWRlbnQgb2JqZWN0LgotICoJ CShvYnNvbGVzY2VudDsgdXNlIHZvaWQgKiBvciBjaGFyICopCi0gKi8KLXR5cGVkZWYgdm9p ZCAqUG9pbnRlcjsKLQogLyogSGlzdG9yaWNhbCBuYW1lcyBmb3IgdHlwZXMgaW4gPHN0ZGlu dC5oPi4gKi8KIHR5cGVkZWYgaW50OF90IGludDg7CiB0eXBlZGVmIGludDE2X3QgaW50MTY7 Ci0tIAoyLjUxLjAKCg== --------------dJcdxdddE8cLUakjUM2utDcx--