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 1wCCXM-001ky0-0A for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 08:20:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wCCXK-005UNK-1S for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 08:20:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wCCXK-005UM4-0L for pgsql-hackers@lists.postgresql.org; Mon, 13 Apr 2026 08:20:51 +0000 Received: from mail-oo1-xc33.google.com ([2607:f8b0:4864:20::c33]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wCCXJ-00000000nnd-094Q for pgsql-hackers@lists.postgresql.org; Mon, 13 Apr 2026 08:20:50 +0000 Received: by mail-oo1-xc33.google.com with SMTP id 006d021491bc7-67c1b8b1f96so1947593eaf.2 for ; Mon, 13 Apr 2026 01:20:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776068447; cv=none; d=google.com; s=arc-20240605; b=aJag/PwdpYArdqk9Hp0SPnEu9KwwNk9uqR9qeTf83zfEiikOMF138B3w7Auy96wFjR gKpzX0oct7XahGIaOXD818xiSZ0rEPrNwR7RJs7bvuL//CP/rEMWZbbDPOoEXVrkzQOy WUMgYW3AJagT+t/8aQTQx+7oWAV4Ul7n4YBUxJ1NXx7cku4obC8p4wsZYySDuRcD4bdr ZurkVn0d+L54GAa+A+YZIW//4SoZneYT1fTYeVhtHu047UnMtQurK/XzB9bRzdFTanfX 5Ou/gglNnHwWmG/ICZ0BNKEwBe/AjcqCCkJQGjXTLqRDIGLvCur6HpNcObikfF1qXKmD ojFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=VQqobjYbaalvvPbT50fHakDkYjZSD3879FbYy7uhOX4=; fh=ORUehqFIGv/mdKRsoInON0dFq8SbCpBKD6/wQO0/6Wc=; b=ANxHiuQObUaYYg6fuKY6mzCNfpHpI3NUoSxVvuTMQuhlQTjvIOCBnYpCtQIPAHUqKN HOuG/wGqG9ShanoSUpkPRqkYXpK9FS3fuCEchjou3gfXNpfO/nE3aVUAO43tTsuqeH9I 1VOiSCMRMDykEGahxzUtGsBx4cvv+vYp1XEbliUvV4PoWCZi72TAwNXbG0FFDPTfVOYA T3If7q2lW0cnV7Iy0An+gkw28hpj7L5uplbZQYFP26PeJDNFSnYL3Q7V7UJvspyOEBwl p1IScib4IeLBwLblBbN8S7Hw9bTahGWlRvgs+j/GLO8ZaoJUejq/sXsIYsu4ch1X53hE O5lA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776068447; x=1776673247; darn=lists.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=VQqobjYbaalvvPbT50fHakDkYjZSD3879FbYy7uhOX4=; b=ZXWhVQxxcVKXclLPgguanHDRW5Ht2/LFqSnQ6/7xAWpLuD/PkrJ0yjRAC1NreyfzHB XDgemf8hwCAhu/B9j/UjFfoo747r3JyWI6G+ROXdTwhDtFcbZ1aC0NzGHT9Q6wMPNPUW BSmNDN/lim22zhWJc5+4Xn+iw884iC4RtyAAFuvo51p+tkjMCFaOPfrdtHTpfrpK+YLG 6YbQoxbHzLNqQO+X8FrnWnu+65WfMG5gH+gI6CkJ3rTJlIaJFCw5GQTPbAFxnv9pBvmz 9cmU+PphjAkj+Ms1wCAu4iV3X7YyAT5HfApkAATYW3nOyS3eepsEWADo+zMketdd+y4F doLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776068447; x=1776673247; 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=VQqobjYbaalvvPbT50fHakDkYjZSD3879FbYy7uhOX4=; b=XWCjYaP4Ve8n8VT5sLW5yNJ0pvMnrzSVXR5pfNXAp6r2wKdCes88Et6sFtXYpXxZuA mVrYzFOQHrBFhoEjXrsU5QvQjIPjZpMqhFSZNrqQXleg+IfNqgIgH2YMXsq5eVIfTKS9 RJgD/etl/fKaJVqBN22L6CpNF+1DVGVBxjomI5VT5TdCioxVqKr1t/4BKzNPSmrFZKnD AeBpT3UcSJR9Lx74QkRa73aMCTozQNsyGu/Wqq61pJbql3TReGSuFchBIMXgiVVpG3u3 J/NzoG3vYSdMsnonqfytIelHDRyvoIFiaaDhmGKQzkuxN1jpU8YgO+QcBN8z7dbilt5T IENg== X-Forwarded-Encrypted: i=1; AJvYcCUI2e+865+BMEZM+1r2mHTQVebeM1M+7gUQHB0ANfdRRkJ6uhndip6ce7e8A2MYUFb/Dns1n+9ihoFIyveP@lists.postgresql.org X-Gm-Message-State: AOJu0YzJjZ4BMezMPacT4LX6qTqp4jszGX8LY6kgcmhIjeDkG2jetq+s D4OwkE4xBQY1GFhh3f9j6PZD4R8T8/2HCFI1t1eu590suwmAu+VB6OF+3q8yP6swCLLEeE6AYED 83+Uim4++efdQdK+CxjWj2L4SXLAd1V8= X-Gm-Gg: AeBDiet0iJrbnItg9Y5FRhEMuDBwUyNaNO9oqDWZMbgbsEu0PLpIII/XwdnXWW4XPSa D6nVfXmY2t/8L66FYmIMQh2+pnlgBEyP8h9m8GNwYU/4sOSNnderRIGY+rzVFxBOtzIoMOCN8aY K88Lo9br34KF2roFd+zyCmfLLxYt4fMV6XiwYk3Ms/FWROzWo7H/rFvqaJFBDNDbFARfUwQDDAw Txn8Z17I7rP3aLNZuFrtHwOWxsg9H0hikr9FRDfFFRgr3XRUl7h/lvj6o86wA1mnYwLxEx1xSs7 /xlFi33z X-Received: by 2002:a05:6820:198c:b0:67e:1dee:db5 with SMTP id 006d021491bc7-68be5872859mr6814771eaf.12.1776068446807; Mon, 13 Apr 2026 01:20:46 -0700 (PDT) MIME-Version: 1.0 References: <22B4A33A-99F3-46F5-BE0C-426A9E1D9ABA@gmail.com> In-Reply-To: <22B4A33A-99F3-46F5-BE0C-426A9E1D9ABA@gmail.com> From: Richard Guo Date: Mon, 13 Apr 2026 17:20:35 +0900 X-Gm-Features: AQROBzC4vk3TrmgYAMhYBUuSQK0LX2-GHA6YHt9KMFKohin3GpRaZUATMLKfLZw Message-ID: Subject: Re: Bug: Rule actions see wrong values for generated columns (NEW.gen reads OLD value) To: Chao Li Cc: SATYANARAYANA NARLAPURAM , PostgreSQL Hackers , Peter Eisentraut Content-Type: multipart/mixed; boundary="000000000000de805b064f5328f2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000de805b064f5328f2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Apr 13, 2026 at 4:21=E2=80=AFPM Chao Li wr= ote: > I think the issue is that rewriteTargetListIU() removes generated columns= from the target list, as described by this comment: > Later, when the rule action is rewritten, ReplaceVarsFromTargetList() can= not find a target list entry for NEW.gen. For UPDATE rules, the missing NEW= column is handled with REPLACEVARS_CHANGE_VARNO, so it falls back to refer= encing the original target relation row, which gives the old value. I came to the same conclusion. > One possible fix is to build a new target list that adds generated column= s back when there are rules to fire. I tried the solution locally with some= quick and dirty code and it seems to fix both stored and virtual generated= columns for me. I think a simpler fix might be to expand generated column references in the NEW relation to their generation expressions before ReplaceVarsFromTargetList resolves NEW references, so that the base column Vars within the expressions can be correctly resolved. Something like attached. - Richard --000000000000de805b064f5328f2 Content-Type: application/octet-stream; name="v1-0001-Fix-incorrect-NEW-references-to-generated-columns.patch" Content-Disposition: attachment; filename="v1-0001-Fix-incorrect-NEW-references-to-generated-columns.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnwxabli0 RnJvbSA3Y2MyOWZhZjc3NWIyMzY4ZDQzODE4NTZkNmY4NTNkZjAxYWIwMWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAxMyBBcHIgMjAyNiAxNjo1NDoyMyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjFd IEZpeCBpbmNvcnJlY3QgTkVXIHJlZmVyZW5jZXMgdG8gZ2VuZXJhdGVkIGNvbHVtbnMgaW4gcnVs ZQogYWN0aW9ucwoKLS0tCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgICAg ICAgICAgfCA3NSArKysrKysrKysrKysrKy0tLS0tCiAuLi4vcmVncmVzcy9leHBlY3RlZC9nZW5l cmF0ZWRfc3RvcmVkLm91dCAgICAgfCAxOCArKysrKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvZ2Vu ZXJhdGVkX3ZpcnR1YWwub3V0ICAgIHwgMTggKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dl bmVyYXRlZF9zdG9yZWQuc3FsICAgICB8IDEzICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dl bmVyYXRlZF92aXJ0dWFsLnNxbCAgICB8IDEzICsrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTE4IGlu c2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl d3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRs ZXIuYwppbmRleCAwMjFjNzNmMWI2Ny4uMGJhOTkzMWIyZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jl d3JpdGVIYW5kbGVyLmMKQEAgLTk4LDcgKzk4LDggQEAgc3RhdGljIExpc3QgKm1hdGNoTG9ja3Mo Q21kVHlwZSBldmVudCwgUmVsYXRpb24gcmVsYXRpb24sCiBzdGF0aWMgUXVlcnkgKmZpcmVSSVJy dWxlcyhRdWVyeSAqcGFyc2V0cmVlLCBMaXN0ICphY3RpdmVSSVJzKTsKIHN0YXRpYyBCaXRtYXBz ZXQgKmFkanVzdF92aWV3X2NvbHVtbl9zZXQoQml0bWFwc2V0ICpjb2xzLCBMaXN0ICp0YXJnZXRs aXN0KTsKIHN0YXRpYyBOb2RlICpleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW50ZXJuYWwoTm9k ZSAqbm9kZSwgUmVsYXRpb24gcmVsLCBpbnQgcnRfaW5kZXgsCi0JCQkJCQkJCQkJCSAgIFJhbmdl VGJsRW50cnkgKnJ0ZSwgaW50IHJlc3VsdF9yZWxhdGlvbik7CisJCQkJCQkJCQkJCSAgIFJhbmdl VGJsRW50cnkgKnJ0ZSwgaW50IHJlc3VsdF9yZWxhdGlvbiwKKwkJCQkJCQkJCQkJICAgYm9vbCBp bmNsdWRlX3N0b3JlZCk7CiAKIAogLyoKQEAgLTY0MiwxMSArNjQzLDMzIEBAIHJld3JpdGVSdWxl QWN0aW9uKFF1ZXJ5ICpwYXJzZXRyZWUsCiAJaWYgKChldmVudCA9PSBDTURfSU5TRVJUIHx8IGV2 ZW50ID09IENNRF9VUERBVEUpICYmCiAJCXN1Yl9hY3Rpb24tPmNvbW1hbmRUeXBlICE9IENNRF9V VElMSVRZKQogCXsKKwkJUmFuZ2VUYmxFbnRyeSAqbmV3X3J0ZSA9IHJ0X2ZldGNoKG5ld192YXJu bywgc3ViX2FjdGlvbi0+cnRhYmxlKTsKKwkJUmVsYXRpb24JbmV3X3JlbDsKKworCQkvKgorCQkg KiBGaXJzdCwgZXhwYW5kIGFueSBnZW5lcmF0ZWQgY29sdW1uIHJlZmVyZW5jZXMgaW4gdGhlIE5F VyByZWxhdGlvbi4KKwkJICogVGhpcyBtdXN0IGhhcHBlbiBiZWZvcmUgUmVwbGFjZVZhcnNGcm9t VGFyZ2V0TGlzdCwgYmVjYXVzZSB0aGUKKwkJICogcXVlcnkncyB0YXJnZXQgbGlzdCB3b24ndCBj b250YWluIGVudHJpZXMgZm9yIGdlbmVyYXRlZCBjb2x1bW5zCisJCSAqICh0aGV5IGFyZSByZW1v dmVkIGJ5IHJld3JpdGVUYXJnZXRMaXN0SVUpLiAgV2l0aG91dCB0aGlzIHN0ZXAsCisJCSAqIFJl cGxhY2VWYXJzRnJvbVRhcmdldExpc3Qgd291bGQgZmFsbCB0aHJvdWdoIHRvCisJCSAqIFJFUExB Q0VWQVJTX0NIQU5HRV9WQVJOTyAoZm9yIFVQREFURSkgb3IKKwkJICogUkVQTEFDRVZBUlNfU1VC U1RJVFVURV9OVUxMIChmb3IgSU5TRVJUKSwgcHJvZHVjaW5nIHdyb25nIHJlc3VsdHMKKwkJICog d2hlbiB0aGUgZ2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRzIG9uIGNvbHVtbnMgYmVpbmcgbW9kaWZp ZWQuCisJCSAqLworCQluZXdfcmVsID0gcmVsYXRpb25fb3BlbihuZXdfcnRlLT5yZWxpZCwgTm9M b2NrKTsKKwkJc3ViX2FjdGlvbiA9IChRdWVyeSAqKQorCQkJZXhwYW5kX2dlbmVyYXRlZF9jb2x1 bW5zX2ludGVybmFsKChOb2RlICopIHN1Yl9hY3Rpb24sCisJCQkJCQkJCQkJCSAgbmV3X3JlbCwg bmV3X3Zhcm5vLAorCQkJCQkJCQkJCQkgIG5ld19ydGUsCisJCQkJCQkJCQkJCSAgc3ViX2FjdGlv bi0+cmVzdWx0UmVsYXRpb24sCisJCQkJCQkJCQkJCSAgdHJ1ZSk7CisJCXJlbGF0aW9uX2Nsb3Nl KG5ld19yZWwsIE5vTG9jayk7CisKIAkJc3ViX2FjdGlvbiA9IChRdWVyeSAqKQogCQkJUmVwbGFj ZVZhcnNGcm9tVGFyZ2V0TGlzdCgoTm9kZSAqKSBzdWJfYWN0aW9uLAogCQkJCQkJCQkJICBuZXdf dmFybm8sCiAJCQkJCQkJCQkgIDAsCi0JCQkJCQkJCQkgIHJ0X2ZldGNoKG5ld192YXJubywgc3Vi X2FjdGlvbi0+cnRhYmxlKSwKKwkJCQkJCQkJCSAgbmV3X3J0ZSwKIAkJCQkJCQkJCSAgcGFyc2V0 cmVlLT50YXJnZXRMaXN0LAogCQkJCQkJCQkJICBzdWJfYWN0aW9uLT5yZXN1bHRSZWxhdGlvbiwK IAkJCQkJCQkJCSAgKGV2ZW50ID09IENNRF9VUERBVEUpID8KQEAgLTQ1MzAsMjggKzQ1NTMsMzgg QEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzLCBp bnQgb3JpZ19ydF9sZW5ndGgsCiAKIAogLyoKLSAqIEV4cGFuZCB2aXJ0dWFsIGdlbmVyYXRlZCBj b2x1bW5zCisgKiBFeHBhbmQgZ2VuZXJhdGVkIGNvbHVtbnMKICAqCi0gKiBJZiB0aGUgdGFibGUg Y29udGFpbnMgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucywgYnVpbGQgYSB0YXJnZXQgbGlzdAot ICogY29udGFpbmluZyB0aGUgZXhwYW5kZWQgZXhwcmVzc2lvbnMgYW5kIHVzZSBSZXBsYWNlVmFy c0Zyb21UYXJnZXRMaXN0KCkgdG8KLSAqIGRvIHRoZSByZXBsYWNlbWVudHMuCisgKiBJZiB0aGUg dGFibGUgY29udGFpbnMgZ2VuZXJhdGVkIGNvbHVtbnMsIGJ1aWxkIGEgdGFyZ2V0IGxpc3QgY29u dGFpbmluZyB0aGUKKyAqIGV4cGFuZGVkIGV4cHJlc3Npb25zIGFuZCB1c2UgUmVwbGFjZVZhcnNG cm9tVGFyZ2V0TGlzdCgpIHRvIGRvIHRoZQorICogcmVwbGFjZW1lbnRzLgogICoKICAqIFZhcnMg bWF0Y2hpbmcgcnRfaW5kZXggYXQgdGhlIGN1cnJlbnQgcXVlcnkgbGV2ZWwgYXJlIHJlcGxhY2Vk IGJ5IHRoZQotICogdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zIGZyb20gcmVs LCBpZiB0aGVyZSBhcmUgYW55LgorICogZ2VuZXJhdGVkIGNvbHVtbiBleHByZXNzaW9ucyBmcm9t IHJlbCwgaWYgdGhlcmUgYXJlIGFueS4KICAqCiAgKiBUaGUgY2FsbGVyIG11c3QgYWxzbyBwcm92 aWRlIHJ0ZSwgdGhlIFJURSBkZXNjcmliaW5nIHRoZSB0YXJnZXQgcmVsYXRpb24sCiAgKiBpbiBv cmRlciB0byBoYW5kbGUgYW55IHdob2xlLXJvdyBWYXJzIHJlZmVyZW5jaW5nIHRoZSB0YXJnZXQs IGFuZAogICogcmVzdWx0X3JlbGF0aW9uLCB0aGUgaW5kZXggb2YgdGhlIHJlc3VsdCByZWxhdGlv biwgaWYgdGhpcyBpcyBwYXJ0IG9mIGFuCiAgKiBJTlNFUlQvVVBEQVRFL0RFTEVURS9NRVJHRSBx dWVyeS4KKyAqCisgKiBJZiBpbmNsdWRlX3N0b3JlZCBpcyBmYWxzZSwgb25seSB2aXJ0dWFsIGdl bmVyYXRlZCBjb2x1bW5zIGFyZSBleHBhbmRlZC4KKyAqIElmIGluY2x1ZGVfc3RvcmVkIGlzIHRy dWUsIGJvdGggc3RvcmVkIGFuZCB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGFyZQorICogZXhw YW5kZWQuICBUaGUgbGF0dGVyIGlzIG5lZWRlZCB3aGVuIGV4cGFuZGluZyBORVcgcmVmZXJlbmNl cyBpbiBydWxlCisgKiBhY3Rpb25zLCBiZWNhdXNlIHJld3JpdGVUYXJnZXRMaXN0SVUgcmVtb3Zl cyBib3RoIHR5cGVzIGZyb20gdGhlIHRhcmdldAorICogbGlzdCwgYW5kIGJvdGggbmVlZCB0byBi ZSBleHBhbmRlZCBiZWZvcmUgUmVwbGFjZVZhcnNGcm9tVGFyZ2V0TGlzdCBjYW4KKyAqIGNvcnJl Y3RseSByZXNvbHZlIHRoZW0uCiAgKi8KIHN0YXRpYyBOb2RlICoKIGV4cGFuZF9nZW5lcmF0ZWRf Y29sdW1uc19pbnRlcm5hbChOb2RlICpub2RlLCBSZWxhdGlvbiByZWwsIGludCBydF9pbmRleCwK LQkJCQkJCQkJICBSYW5nZVRibEVudHJ5ICpydGUsIGludCByZXN1bHRfcmVsYXRpb24pCisJCQkJ CQkJCSAgUmFuZ2VUYmxFbnRyeSAqcnRlLCBpbnQgcmVzdWx0X3JlbGF0aW9uLAorCQkJCQkJCQkg IGJvb2wgaW5jbHVkZV9zdG9yZWQpCiB7CiAJVHVwbGVEZXNjCXR1cGRlc2M7CiAKIAl0dXBkZXNj ID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwotCWlmICh0dXBkZXNjLT5jb25zdHIgJiYgdHVwZGVz Yy0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3ZpcnR1YWwpCisJaWYgKHR1cGRlc2MtPmNvbnN0ciAm JgorCQkodHVwZGVzYy0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3ZpcnR1YWwgfHwKKwkJIChpbmNs dWRlX3N0b3JlZCAmJiB0dXBkZXNjLT5jb25zdHItPmhhc19nZW5lcmF0ZWRfc3RvcmVkKSkpCiAJ ewogCQlMaXN0CSAgICp0bGlzdCA9IE5JTDsKIApAQCAtNDU1OSw3ICs0NTkyLDggQEAgZXhwYW5k X2dlbmVyYXRlZF9jb2x1bW5zX2ludGVybmFsKE5vZGUgKm5vZGUsIFJlbGF0aW9uIHJlbCwgaW50 IHJ0X2luZGV4LAogCQl7CiAJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0 cih0dXBkZXNjLCBpKTsKIAotCQkJaWYgKGF0dHItPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVf R0VORVJBVEVEX1ZJUlRVQUwpCisJCQlpZiAoYXR0ci0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVU RV9HRU5FUkFURURfVklSVFVBTCB8fAorCQkJCShpbmNsdWRlX3N0b3JlZCAmJiBhdHRyLT5hdHRn ZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpKQogCQkJewogCQkJCU5vZGUJ ICAgKmRlZmV4cHI7CiAJCQkJVGFyZ2V0RW50cnkgKnRlOwpAQCAtNDU3MiwxMiArNDYwNiwxMSBA QCBleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW50ZXJuYWwoTm9kZSAqbm9kZSwgUmVsYXRpb24g cmVsLCBpbnQgcnRfaW5kZXgsCiAJCQl9CiAJCX0KIAotCQlBc3NlcnQobGlzdF9sZW5ndGgodGxp c3QpID4gMCk7Ci0KLQkJbm9kZSA9IFJlcGxhY2VWYXJzRnJvbVRhcmdldExpc3Qobm9kZSwgcnRf aW5kZXgsIDAsIHJ0ZSwgdGxpc3QsCi0JCQkJCQkJCQkJIHJlc3VsdF9yZWxhdGlvbiwKLQkJCQkJ CQkJCQkgUkVQTEFDRVZBUlNfQ0hBTkdFX1ZBUk5PLCBydF9pbmRleCwKLQkJCQkJCQkJCQkgTlVM TCk7CisJCWlmICh0bGlzdCAhPSBOSUwpCisJCQlub2RlID0gUmVwbGFjZVZhcnNGcm9tVGFyZ2V0 TGlzdChub2RlLCBydF9pbmRleCwgMCwgcnRlLCB0bGlzdCwKKwkJCQkJCQkJCQkJIHJlc3VsdF9y ZWxhdGlvbiwKKwkJCQkJCQkJCQkJIFJFUExBQ0VWQVJTX0NIQU5HRV9WQVJOTywgcnRfaW5kZXgs CisJCQkJCQkJCQkJCSBOVUxMKTsKIAl9CiAKIAlyZXR1cm4gbm9kZTsKQEAgLTQ2MDQsNyArNDYz Nyw4IEBAIGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKE5vZGUgKm5vZGUsIFJlbGF0 aW9uIHJlbCwgaW50IHJ0X2luZGV4KQogCQlydGUtPnJ0ZWtpbmQgPSBSVEVfUkVMQVRJT047CiAJ CXJ0ZS0+cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CiAKLQkJbm9kZSA9IGV4cGFuZF9n ZW5lcmF0ZWRfY29sdW1uc19pbnRlcm5hbChub2RlLCByZWwsIHJ0X2luZGV4LCBydGUsIDApOwor CQlub2RlID0gZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2ludGVybmFsKG5vZGUsIHJlbCwgcnRf aW5kZXgsIHJ0ZSwgMCwKKwkJCQkJCQkJCQkJCSBmYWxzZSk7CiAJfQogCiAJcmV0dXJuIG5vZGU7 CkBAIC00NjIzLDggKzQ2NTcsMTEgQEAgYnVpbGRfZ2VuZXJhdGlvbl9leHByZXNzaW9uKFJlbGF0 aW9uIHJlbCwgaW50IGF0dHJubykKIAlOb2RlCSAgICpkZWZleHByOwogCU9pZAkJCWF0dGNvbGxp ZDsKIAotCUFzc2VydChyZF9hdHQtPmNvbnN0ciAmJiByZF9hdHQtPmNvbnN0ci0+aGFzX2dlbmVy YXRlZF92aXJ0dWFsKTsKLQlBc3NlcnQoYXR0X3R1cC0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVU RV9HRU5FUkFURURfVklSVFVBTCk7CisJQXNzZXJ0KHJkX2F0dC0+Y29uc3RyICYmCisJCSAgIChy ZF9hdHQtPmNvbnN0ci0+aGFzX2dlbmVyYXRlZF92aXJ0dWFsIHx8CisJCQlyZF9hdHQtPmNvbnN0 ci0+aGFzX2dlbmVyYXRlZF9zdG9yZWQpKTsKKwlBc3NlcnQoYXR0X3R1cC0+YXR0Z2VuZXJhdGVk ID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCB8fAorCQkgICBhdHRfdHVwLT5hdHRnZW5l cmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpOwogCiAJZGVmZXhwciA9IGJ1aWxk X2NvbHVtbl9kZWZhdWx0KHJlbCwgYXR0cm5vKTsKIAlpZiAoZGVmZXhwciA9PSBOVUxMKQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfc3RvcmVkLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3N0b3JlZC5vdXQKaW5kZXggNDNj ZGRlYWMzNzMuLjM2M2JkN2NjYWQ1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2dlbmVyYXRlZF9zdG9yZWQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Z2VuZXJhdGVkX3N0b3JlZC5vdXQKQEAgLTE1OTgsNiArMTU5OCwyNCBAQCBDUkVBVEUgVEFCTEUg Z3Rlc3QyOGIgKExJS0UgZ3Rlc3QyOGEgSU5DTFVESU5HIEdFTkVSQVRFRCk7CiAgYyAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCiAgeCAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYiAqIDIpIHN0b3JlZAog CistLSBydWxlcworLS0gTkVXLmIgaW4gYSBydWxlIGFjdGlvbiBzaG91bGQgcmVmbGVjdCB0aGUg Z2VuZXJhdGVkIGNvbHVtbidzIG5ldyB2YWx1ZQorQ1JFQVRFIFRBQkxFIGd0ZXN0X3J1bGUgKGEg aW50LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgU1RPUkVEKTsKK0NSRUFURSBU QUJMRSBndGVzdF9ydWxlX2xvZyAob3AgdGV4dCwgb2xkX2IgaW50LCBuZXdfYiBpbnQpOworQ1JF QVRFIFJVTEUgZ3Rlc3RfcnVsZV91cGQgQVMgT04gVVBEQVRFIFRPIGd0ZXN0X3J1bGUKKyAgRE8g QUxTTyBJTlNFUlQgSU5UTyBndGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdVUEQnLCBPTEQuYiwgTkVX LmIpOworQ1JFQVRFIFJVTEUgZ3Rlc3RfcnVsZV9pbnMgQVMgT04gSU5TRVJUIFRPIGd0ZXN0X3J1 bGUKKyAgRE8gQUxTTyBJTlNFUlQgSU5UTyBndGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdJTlMnLCBO VUxMLCBORVcuYik7CitJTlNFUlQgSU5UTyBndGVzdF9ydWxlIChhKSBWQUxVRVMgKDEpOworVVBE QVRFIGd0ZXN0X3J1bGUgU0VUIGEgPSAxMDsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfcnVsZV9sb2c7 Cisgb3AgIHwgb2xkX2IgfCBuZXdfYiAKKy0tLS0tKy0tLS0tLS0rLS0tLS0tLQorIElOUyB8ICAg ICAgIHwgICAgIDIKKyBVUEQgfCAgICAgMiB8ICAgIDIwCisoMiByb3dzKQorCitEUk9QIFRBQkxF IGd0ZXN0X3J1bGUsIGd0ZXN0X3J1bGVfbG9nOwogLS0gc2FuaXR5IGNoZWNrIG9mIHN5c3RlbSBj YXRhbG9nCiBTRUxFQ1QgYXR0cmVsaWQsIGF0dG5hbWUsIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRnZW5lcmF0ZWQgTk9UIElOICgnJywgJ3MnLCAndicpOwogIGF0dHJl bGlkIHwgYXR0bmFtZSB8IGF0dGdlbmVyYXRlZCAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQKaW5kZXggMjM0MDYxZmExZjcuLjViYmQyZjY4NGNl IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFs Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91 dApAQCAtMTUyMCw2ICsxNTIwLDI0IEBAIENSRUFURSBUQUJMRSBndGVzdDI4YiAoTElLRSBndGVz dDI4YSBJTkNMVURJTkcgR0VORVJBVEVEKTsKICBjICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKICB4ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAg fCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChiICogMikKIAorLS0gcnVsZXMKKy0tIE5FVy5iIGluIGEg cnVsZSBhY3Rpb24gc2hvdWxkIHJlZmxlY3QgdGhlIGdlbmVyYXRlZCBjb2x1bW4ncyBuZXcgdmFs dWUKK0NSRUFURSBUQUJMRSBndGVzdF9ydWxlIChhIGludCwgYiBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAoYSAqIDIpIFNUT1JFRCk7CitDUkVBVEUgVEFCTEUgZ3Rlc3RfcnVsZV9sb2cgKG9wIHRl eHQsIG9sZF9iIGludCwgbmV3X2IgaW50KTsKK0NSRUFURSBSVUxFIGd0ZXN0X3J1bGVfdXBkIEFT IE9OIFVQREFURSBUTyBndGVzdF9ydWxlCisgIERPIEFMU08gSU5TRVJUIElOVE8gZ3Rlc3RfcnVs ZV9sb2cgVkFMVUVTICgnVVBEJywgT0xELmIsIE5FVy5iKTsKK0NSRUFURSBSVUxFIGd0ZXN0X3J1 bGVfaW5zIEFTIE9OIElOU0VSVCBUTyBndGVzdF9ydWxlCisgIERPIEFMU08gSU5TRVJUIElOVE8g Z3Rlc3RfcnVsZV9sb2cgVkFMVUVTICgnSU5TJywgTlVMTCwgTkVXLmIpOworSU5TRVJUIElOVE8g Z3Rlc3RfcnVsZSAoYSkgVkFMVUVTICgxKTsKK1VQREFURSBndGVzdF9ydWxlIFNFVCBhID0gMTA7 CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X3J1bGVfbG9nOworIG9wICB8IG9sZF9iIHwgbmV3X2IgCist LS0tLSstLS0tLS0tKy0tLS0tLS0KKyBJTlMgfCAgICAgICB8ICAgICAyCisgVVBEIHwgICAgIDIg fCAgICAyMAorKDIgcm93cykKKworRFJPUCBUQUJMRSBndGVzdF9ydWxlLCBndGVzdF9ydWxlX2xv ZzsKIC0tIHNhbml0eSBjaGVjayBvZiBzeXN0ZW0gY2F0YWxvZwogU0VMRUNUIGF0dHJlbGlkLCBh dHRuYW1lLCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0Z2VuZXJhdGVk IE5PVCBJTiAoJycsICdzJywgJ3YnKTsKICBhdHRyZWxpZCB8IGF0dG5hbWUgfCBhdHRnZW5lcmF0 ZWQgCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfc3RvcmVkLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF9zdG9yZWQuc3FsCmluZGV4IDI4MDAy MWQ3OWI3Li4zMjY1YTFlODhjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2Vu ZXJhdGVkX3N0b3JlZC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3N0 b3JlZC5zcWwKQEAgLTc5OCw2ICs3OTgsMTkgQEAgQ1JFQVRFIFRBQkxFIGd0ZXN0MjhiIChMSUtF IGd0ZXN0MjhhIElOQ0xVRElORyBHRU5FUkFURUQpOwogCiBcZCBndGVzdDI4KgogCistLSBydWxl cworLS0gTkVXLmIgaW4gYSBydWxlIGFjdGlvbiBzaG91bGQgcmVmbGVjdCB0aGUgZ2VuZXJhdGVk IGNvbHVtbidzIG5ldyB2YWx1ZQorQ1JFQVRFIFRBQkxFIGd0ZXN0X3J1bGUgKGEgaW50LCBiIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgU1RPUkVEKTsKK0NSRUFURSBUQUJMRSBndGVz dF9ydWxlX2xvZyAob3AgdGV4dCwgb2xkX2IgaW50LCBuZXdfYiBpbnQpOworQ1JFQVRFIFJVTEUg Z3Rlc3RfcnVsZV91cGQgQVMgT04gVVBEQVRFIFRPIGd0ZXN0X3J1bGUKKyAgRE8gQUxTTyBJTlNF UlQgSU5UTyBndGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdVUEQnLCBPTEQuYiwgTkVXLmIpOworQ1JF QVRFIFJVTEUgZ3Rlc3RfcnVsZV9pbnMgQVMgT04gSU5TRVJUIFRPIGd0ZXN0X3J1bGUKKyAgRE8g QUxTTyBJTlNFUlQgSU5UTyBndGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdJTlMnLCBOVUxMLCBORVcu Yik7CitJTlNFUlQgSU5UTyBndGVzdF9ydWxlIChhKSBWQUxVRVMgKDEpOworVVBEQVRFIGd0ZXN0 X3J1bGUgU0VUIGEgPSAxMDsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfcnVsZV9sb2c7CitEUk9QIFRB QkxFIGd0ZXN0X3J1bGUsIGd0ZXN0X3J1bGVfbG9nOworCiAKIC0tIHNhbml0eSBjaGVjayBvZiBz eXN0ZW0gY2F0YWxvZwogU0VMRUNUIGF0dHJlbGlkLCBhdHRuYW1lLCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0Z2VuZXJhdGVkIE5PVCBJTiAoJycsICdzJywgJ3YnKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbAppbmRleCA0ZDlhZDNj NWRjYS4uY2QxY2Q5Mzg5NzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVy YXRlZF92aXJ0dWFsLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmly dHVhbC5zcWwKQEAgLTgxMSw2ICs4MTEsMTkgQEAgQ1JFQVRFIFRBQkxFIGd0ZXN0MjhiIChMSUtF IGd0ZXN0MjhhIElOQ0xVRElORyBHRU5FUkFURUQpOwogCiBcZCBndGVzdDI4KgogCistLSBydWxl cworLS0gTkVXLmIgaW4gYSBydWxlIGFjdGlvbiBzaG91bGQgcmVmbGVjdCB0aGUgZ2VuZXJhdGVk IGNvbHVtbidzIG5ldyB2YWx1ZQorQ1JFQVRFIFRBQkxFIGd0ZXN0X3J1bGUgKGEgaW50LCBiIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgU1RPUkVEKTsKK0NSRUFURSBUQUJMRSBndGVz dF9ydWxlX2xvZyAob3AgdGV4dCwgb2xkX2IgaW50LCBuZXdfYiBpbnQpOworQ1JFQVRFIFJVTEUg Z3Rlc3RfcnVsZV91cGQgQVMgT04gVVBEQVRFIFRPIGd0ZXN0X3J1bGUKKyAgRE8gQUxTTyBJTlNF UlQgSU5UTyBndGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdVUEQnLCBPTEQuYiwgTkVXLmIpOworQ1JF QVRFIFJVTEUgZ3Rlc3RfcnVsZV9pbnMgQVMgT04gSU5TRVJUIFRPIGd0ZXN0X3J1bGUKKyAgRE8g QUxTTyBJTlNFUlQgSU5UTyBndGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdJTlMnLCBOVUxMLCBORVcu Yik7CitJTlNFUlQgSU5UTyBndGVzdF9ydWxlIChhKSBWQUxVRVMgKDEpOworVVBEQVRFIGd0ZXN0 X3J1bGUgU0VUIGEgPSAxMDsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfcnVsZV9sb2c7CitEUk9QIFRB QkxFIGd0ZXN0X3J1bGUsIGd0ZXN0X3J1bGVfbG9nOworCiAKIC0tIHNhbml0eSBjaGVjayBvZiBz eXN0ZW0gY2F0YWxvZwogU0VMRUNUIGF0dHJlbGlkLCBhdHRuYW1lLCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0Z2VuZXJhdGVkIE5PVCBJTiAoJycsICdzJywgJ3YnKTsK LS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000de805b064f5328f2--