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 1pDCBS-00069x-2Y for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Jan 2023 22:24:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pDCBQ-0005kw-Ll for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Jan 2023 22:24:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pDCBQ-0005km-8J for pgsql-hackers@lists.postgresql.org; Wed, 04 Jan 2023 22:24:28 +0000 Received: from mail-oi1-x233.google.com ([2607:f8b0:4864:20::233]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pDCBJ-0007yL-9K for pgsql-hackers@postgresql.org; Wed, 04 Jan 2023 22:24:27 +0000 Received: by mail-oi1-x233.google.com with SMTP id i127so30698732oif.8 for ; Wed, 04 Jan 2023 14:24:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=7dJeMcfl9alB4hZ+R6g7sGi7jMXOTjOe/BlTpj20GHo=; b=bbbysVd59noCiAdOPrzYxm3bVnh8EFjOMlMrKnbQniVB1W6+jmRjOO8WOVoqmO1MPc vCBqozsCPRO1fCP05ejj24wDaCfnybWHubnTPl8N8VzNWpr0l/u2+zwJzx+xImd38ipL XFE/bXn6th3XRAIDS19ZDz7p+EGqEIEWupiq8/r0xShJc9F7oouFURy1vCc/IF7dQGYU bLQ+WW/poAI+dk+f05E/+J7iLNFiGJS3VA3gikzb8d0ibYMr3JOeam0OOADLhI36/pnf U1cYR9Z/ZZWozEnVjAtYvOTPlfH7ZwTzR86lBwZxyvtumtuoWFljzIgkbS5JOMWYPShm XYDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7dJeMcfl9alB4hZ+R6g7sGi7jMXOTjOe/BlTpj20GHo=; b=Pf7mzEhHaQ6Qs0GqbAwYmfDS/mgZ5An6Fwp5VpYcRyJ8B85sL/8piFkIb5+KiP7ifu 9wltT0aEpRATlaqsAprpk4rGsWbS3naupigSJ+nbmU8gLdxoDOK1ORU1OSRDiPsc9i5j hUPfweKiHbdmMnZNN+Xmg9y4dqY7Ii82GF6zfuIwCSXDGVKbaf0Zn+qaCyCdLoeBSin0 biCP2Nt01SFdKInYQuTCERwVzinahJDJhgswkzYnWZes1jdFb7iUWgRHbdnbNblChn8C o5+zpXPtXIP5L9Bt5mizwOsX5Adw17HtpzaImQ+KQnWsbSPB0EFCYfi/FcqeMdM1d9Ia ugPg== X-Gm-Message-State: AFqh2kp0I+9DZpleEibY22KYL2mzEp8t06ooOMyAm541Ep+WedvJ9B73 r/JXyn3Hb7O1n2gnuXDdUN7IHq/jeqmYuzpcwvH16AM7 X-Google-Smtp-Source: AMrXdXs+SCXL6VfarkpRfwDV01zdWBa7q7nYuBF419TpTnNvLGoroY0RJoeLWotY17snt+rvdQc63/ZwuVGGkyEQQus= X-Received: by 2002:a05:6870:4248:b0:150:c1d4:4b16 with SMTP id v8-20020a056870424800b00150c1d44b16mr668400oac.259.1672870682626; Wed, 04 Jan 2023 14:18:02 -0800 (PST) MIME-Version: 1.0 References: <1650235.1672694719@sss.pgh.pa.us> In-Reply-To: <1650235.1672694719@sss.pgh.pa.us> From: David Rowley Date: Thu, 5 Jan 2023 11:17:48 +1300 Message-ID: Subject: Re: An oversight in ExecInitAgg for grouping sets To: Tom Lane Cc: Richard Guo , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000cb76c505f1778e0a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cb76c505f1778e0a Content-Type: text/plain; charset="UTF-8" On Tue, 3 Jan 2023 at 10:25, Tom Lane wrote: > The thing that I find really distressing here is that it's been > like this for years and none of our automated testing caught it. > You'd have expected valgrind testing to do so ... but it does not, > because we've never marked that word NOACCESS. Maybe we should > rethink that? It'd require making mcxt.c do some valgrind flag > manipulations so it could access the hdrmask when appropriate. Yeah, that probably could have been improved during the recent change. Here's a patch for it. I'm just doing a final Valgrind run on it now to check for errors. David --000000000000cb76c505f1778e0a Content-Type: text/plain; charset="US-ASCII"; name="valgrind_MemoryChunk.patch" Content-Disposition: attachment; filename="valgrind_MemoryChunk.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lci7zdjp0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9hc2V0LmMKaW5kZXggZWYxMGJiMTY5MC4uMzAxNTFkNTdkNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9hc2V0LmMKQEAgLTE4OCwxNCArMTg4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQWxsb2NCbG9j a0RhdGEKIAljaGFyCSAgICplbmRwdHI7CQkJLyogZW5kIG9mIHNwYWNlIGluIHRoaXMgYmxvY2sg Ki8KIH0JCQlBbGxvY0Jsb2NrRGF0YTsKIAotLyoKLSAqIE9ubHkgdGhlICJoZHJtYXNrIiBmaWVs ZCBzaG91bGQgYmUgYWNjZXNzZWQgb3V0c2lkZSB0aGlzIG1vZHVsZS4KLSAqIFdlIGtlZXAgdGhl IHJlc3Qgb2YgYW4gYWxsb2NhdGVkIGNodW5rJ3MgaGVhZGVyIG1hcmtlZCBOT0FDQ0VTUyB3aGVu IHVzaW5nCi0gKiB2YWxncmluZC4gIEJ1dCBub3RlIHRoYXQgY2h1bmsgaGVhZGVycyB0aGF0IGFy ZSBpbiBhIGZyZWVsaXN0IGFyZSBrZXB0Ci0gKiBhY2Nlc3NpYmxlLCBmb3Igc2ltcGxpY2l0eS4K LSAqLwotI2RlZmluZSBBTExPQ0NIVU5LX1BSSVZBVEVfTEVOCW9mZnNldG9mKE1lbW9yeUNodW5r LCBoZHJtYXNrKQotCiAvKgogICogQWxsb2NQb2ludGVySXNWYWxpZAogICoJCVRydWUgaWZmIHBv aW50ZXIgaXMgdmFsaWQgYWxsb2NhdGlvbiBwb2ludGVyLgpAQCAtNzc3LDggKzc2OSw4IEBAIEFs bG9jU2V0QWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJCVZBTEdSSU5E X01BS0VfTUVNX05PQUNDRVNTKChjaGFyICopIE1lbW9yeUNodW5rR2V0UG9pbnRlcihjaHVuaykg KyBzaXplLAogCQkJCQkJCQkgICBjaHVua19zaXplIC0gc2l6ZSk7CiAKLQkJLyogRGlzYWxsb3cg ZXh0ZXJuYWwgYWNjZXNzIHRvIHByaXZhdGUgcGFydCBvZiBjaHVuayBoZWFkZXIuICovCi0JCVZB TEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBBTExPQ0NIVU5LX1BSSVZBVEVfTEVOKTsK KwkJLyogRGlzYWxsb3cgYWNjZXNzIHRvIHRoZSBjaHVuayBoZWFkZXIuICovCisJCVZBTEdSSU5E X01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBBTExPQ19DSFVOS0hEUlNaKTsKIAogCQlyZXR1cm4g TWVtb3J5Q2h1bmtHZXRQb2ludGVyKGNodW5rKTsKIAl9CkBAIC04MjMsOCArODE1LDggQEAgQWxs b2NTZXRBbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSkKIAkJVkFMR1JJTkRf TUFLRV9NRU1fTk9BQ0NFU1MoKGNoYXIgKikgTWVtb3J5Q2h1bmtHZXRQb2ludGVyKGNodW5rKSAr IHNpemUsCiAJCQkJCQkJCSAgIEdldENodW5rU2l6ZUZyb21GcmVlTGlzdElkeChmaWR4KSAtIHNp emUpOwogCi0JCS8qIERpc2FsbG93IGV4dGVybmFsIGFjY2VzcyB0byBwcml2YXRlIHBhcnQgb2Yg Y2h1bmsgaGVhZGVyLiAqLwotCQlWQUxHUklORF9NQUtFX01FTV9OT0FDQ0VTUyhjaHVuaywgQUxM T0NDSFVOS19QUklWQVRFX0xFTik7CisJCS8qIERpc2FsbG93IGFjY2VzcyB0byB0aGUgY2h1bmsg aGVhZGVyLiAqLworCQlWQUxHUklORF9NQUtFX01FTV9OT0FDQ0VTUyhjaHVuaywgQUxMT0NfQ0hV TktIRFJTWik7CiAKIAkJcmV0dXJuIE1lbW9yeUNodW5rR2V0UG9pbnRlcihjaHVuayk7CiAJfQpA QCAtOTg5LDggKzk4MSw4IEBAIEFsbG9jU2V0QWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBT aXplIHNpemUpCiAJVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoKGNoYXIgKikgTWVtb3J5Q2h1 bmtHZXRQb2ludGVyKGNodW5rKSArIHNpemUsCiAJCQkJCQkJICAgY2h1bmtfc2l6ZSAtIHNpemUp OwogCi0JLyogRGlzYWxsb3cgZXh0ZXJuYWwgYWNjZXNzIHRvIHByaXZhdGUgcGFydCBvZiBjaHVu ayBoZWFkZXIuICovCi0JVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoY2h1bmssIEFMTE9DQ0hV TktfUFJJVkFURV9MRU4pOworCS8qIERpc2FsbG93IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVy LiAqLworCVZBTEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBBTExPQ19DSFVOS0hEUlNa KTsKIAogCXJldHVybiBNZW1vcnlDaHVua0dldFBvaW50ZXIoY2h1bmspOwogfQpAQCAtMTAwNSw4 ICs5OTcsOCBAQCBBbGxvY1NldEZyZWUodm9pZCAqcG9pbnRlcikKIAlBbGxvY1NldAlzZXQ7CiAJ TWVtb3J5Q2h1bmsgKmNodW5rID0gUG9pbnRlckdldE1lbW9yeUNodW5rKHBvaW50ZXIpOwogCi0J LyogQWxsb3cgYWNjZXNzIHRvIHByaXZhdGUgcGFydCBvZiBjaHVuayBoZWFkZXIuICovCi0JVkFM R1JJTkRfTUFLRV9NRU1fREVGSU5FRChjaHVuaywgQUxMT0NDSFVOS19QUklWQVRFX0xFTik7CisJ LyogQWxsb3cgYWNjZXNzIHRvIHRoZSBjaHVuayBoZWFkZXIuICovCisJVkFMR1JJTkRfTUFLRV9N RU1fREVGSU5FRChjaHVuaywgQUxMT0NfQ0hVTktIRFJTWik7CiAKIAlpZiAoTWVtb3J5Q2h1bmtJ c0V4dGVybmFsKGNodW5rKSkKIAl7CkBAIC0xMTE3LDggKzExMDksOCBAQCBBbGxvY1NldFJlYWxs b2Modm9pZCAqcG9pbnRlciwgU2l6ZSBzaXplKQogCVNpemUJCW9sZHNpemU7CiAJaW50CQkJZmlk eDsKIAotCS8qIEFsbG93IGFjY2VzcyB0byBwcml2YXRlIHBhcnQgb2YgY2h1bmsgaGVhZGVyLiAq LwotCVZBTEdSSU5EX01BS0VfTUVNX0RFRklORUQoY2h1bmssIEFMTE9DQ0hVTktfUFJJVkFURV9M RU4pOworCS8qIEFsbG93IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVyLiAqLworCVZBTEdSSU5E X01BS0VfTUVNX0RFRklORUQoY2h1bmssIEFMTE9DX0NIVU5LSERSU1opOwogCiAJaWYgKE1lbW9y eUNodW5rSXNFeHRlcm5hbChjaHVuaykpCiAJewpAQCAtMTE2Niw4ICsxMTU4LDggQEAgQWxsb2NT ZXRSZWFsbG9jKHZvaWQgKnBvaW50ZXIsIFNpemUgc2l6ZSkKIAkJYmxvY2sgPSAoQWxsb2NCbG9j aykgcmVhbGxvYyhibG9jaywgYmxrc2l6ZSk7CiAJCWlmIChibG9jayA9PSBOVUxMKQogCQl7Ci0J CQkvKiBEaXNhbGxvdyBleHRlcm5hbCBhY2Nlc3MgdG8gcHJpdmF0ZSBwYXJ0IG9mIGNodW5rIGhl YWRlci4gKi8KLQkJCVZBTEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBBTExPQ0NIVU5L X1BSSVZBVEVfTEVOKTsKKwkJCS8qIERpc2FsbG93IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVy LiAqLworCQkJVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoY2h1bmssIEFMTE9DX0NIVU5LSERS U1opOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIApAQCAtMTIyMyw4ICsxMjE1LDggQEAgQWxsb2NT ZXRSZWFsbG9jKHZvaWQgKnBvaW50ZXIsIFNpemUgc2l6ZSkKIAkJLyogRW5zdXJlIGFueSBwYWRk aW5nIGJ5dGVzIGFyZSBtYXJrZWQgTk9BQ0NFU1MuICovCiAJCVZBTEdSSU5EX01BS0VfTUVNX05P QUNDRVNTKChjaGFyICopIHBvaW50ZXIgKyBzaXplLCBjaGtzaXplIC0gc2l6ZSk7CiAKLQkJLyog RGlzYWxsb3cgZXh0ZXJuYWwgYWNjZXNzIHRvIHByaXZhdGUgcGFydCBvZiBjaHVuayBoZWFkZXIu ICovCi0JCVZBTEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBBTExPQ0NIVU5LX1BSSVZB VEVfTEVOKTsKKwkJLyogRGlzYWxsb3cgYWNjZXNzIHRvIHRoZSBjaHVuayBoZWFkZXIgLiAqLwor CQlWQUxHUklORF9NQUtFX01FTV9OT0FDQ0VTUyhjaHVuaywgQUxMT0NfQ0hVTktIRFJTWik7CiAK IAkJcmV0dXJuIHBvaW50ZXI7CiAJfQpAQCAtMTI5Niw4ICsxMjg4LDggQEAgQWxsb2NTZXRSZWFs bG9jKHZvaWQgKnBvaW50ZXIsIFNpemUgc2l6ZSkKIAkJVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5F RChwb2ludGVyLCBzaXplKTsKICNlbmRpZgogCi0JCS8qIERpc2FsbG93IGV4dGVybmFsIGFjY2Vz cyB0byBwcml2YXRlIHBhcnQgb2YgY2h1bmsgaGVhZGVyLiAqLwotCQlWQUxHUklORF9NQUtFX01F TV9OT0FDQ0VTUyhjaHVuaywgQUxMT0NDSFVOS19QUklWQVRFX0xFTik7CisJCS8qIERpc2FsbG93 IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVyLiAqLworCQlWQUxHUklORF9NQUtFX01FTV9OT0FD Q0VTUyhjaHVuaywgQUxMT0NfQ0hVTktIRFJTWik7CiAKIAkJcmV0dXJuIHBvaW50ZXI7CiAJfQpA QCAtMTMyMiw4ICsxMzE0LDggQEAgQWxsb2NTZXRSZWFsbG9jKHZvaWQgKnBvaW50ZXIsIFNpemUg c2l6ZSkKIAkJLyogbGVhdmUgaW1tZWRpYXRlbHkgaWYgcmVxdWVzdCB3YXMgbm90IGNvbXBsZXRl ZCAqLwogCQlpZiAobmV3UG9pbnRlciA9PSBOVUxMKQogCQl7Ci0JCQkvKiBEaXNhbGxvdyBleHRl cm5hbCBhY2Nlc3MgdG8gcHJpdmF0ZSBwYXJ0IG9mIGNodW5rIGhlYWRlci4gKi8KLQkJCVZBTEdS SU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBBTExPQ0NIVU5LX1BSSVZBVEVfTEVOKTsKKwkJ CS8qIERpc2FsbG93IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVyLiAqLworCQkJVkFMR1JJTkRf TUFLRV9NRU1fTk9BQ0NFU1MoY2h1bmssIEFMTE9DX0NIVU5LSERSU1opOwogCQkJcmV0dXJuIE5V TEw7CiAJCX0KIApAQCAtMTM2MywxMSArMTM1NSwxNyBAQCBBbGxvY1NldEdldENodW5rQ29udGV4 dCh2b2lkICpwb2ludGVyKQogCUFsbG9jQmxvY2sJYmxvY2s7CiAJQWxsb2NTZXQJc2V0OwogCisJ LyogQWxsb3cgYWNjZXNzIHRvIHRoZSBjaHVuayBoZWFkZXIuICovCisJVkFMR1JJTkRfTUFLRV9N RU1fREVGSU5FRChjaHVuaywgQUxMT0NfQ0hVTktIRFJTWik7CisKIAlpZiAoTWVtb3J5Q2h1bmtJ c0V4dGVybmFsKGNodW5rKSkKIAkJYmxvY2sgPSBFeHRlcm5hbENodW5rR2V0QmxvY2soY2h1bmsp OwogCWVsc2UKIAkJYmxvY2sgPSAoQWxsb2NCbG9jaykgTWVtb3J5Q2h1bmtHZXRCbG9jayhjaHVu ayk7CiAKKwkvKiBEaXNhbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5rIGhlYWRlci4gKi8KKwlWQUxH UklORF9NQUtFX01FTV9OT0FDQ0VTUyhjaHVuaywgQUxMT0NfQ0hVTktIRFJTWik7CisKIAlBc3Nl cnQoQWxsb2NCbG9ja0lzVmFsaWQoYmxvY2spKTsKIAlzZXQgPSBibG9jay0+YXNldDsKIApAQCAt MTM4NSwxNiArMTM4MywyNyBAQCBBbGxvY1NldEdldENodW5rU3BhY2Uodm9pZCAqcG9pbnRlcikK IAlNZW1vcnlDaHVuayAqY2h1bmsgPSBQb2ludGVyR2V0TWVtb3J5Q2h1bmsocG9pbnRlcik7CiAJ aW50CQkJZmlkeDsKIAorCS8qIEFsbG93IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVyLiAqLwor CVZBTEdSSU5EX01BS0VfTUVNX0RFRklORUQoY2h1bmssIEFMTE9DX0NIVU5LSERSU1opOworCiAJ aWYgKE1lbW9yeUNodW5rSXNFeHRlcm5hbChjaHVuaykpCiAJewogCQlBbGxvY0Jsb2NrCWJsb2Nr ID0gRXh0ZXJuYWxDaHVua0dldEJsb2NrKGNodW5rKTsKIAorCQkvKiBEaXNhbGxvdyBhY2Nlc3Mg dG8gdGhlIGNodW5rIGhlYWRlci4gKi8KKwkJVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoY2h1 bmssIEFMTE9DX0NIVU5LSERSU1opOworCiAJCUFzc2VydChBbGxvY0Jsb2NrSXNWYWxpZChibG9j aykpOworCiAJCXJldHVybiBibG9jay0+ZW5kcHRyIC0gKGNoYXIgKikgY2h1bms7CiAJfQogCiAJ ZmlkeCA9IE1lbW9yeUNodW5rR2V0VmFsdWUoY2h1bmspOwogCUFzc2VydChGcmVlTGlzdElkeElz VmFsaWQoZmlkeCkpOworCisJLyogRGlzYWxsb3cgZXh0ZXJuYWwgYWNjZXNzIHRvIHRoZSBjaHVu ayBoZWFkZXIuICovCisJVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoY2h1bmssIEFMTE9DX0NI VU5LSERSU1opOworCiAJcmV0dXJuIEdldENodW5rU2l6ZUZyb21GcmVlTGlzdElkeChmaWR4KSAr IEFMTE9DX0NIVU5LSERSU1o7CiB9CiAKQEAgLTE1NTUsOCArMTU2NCw4IEBAIEFsbG9jU2V0Q2hl Y2soTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCQkJU2l6ZQkJY2hzaXplLAogCQkJCQkJZHNpemU7 CiAKLQkJCS8qIEFsbG93IGFjY2VzcyB0byBwcml2YXRlIHBhcnQgb2YgY2h1bmsgaGVhZGVyLiAq LwotCQkJVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5FRChjaHVuaywgQUxMT0NDSFVOS19QUklWQVRF X0xFTik7CisJCQkvKiBBbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5rIGhlYWRlci4gKi8KKwkJCVZB TEdSSU5EX01BS0VfTUVNX0RFRklORUQoY2h1bmssIEFMTE9DX0NIVU5LSERSU1opOwogCiAJCQlp ZiAoTWVtb3J5Q2h1bmtJc0V4dGVybmFsKGNodW5rKSkKIAkJCXsKQEAgLTE2MDYsMTIgKzE2MTUs OSBAQCBBbGxvY1NldENoZWNrKE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAkJCQllbG9nKFdBUk5J TkcsICJwcm9ibGVtIGluIGFsbG9jIHNldCAlczogZGV0ZWN0ZWQgd3JpdGUgcGFzdCBjaHVuayBl bmQgaW4gYmxvY2sgJXAsIGNodW5rICVwIiwKIAkJCQkJIG5hbWUsIGJsb2NrLCBjaHVuayk7CiAK LQkJCS8qCi0JCQkgKiBJZiBjaHVuayBpcyBhbGxvY2F0ZWQsIGRpc2FsbG93IGV4dGVybmFsIGFj Y2VzcyB0byBwcml2YXRlIHBhcnQKLQkJCSAqIG9mIGNodW5rIGhlYWRlci4KLQkJCSAqLworCQkJ LyogaWYgY2h1bmsgaXMgYWxsb2NhdGVkLCBkaXNhbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5rIGhl YWRlciAqLwogCQkJaWYgKGRzaXplICE9IEludmFsaWRBbGxvY1NpemUpCi0JCQkJVkFMR1JJTkRf TUFLRV9NRU1fTk9BQ0NFU1MoY2h1bmssIEFMTE9DQ0hVTktfUFJJVkFURV9MRU4pOworCQkJCVZB TEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBBTExPQ19DSFVOS0hEUlNaKTsKIAogCQkJ YmxrX2RhdGEgKz0gY2hzaXplOwogCQkJbmNodW5rcysrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL2dlbmVy YXRpb24uYwppbmRleCA5MzgyNTI2NWExLi4zY2M1ZTQ4MWMwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdy L2dlbmVyYXRpb24uYwpAQCAtOTgsMTQgKzk4LDYgQEAgc3RydWN0IEdlbmVyYXRpb25CbG9jawog CWNoYXIJICAgKmVuZHB0cjsJCQkvKiBlbmQgb2Ygc3BhY2UgaW4gdGhpcyBibG9jayAqLwogfTsK IAotLyoKLSAqIE9ubHkgdGhlICJoZHJtYXNrIiBmaWVsZCBzaG91bGQgYmUgYWNjZXNzZWQgb3V0 c2lkZSB0aGlzIG1vZHVsZS4KLSAqIFdlIGtlZXAgdGhlIHJlc3Qgb2YgYW4gYWxsb2NhdGVkIGNo dW5rJ3MgaGVhZGVyIG1hcmtlZCBOT0FDQ0VTUyB3aGVuIHVzaW5nCi0gKiB2YWxncmluZC4gIEJ1 dCBub3RlIHRoYXQgZnJlZWQgY2h1bmsgaGVhZGVycyBhcmUga2VwdCBhY2Nlc3NpYmxlLCBmb3IK LSAqIHNpbXBsaWNpdHkuCi0gKi8KLSNkZWZpbmUgR0VORVJBVElPTkNIVU5LX1BSSVZBVEVfTEVO CW9mZnNldG9mKE1lbW9yeUNodW5rLCBoZHJtYXNrKQotCiAvKgogICogR2VuZXJhdGlvbklzVmFs aWQKICAqCQlUcnVlIGlmZiBzZXQgaXMgdmFsaWQgZ2VuZXJhdGlvbiBzZXQuCkBAIC00MDcsOCAr Mzk5LDggQEAgR2VuZXJhdGlvbkFsbG9jKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6ZSBzaXpl KQogCQlWQUxHUklORF9NQUtFX01FTV9OT0FDQ0VTUygoY2hhciAqKSBNZW1vcnlDaHVua0dldFBv aW50ZXIoY2h1bmspICsgc2l6ZSwKIAkJCQkJCQkJICAgY2h1bmtfc2l6ZSAtIHNpemUpOwogCi0J CS8qIERpc2FsbG93IGV4dGVybmFsIGFjY2VzcyB0byBwcml2YXRlIHBhcnQgb2YgY2h1bmsgaGVh ZGVyLiAqLwotCQlWQUxHUklORF9NQUtFX01FTV9OT0FDQ0VTUyhjaHVuaywgR0VORVJBVElPTkNI VU5LX1BSSVZBVEVfTEVOKTsKKwkJLyogRGlzYWxsb3cgYWNjZXNzIHRvIHRoZSBjaHVuayBoZWFk ZXIuICovCisJCVZBTEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBHZW5lcmF0aW9uX0NI VU5LSERSU1opOwogCiAJCXJldHVybiBNZW1vcnlDaHVua0dldFBvaW50ZXIoY2h1bmspOwogCX0K QEAgLTUyMiw4ICs1MTQsOCBAQCBHZW5lcmF0aW9uQWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0 LCBTaXplIHNpemUpCiAJVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoKGNoYXIgKikgTWVtb3J5 Q2h1bmtHZXRQb2ludGVyKGNodW5rKSArIHNpemUsCiAJCQkJCQkJICAgY2h1bmtfc2l6ZSAtIHNp emUpOwogCi0JLyogRGlzYWxsb3cgZXh0ZXJuYWwgYWNjZXNzIHRvIHByaXZhdGUgcGFydCBvZiBj aHVuayBoZWFkZXIuICovCi0JVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoY2h1bmssIEdFTkVS QVRJT05DSFVOS19QUklWQVRFX0xFTik7CisJLyogRGlzYWxsb3cgYWNjZXNzIHRvIHRoZSBjaHVu ayBoZWFkZXIuICovCisJVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoY2h1bmssIEdlbmVyYXRp b25fQ0hVTktIRFJTWik7CiAKIAlyZXR1cm4gTWVtb3J5Q2h1bmtHZXRQb2ludGVyKGNodW5rKTsK IH0KQEAgLTY2NCw4ICs2NTYsOCBAQCBHZW5lcmF0aW9uRnJlZSh2b2lkICpwb2ludGVyKQogI2Vu ZGlmCiAJfQogCi0JLyogQWxsb3cgYWNjZXNzIHRvIHByaXZhdGUgcGFydCBvZiBjaHVuayBoZWFk ZXIuICovCi0JVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5FRChjaHVuaywgR0VORVJBVElPTkNIVU5L X1BSSVZBVEVfTEVOKTsKKwkvKiBBbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5rIGhlYWRlci4gKi8K KwlWQUxHUklORF9NQUtFX01FTV9ERUZJTkVEKGNodW5rLCBHZW5lcmF0aW9uX0NIVU5LSERSU1op OwogCiAjaWZkZWYgTUVNT1JZX0NPTlRFWFRfQ0hFQ0tJTkcKIAkvKiBUZXN0IGZvciBzb21lb25l IHNjcmliYmxpbmcgb24gdW51c2VkIHNwYWNlIGluIGNodW5rICovCkBAIC03NDQsOCArNzM2LDgg QEAgR2VuZXJhdGlvblJlYWxsb2Modm9pZCAqcG9pbnRlciwgU2l6ZSBzaXplKQogCUdlbmVyYXRp b25Qb2ludGVyIG5ld1BvaW50ZXI7CiAJU2l6ZQkJb2xkc2l6ZTsKIAotCS8qIEFsbG93IGFjY2Vz cyB0byBwcml2YXRlIHBhcnQgb2YgY2h1bmsgaGVhZGVyLiAqLwotCVZBTEdSSU5EX01BS0VfTUVN X0RFRklORUQoY2h1bmssIEdFTkVSQVRJT05DSFVOS19QUklWQVRFX0xFTik7CisJLyogQWxsb3cg YWNjZXNzIHRvIHRoZSBjaHVuayBoZWFkZXIuICovCisJVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5F RChjaHVuaywgR2VuZXJhdGlvbl9DSFVOS0hEUlNaKTsKIAogCWlmIChNZW1vcnlDaHVua0lzRXh0 ZXJuYWwoY2h1bmspKQogCXsKQEAgLTgzMiw4ICs4MjQsOCBAQCBHZW5lcmF0aW9uUmVhbGxvYyh2 b2lkICpwb2ludGVyLCBTaXplIHNpemUpCiAJCVZBTEdSSU5EX01BS0VfTUVNX0RFRklORUQocG9p bnRlciwgc2l6ZSk7CiAjZW5kaWYKIAotCQkvKiBEaXNhbGxvdyBleHRlcm5hbCBhY2Nlc3MgdG8g cHJpdmF0ZSBwYXJ0IG9mIGNodW5rIGhlYWRlci4gKi8KLQkJVkFMR1JJTkRfTUFLRV9NRU1fTk9B Q0NFU1MoY2h1bmssIEdFTkVSQVRJT05DSFVOS19QUklWQVRFX0xFTik7CisJCS8qIERpc2FsbG93 IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVyLiAqLworCQlWQUxHUklORF9NQUtFX01FTV9OT0FD Q0VTUyhjaHVuaywgR2VuZXJhdGlvbl9DSFVOS0hEUlNaKTsKIAogCQlyZXR1cm4gcG9pbnRlcjsK IAl9CkBAIC04NDQsOCArODM2LDggQEAgR2VuZXJhdGlvblJlYWxsb2Modm9pZCAqcG9pbnRlciwg U2l6ZSBzaXplKQogCS8qIGxlYXZlIGltbWVkaWF0ZWx5IGlmIHJlcXVlc3Qgd2FzIG5vdCBjb21w bGV0ZWQgKi8KIAlpZiAobmV3UG9pbnRlciA9PSBOVUxMKQogCXsKLQkJLyogRGlzYWxsb3cgZXh0 ZXJuYWwgYWNjZXNzIHRvIHByaXZhdGUgcGFydCBvZiBjaHVuayBoZWFkZXIuICovCi0JCVZBTEdS SU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBHRU5FUkFUSU9OQ0hVTktfUFJJVkFURV9MRU4p OworCQkvKiBEaXNhbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5rIGhlYWRlci4gKi8KKwkJVkFMR1JJ TkRfTUFLRV9NRU1fTk9BQ0NFU1MoY2h1bmssIEdlbmVyYXRpb25fQ0hVTktIRFJTWik7CiAJCXJl dHVybiBOVUxMOwogCX0KIApAQCAtODgzLDExICs4NzUsMTcgQEAgR2VuZXJhdGlvbkdldENodW5r Q29udGV4dCh2b2lkICpwb2ludGVyKQogCU1lbW9yeUNodW5rICpjaHVuayA9IFBvaW50ZXJHZXRN ZW1vcnlDaHVuayhwb2ludGVyKTsKIAlHZW5lcmF0aW9uQmxvY2sgKmJsb2NrOwogCisJLyogQWxs b3cgYWNjZXNzIHRvIHRoZSBjaHVuayBoZWFkZXIuICovCisJVkFMR1JJTkRfTUFLRV9NRU1fREVG SU5FRChjaHVuaywgR2VuZXJhdGlvbl9DSFVOS0hEUlNaKTsKKwogCWlmIChNZW1vcnlDaHVua0lz RXh0ZXJuYWwoY2h1bmspKQogCQlibG9jayA9IEV4dGVybmFsQ2h1bmtHZXRCbG9jayhjaHVuayk7 CiAJZWxzZQogCQlibG9jayA9IChHZW5lcmF0aW9uQmxvY2sgKikgTWVtb3J5Q2h1bmtHZXRCbG9j ayhjaHVuayk7CiAKKwkvKiBEaXNhbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5rIGhlYWRlci4gKi8K KwlWQUxHUklORF9NQUtFX01FTV9OT0FDQ0VTUyhjaHVuaywgR2VuZXJhdGlvbl9DSFVOS0hEUlNa KTsKKwogCUFzc2VydChHZW5lcmF0aW9uQmxvY2tJc1ZhbGlkKGJsb2NrKSk7CiAJcmV0dXJuICZi bG9jay0+Y29udGV4dC0+aGVhZGVyOwogfQpAQCAtOTAzLDYgKzkwMSw5IEBAIEdlbmVyYXRpb25H ZXRDaHVua1NwYWNlKHZvaWQgKnBvaW50ZXIpCiAJTWVtb3J5Q2h1bmsgKmNodW5rID0gUG9pbnRl ckdldE1lbW9yeUNodW5rKHBvaW50ZXIpOwogCVNpemUJCWNodW5rc2l6ZTsKIAorCS8qIEFsbG93 IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVyLiAqLworCVZBTEdSSU5EX01BS0VfTUVNX0RFRklO RUQoY2h1bmssIEdlbmVyYXRpb25fQ0hVTktIRFJTWik7CisKIAlpZiAoTWVtb3J5Q2h1bmtJc0V4 dGVybmFsKGNodW5rKSkKIAl7CiAJCUdlbmVyYXRpb25CbG9jayAqYmxvY2sgPSBFeHRlcm5hbENo dW5rR2V0QmxvY2soY2h1bmspOwpAQCAtOTEzLDYgKzkxNCw5IEBAIEdlbmVyYXRpb25HZXRDaHVu a1NwYWNlKHZvaWQgKnBvaW50ZXIpCiAJZWxzZQogCQljaHVua3NpemUgPSBNZW1vcnlDaHVua0dl dFZhbHVlKGNodW5rKTsKIAorCS8qIERpc2FsbG93IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVy LiAqLworCVZBTEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBHZW5lcmF0aW9uX0NIVU5L SERSU1opOworCiAJcmV0dXJuIEdlbmVyYXRpb25fQ0hVTktIRFJTWiArIGNodW5rc2l6ZTsKIH0K IApAQCAtMTA1NCw4ICsxMDU4LDggQEAgR2VuZXJhdGlvbkNoZWNrKE1lbW9yeUNvbnRleHQgY29u dGV4dCkKIAkJCUdlbmVyYXRpb25CbG9jayAqY2h1bmtibG9jazsKIAkJCVNpemUJCWNodW5rc2l6 ZTsKIAotCQkJLyogQWxsb3cgYWNjZXNzIHRvIHByaXZhdGUgcGFydCBvZiBjaHVuayBoZWFkZXIu ICovCi0JCQlWQUxHUklORF9NQUtFX01FTV9ERUZJTkVEKGNodW5rLCBHRU5FUkFUSU9OQ0hVTktf UFJJVkFURV9MRU4pOworCQkJLyogQWxsb3cgYWNjZXNzIHRvIHRoZSBjaHVuayBoZWFkZXIuICov CisJCQlWQUxHUklORF9NQUtFX01FTV9ERUZJTkVEKGNodW5rLCBHZW5lcmF0aW9uX0NIVU5LSERS U1opOwogCiAJCQlpZiAoTWVtb3J5Q2h1bmtJc0V4dGVybmFsKGNodW5rKSkKIAkJCXsKQEAgLTEw OTgsMTIgKzExMDIsOSBAQCBHZW5lcmF0aW9uQ2hlY2soTWVtb3J5Q29udGV4dCBjb250ZXh0KQog CQkJZWxzZQogCQkJCW5mcmVlICs9IDE7CiAKLQkJCS8qCi0JCQkgKiBJZiBjaHVuayBpcyBhbGxv Y2F0ZWQsIGRpc2FsbG93IGV4dGVybmFsIGFjY2VzcyB0byBwcml2YXRlIHBhcnQKLQkJCSAqIG9m IGNodW5rIGhlYWRlci4KLQkJCSAqLworCQkJLyogaWYgY2h1bmsgaXMgYWxsb2NhdGVkLCBkaXNh bGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5rIGhlYWRlciAqLwogCQkJaWYgKGNodW5rLT5yZXF1ZXN0 ZWRfc2l6ZSAhPSBJbnZhbGlkQWxsb2NTaXplKQotCQkJCVZBTEdSSU5EX01BS0VfTUVNX05PQUND RVNTKGNodW5rLCBHRU5FUkFUSU9OQ0hVTktfUFJJVkFURV9MRU4pOworCQkJCVZBTEdSSU5EX01B S0VfTUVNX05PQUNDRVNTKGNodW5rLCBHZW5lcmF0aW9uX0NIVU5LSERSU1opOwogCQl9CiAKIAkJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggOGI2NTkxYWJmYi4uODAzOGEyZmVhNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9tY3h0LmMKQEAgLTE5MCw4ICsxOTAsMTQgQEAgR2V0TWVtb3J5Q2h1bmtNZXRob2RJ RChjb25zdCB2b2lkICpwb2ludGVyKQogCSAqLwogCUFzc2VydChwb2ludGVyID09IChjb25zdCB2 b2lkICopIE1BWEFMSUdOKHBvaW50ZXIpKTsKIAorCS8qIEFsbG93IGFjY2VzcyB0byB0aGUgdWlu dDY0IGhlYWRlciAqLworCVZBTEdSSU5EX01BS0VfTUVNX0RFRklORUQoKGNoYXIgKikgcG9pbnRl ciAtIHNpemVvZih1aW50NjQpLCBzaXplb2YodWludDY0KSk7CisKIAloZWFkZXIgPSAqKChjb25z dCB1aW50NjQgKikgKChjb25zdCBjaGFyICopIHBvaW50ZXIgLSBzaXplb2YodWludDY0KSkpOwog CisJLyogRGlzYWxsb3cgYWNjZXNzIHRvIHRoZSB1aW50NjQgaGVhZGVyICovCisJVkFMR1JJTkRf TUFLRV9NRU1fTk9BQ0NFU1MoKGNoYXIgKikgcG9pbnRlciAtIHNpemVvZih1aW50NjQpLCBzaXpl b2YodWludDY0KSk7CisKIAlyZXR1cm4gKE1lbW9yeUNvbnRleHRNZXRob2RJRCkgKGhlYWRlciAm IE1FTU9SWV9DT05URVhUX01FVEhPRElEX01BU0spOwogfQogCkBAIC0yMDQsNyArMjEwLDE3IEBA IEdldE1lbW9yeUNodW5rTWV0aG9kSUQoY29uc3Qgdm9pZCAqcG9pbnRlcikKIHN0YXRpYyBpbmxp bmUgdWludDY0CiBHZXRNZW1vcnlDaHVua0hlYWRlcihjb25zdCB2b2lkICpwb2ludGVyKQogewot CXJldHVybiAqKChjb25zdCB1aW50NjQgKikgKChjb25zdCBjaGFyICopIHBvaW50ZXIgLSBzaXpl b2YodWludDY0KSkpOworCXVpbnQ2NAkJaGVhZGVyOworCisJLyogQWxsb3cgYWNjZXNzIHRvIHRo ZSB1aW50NjQgaGVhZGVyICovCisJVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5FRCgoY2hhciAqKSBw b2ludGVyIC0gc2l6ZW9mKHVpbnQ2NCksIHNpemVvZih1aW50NjQpKTsKKworCWhlYWRlciA9ICoo KGNvbnN0IHVpbnQ2NCAqKSAoKGNvbnN0IGNoYXIgKikgcG9pbnRlciAtIHNpemVvZih1aW50NjQp KSk7CisKKwkvKiBEaXNhbGxvdyBhY2Nlc3MgdG8gdGhlIHVpbnQ2NCBoZWFkZXIgKi8KKwlWQUxH UklORF9NQUtFX01FTV9OT0FDQ0VTUygoY2hhciAqKSBwb2ludGVyIC0gc2l6ZW9mKHVpbnQ2NCks IHNpemVvZih1aW50NjQpKTsKKworCXJldHVybiBoZWFkZXI7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv c2xhYi5jCmluZGV4IDMzZGNhMGYzN2MuLjlmZDAwYTk4ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5j CkBAIC02MzAsNiArNjMwLDkgQEAgU2xhYkFsbG9jKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6 ZSBzaXplKQogCXJhbmRvbWl6ZV9tZW0oKGNoYXIgKikgTWVtb3J5Q2h1bmtHZXRQb2ludGVyKGNo dW5rKSwgc2l6ZSk7CiAjZW5kaWYKIAorCS8qIERpc2FsbG93IGFjY2VzcyB0byB0aGUgY2h1bmsg aGVhZGVyLiAqLworCVZBTEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKGNodW5rLCBTbGFiX0NIVU5L SERSU1opOworCiAJcmV0dXJuIE1lbW9yeUNodW5rR2V0UG9pbnRlcihjaHVuayk7CiB9CiAKQEAg LTY0Niw2ICs2NDksOSBAQCBTbGFiRnJlZSh2b2lkICpwb2ludGVyKQogCWludAkJCWN1ckJsb2Nr bGlzdElkeDsKIAlpbnQJCQluZXdCbG9ja2xpc3RJZHg7CiAKKwkvKiBBbGxvdyBhY2Nlc3MgdG8g dGhlIGNodW5rIGhlYWRlci4gKi8KKwlWQUxHUklORF9NQUtFX01FTV9ERUZJTkVEKGNodW5rLCBT bGFiX0NIVU5LSERSU1opOworCiAJLyoKIAkgKiBGb3Igc3BlZWQgcmVhc29ucyB3ZSBqdXN0IEFz c2VydCB0aGF0IHRoZSByZWZlcmVuY2VkIGJsb2NrIGlzIGdvb2QuCiAJICogRnV0dXJlIGZpZWxk IGV4cGVyaWVuY2UgbWF5IHNob3cgdGhhdCB0aGlzIEFzc2VydCBoYWQgYmV0dGVyIGJlY29tZSBh CkBAIC03NjEsOSArNzY3LDE0IEBAIHZvaWQgKgogU2xhYlJlYWxsb2Modm9pZCAqcG9pbnRlciwg U2l6ZSBzaXplKQogewogCU1lbW9yeUNodW5rICpjaHVuayA9IFBvaW50ZXJHZXRNZW1vcnlDaHVu ayhwb2ludGVyKTsKLQlTbGFiQmxvY2sgICpibG9jayA9IE1lbW9yeUNodW5rR2V0QmxvY2soY2h1 bmspOworCVNsYWJCbG9jayAgKmJsb2NrOwogCVNsYWJDb250ZXh0ICpzbGFiOwogCisJLyogQWxs b3cgYWNjZXNzIHRvIHRoZSBjaHVuayBoZWFkZXIuICovCisJVkFMR1JJTkRfTUFLRV9NRU1fREVG SU5FRChjaHVuaywgU2xhYl9DSFVOS0hEUlNaKTsKKworCWJsb2NrID0gTWVtb3J5Q2h1bmtHZXRC bG9jayhjaHVuayk7CisKIAkvKgogCSAqIFRyeSB0byB2ZXJpZnkgdGhhdCB3ZSBoYXZlIGEgc2Fu ZSBibG9jayBwb2ludGVyOiB0aGUgYmxvY2sgaGVhZGVyCiAJICogc2hvdWxkIHJlZmVyZW5jZSBh IHNsYWIgY29udGV4dC4gIChXZSB1c2UgYSB0ZXN0LWFuZC1lbG9nLCBub3QganVzdApAQCAtNzkw LDkgKzgwMSwxOCBAQCBNZW1vcnlDb250ZXh0CiBTbGFiR2V0Q2h1bmtDb250ZXh0KHZvaWQgKnBv aW50ZXIpCiB7CiAJTWVtb3J5Q2h1bmsgKmNodW5rID0gUG9pbnRlckdldE1lbW9yeUNodW5rKHBv aW50ZXIpOwotCVNsYWJCbG9jayAgKmJsb2NrID0gTWVtb3J5Q2h1bmtHZXRCbG9jayhjaHVuayk7 CisJU2xhYkJsb2NrICAqYmxvY2s7CisKKwkvKiBBbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5rIGhl YWRlci4gKi8KKwlWQUxHUklORF9NQUtFX01FTV9ERUZJTkVEKGNodW5rLCBTbGFiX0NIVU5LSERS U1opOworCisJYmxvY2sgPSBNZW1vcnlDaHVua0dldEJsb2NrKGNodW5rKTsKKworCS8qIERpc2Fs bG93IGFjY2VzcyB0byB0aGUgY2h1bmsgaGVhZGVyLiAqLworCVZBTEdSSU5EX01BS0VfTUVNX05P QUNDRVNTKGNodW5rLCBTbGFiX0NIVU5LSERSU1opOwogCiAJQXNzZXJ0KFNsYWJCbG9ja0lzVmFs aWQoYmxvY2spKTsKKwogCXJldHVybiAmYmxvY2stPnNsYWItPmhlYWRlcjsKIH0KIApAQCAtODA1 LDkgKzgyNSwxNyBAQCBTaXplCiBTbGFiR2V0Q2h1bmtTcGFjZSh2b2lkICpwb2ludGVyKQogewog CU1lbW9yeUNodW5rICpjaHVuayA9IFBvaW50ZXJHZXRNZW1vcnlDaHVuayhwb2ludGVyKTsKLQlT bGFiQmxvY2sgICpibG9jayA9IE1lbW9yeUNodW5rR2V0QmxvY2soY2h1bmspOworCVNsYWJCbG9j ayAgKmJsb2NrOwogCVNsYWJDb250ZXh0ICpzbGFiOwogCisJLyogQWxsb3cgYWNjZXNzIHRvIHRo ZSBjaHVuayBoZWFkZXIuICovCisJVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5FRChjaHVuaywgU2xh Yl9DSFVOS0hEUlNaKTsKKworCWJsb2NrID0gTWVtb3J5Q2h1bmtHZXRCbG9jayhjaHVuayk7CisK KwkvKiBEaXNhbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5rIGhlYWRlci4gKi8KKwlWQUxHUklORF9N QUtFX01FTV9OT0FDQ0VTUyhjaHVuaywgU2xhYl9DSFVOS0hEUlNaKTsKKwogCUFzc2VydChTbGFi QmxvY2tJc1ZhbGlkKGJsb2NrKSk7CiAJc2xhYiA9IGJsb2NrLT5zbGFiOwogCkBAIC0xMDE3LDcg KzEwNDUsMTUgQEAgU2xhYkNoZWNrKE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAkJCQlpZiAoIXNs YWItPmlzQ2h1bmtGcmVlW2pdKQogCQkJCXsKIAkJCQkJTWVtb3J5Q2h1bmsgKmNodW5rID0gU2xh YkJsb2NrR2V0Q2h1bmsoc2xhYiwgYmxvY2ssIGopOwotCQkJCQlTbGFiQmxvY2sgICpjaHVua2Js b2NrID0gKFNsYWJCbG9jayAqKSBNZW1vcnlDaHVua0dldEJsb2NrKGNodW5rKTsKKwkJCQkJU2xh YkJsb2NrICAqY2h1bmtibG9jazsKKworCQkJCQkvKiBBbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5r IGhlYWRlci4gKi8KKwkJCQkJVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5FRChjaHVuaywgU2xhYl9D SFVOS0hEUlNaKTsKKworCQkJCQljaHVua2Jsb2NrID0gKFNsYWJCbG9jayAqKSBNZW1vcnlDaHVu a0dldEJsb2NrKGNodW5rKTsKKworCQkJCQkvKiBEaXNhbGxvdyBhY2Nlc3MgdG8gdGhlIGNodW5r IGhlYWRlci4gKi8KKwkJCQkJVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoY2h1bmssIFNsYWJf Q0hVTktIRFJTWik7CiAKIAkJCQkJLyoKIAkJCQkJICogY2hlY2sgdGhlIGNodW5rJ3MgYmxvY2tv ZmZzZXQgY29ycmVjdGx5IHBvaW50cyBiYWNrIHRvCg== --000000000000cb76c505f1778e0a--