From nobody Sat Aug 02 00:21:40 2025 X-Original-To: freebsd-current@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bv3RG1VXMz63KYV for ; Sat, 02 Aug 2025 00:22:02 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bv3RD5k8vz3d8c; Sat, 02 Aug 2025 00:22:00 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20230601 header.b=J75bs3Ql; spf=pass (mx1.freebsd.org: domain of rick.macklem@gmail.com designates 2a00:1450:4864:20::630 as permitted sender) smtp.mailfrom=rick.macklem@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-af913d9d2a1so436858266b.3; Fri, 01 Aug 2025 17:22:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754094114; x=1754698914; darn=freebsd.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ssuModToonrWM+AahXpGjZFGGaXCubv2LHMF2h2+e0c=; b=J75bs3QleyYxFFrLD7tqNgg/NMw6VlbNJBaRoxbGzq4uQqI1xdrPDmpV+16C4vWcEE bqxfn9xJhlogc1e04OWv2H58TREus9vDU7EGwh6QADwgQ0mEuylF0X9fz3TuRfHeCQZO c9CBvbKf/yiiGVU948PSAaXR+wrc2bXLi8ZZGgKb8C0v/uWZGxzlDbRjHimTd/uoAnnx DUajtKs6C9oMhBjwQl/vRpKx8wDlSKBSK0e4cYTeHZ1Qq82vBBtmYSry9wWuW5v8F9r+ xwNwiK6lVs989O5HvY8nsl0eCOyTQAOVHQCDDzax4rm3lvYqTxru1N0S3kmWwUp7ZqNZ nXIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754094114; x=1754698914; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ssuModToonrWM+AahXpGjZFGGaXCubv2LHMF2h2+e0c=; b=J0PghIBggHjdVr5G75fBDQa9PddWgMHWdMDq65Tg34alNcBIU16QYQQTBZMPmqe3zM HjunLj8wp0/N45pBNIvkT5QCxv2j3Wvcs58d0gVmDUhYc5aTTw0aaBRnqzwvgaarOiKK kofuEbb7gc72PTUWsymtkECmTFbuoJ8Ip4DFrYEiZJDJdLukYApSxqPr/sU9n2HkRg5O pAnhc0AGdNUfMWhjFDQd+wETA7mfsL3J5Le9DZx3+Lvx9vXr/QmjMYpxABJ6iRfAdA+O x6HZQhRB68xCsPVGnibmVUhaBQxnH6aZPpd0be5VthWmbr0LwwwHdIEhIh/+APrV5Hjw CfUw== X-Forwarded-Encrypted: i=1; AJvYcCUknq7Iwyen3C4uMIzepj0oDimbjRJv5UWY0LHqMHW9JmOpxbvF8UAVONPuzHwAkJ4atPOnu7cF@freebsd.org X-Gm-Message-State: AOJu0Yxq/IzmCV5hDrapPU6+JzaYET4Cu38r/IwCgP6+J0veyGw9Cecx e4lqu20VthDa4J+fWoWJUtIOT4cV8zL+Qusn8ozfWw3z9gQ8+AFfCQ80uN6lb36AHK/T7iYmCVC XnhjmU/4X7Uvk9TFsznqVlcfH2RglPkrTvSI= X-Gm-Gg: ASbGnct/o7qKLRvacM8wXnaMLH/noJl9o/2XiMeImBX3HH1jxmytnZl7C+29AsYsFfj s4OaWxkJOy01a7e+nFzm3oCPwNdskwvafvFJ+rpuzx20ZznSzbhkMTTKJ/cxqS1lIPH0kANYqpx r0T8D1pCbBKe62zAh3mvjo8ZbJfwharOpP7GcfdLBQAt5+bnHk+GNFsgYDp7z5aPsZC/hvNklY7 bZhq9FxCR/9YCeNZFprrrbenLCyyLpnz0CTF7UikWV02dZA X-Google-Smtp-Source: AGHT+IHAZmgFH5Z1liEZiGhUFHql4BiCIKoS9ICJ8iLVuxD0i4fxTqP73xi8x6VKR8G6J0SNC9LU09MHoZqbL0CwEbM= X-Received: by 2002:a17:907:9405:b0:af8:f7be:ab8d with SMTP id a640c23a62f3a-af9401b0e5bmr164339566b.36.1754094113972; Fri, 01 Aug 2025 17:21:53 -0700 (PDT) List-Id: Discussions about the use of FreeBSD-current List-Archive: https://lists.freebsd.org/archives/freebsd-current List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-current@FreeBSD.org MIME-Version: 1.0 From: Rick Macklem Date: Fri, 1 Aug 2025 17:21:40 -0700 X-Gm-Features: Ac12FXz_y8SM-2kFmEno_xfDVCUQ1WlHZ-P6HroAeQZe1BlnrSHUX1SKbf6dy_s Message-ID: Subject: kgssapi and gssd patches for MIT's Kerberos To: FreeBSD CURRENT , Gleb Smirnoff , Benjamin Kaduk Content-Type: multipart/mixed; boundary="0000000000009121f8063b56dc86" X-Spamd-Result: default: False [-4.00 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20230601]; MIME_GOOD(-0.10)[multipart/mixed,text/plain]; RCVD_TLS_LAST(0.00)[]; TAGGED_FROM(0.00)[]; TO_DN_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; ARC_NA(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; FREEMAIL_TO(0.00)[freebsd.org,gmail.com]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_TRACE(0.00)[0:+,1:+,2:~,3:~]; DKIM_TRACE(0.00)[gmail.com:+]; RCPT_COUNT_THREE(0.00)[3]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::630:from]; MID_RHS_MATCH_FROMTLD(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; HAS_ATTACHMENT(0.00)[]; MLMMJ_DEST(0.00)[freebsd-current@freebsd.org]; RCVD_COUNT_ONE(0.00)[1]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; MISSING_XM_UA(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim] X-Rspamd-Queue-Id: 4bv3RD5k8vz3d8c X-Spamd-Bar: --- --0000000000009121f8063b56dc86 Content-Type: text/plain; charset="UTF-8" Hi, The discussion seems to have not had a mailing list on it, so here's what I posted. Maybe some others can do testing (or take a look at them)? Well, here's patches for testing. They are still kinda rough, but I'll be cleaning them up in the coming days and putting them in phabricator. They are attached and can also be found here... https://people.freebsd.org/~rmacklem/gssd.patch https://people.freebsd.org/~rmacklem/kgssapi.patch To make it work, I did.. # pkg install krb5 --> The libraries in /usr/lib are broken, at least in the one week old snapshot I am using for testing. # cp /usr/include/gssapi_krb5/gssapi/gssapi.h /usr/include/gssapi --> So that the correct (MIT) gssapi.h is in /usr/include/gssapi. Then after patching and building, I go into... /usr/obj/usr/src/amd64.amd64/usr.sbin/gssd and then I re-link gssd with cc -o gssd -L/usr/local/lib gssd.pieo gssd_prot.pieo gssd_svc.pieo gssd_xdr.pieo -lkrb5 -lk5crypto -lkrb5profile -lkrb5support -lgssapi_krb5 and then # cp gssd /usr/sbin You might be able to just add "-L/usr/local/lib" to the gssd Makefile, but I didn't feel like messing with it. It now seems to be working ok, using a pre-MIT Heimdal 1.5.2 kdc and pre-MIT system. (I have not yet done any testing with non-FreeBSD systems. I have Solaris 11.4 and a fairly recent 6.12 kernel based Debian, but I haven't set either up for Kerberos.) Good luck with testing, rick ps: I'll post when cleaner patches are on phabricator. --0000000000009121f8063b56dc86 Content-Type: application/octet-stream; name="gssd.patch" Content-Disposition: attachment; filename="gssd.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mdtibo0w0 LS0tIHVzci5zYmluL2dzc2QvTWFrZWZpbGUuc2F2CTIwMjUtMDctMjggMTY6NDk6MzUuMzg2Mzg2 MDAwIC0wNzAwCisrKyB1c3Iuc2Jpbi9nc3NkL01ha2VmaWxlCTIwMjUtMDctMzEgMTk6NTY6MTYu NjY2NDM0MDAwIC0wNzAwCkBAIC05LDE1ICs5LDE0IEBAIFdBUk5TPz0gMQogQ0ZMQUdTKz0gLUku CiBXQVJOUz89IDEKIAotTElCQUREPQlnc3NhcGkKIC5pZiAke01LX0tFUkJFUk9TX1NVUFBPUlR9 ICE9ICJubyIKIC5pZiAke01LX01JVEtSQjV9ICE9ICJubyIKICMgTUlUIEtSQjUKLUxJQkFERCs9 CWtyYjUgazVjcnlwdG8ga3JiNXByb2ZpbGUga3JiNXN1cHBvcnQKK0xJQkFERD0Ja3JiNSBrNWNy eXB0byBrcmI1cHJvZmlsZSBrcmI1c3VwcG9ydCBnc3NhcGlfa3JiNQogQ0ZMQUdTKz0gLURNS19N SVRLUkI1PXllcwogLmVsc2UKICMgSGVpbWRhbAotTElCQUREKz0Ja3JiNSByb2tlbgorTElCQURE PQlnc3NhcGkga3JiNSByb2tlbgogLmVuZGlmCiAuZWxzZQogQ0ZMQUdTKz0gLURXSVRIT1VUX0tF UkJFUk9TCi0tLSB1c3Iuc2Jpbi9nc3NkL2dzc2QuYy5zYXYJMjAyNS0wNy0yNiAxOToyMToyNy4y MDQzMjgwMDAgLTA3MDAKKysrIHVzci5zYmluL2dzc2QvZ3NzZC5jCTIwMjUtMDgtMDEgMDg6MzI6 NTQuOTU4MTIyMDAwIC0wNzAwCkBAIC01Myw2ICs1Myw5IEBACiAjaW5jbHVkZSA8YXJwYS9pbmV0 Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPGdzc2FwaS9nc3NhcGkuaD4K KyNpZmRlZiBNS19NSVRLUkI1CisjaW5jbHVkZSA8Z3NzYXBpL2dzc2FwaV9rcmI1Lmg+CisjZW5k aWYKICNpbmNsdWRlIDxycGMvcnBjLmg+CiAjaW5jbHVkZSA8cnBjL3JwY19jb20uaD4KIApAQCAt MzM1LDYgKzMzOCw3IEBAIGdzc2RfbnVsbF8xX3N2Yyh2b2lkICphcmdwLCB2b2lkICpyZXN1bHQs IHN0cnVjdCBzdmNfcgogCXJldHVybiAoVFJVRSk7CiB9CiAKKyNpZm5kZWYgTUtfTUlUS1JCNQog Ym9vbF90CiBnc3NkX2luaXRfc2VjX2NvbnRleHRfMV9zdmMoaW5pdF9zZWNfY29udGV4dF9hcmdz ICphcmdwLCBpbml0X3NlY19jb250ZXh0X3JlcyAqcmVzdWx0LCBzdHJ1Y3Qgc3ZjX3JlcSAqcnFz dHApCiB7CkBAIC00NTQsMTEgKzQ1OCw0MCBAQCBnc3NkX2luaXRfc2VjX2NvbnRleHRfMV9zdmMo aW5pdF9zZWNfY29udGV4dF9hcmdzICphcmcKIAkJZWxzZQogCQkJcmVzdWx0LT5jdHggPSBnc3Nk X21ha2VfcmVzb3VyY2UoY3R4KTsKIAl9CisKKwlyZXR1cm4gKFRSVUUpOworfQorCitib29sX3QK K2dzc2Rfc3VwcG9ydHNfbHVjaWRfMV9zdmModm9pZCAqYXJncCwgc3VwcG9ydHNfbHVjaWRfcmVz ICpyZXN1bHQsIHN0cnVjdCBzdmNfcmVxICpycXN0cCkKK3sKIAorCWdzc2RfdmVyYm9zZV9vdXQo Imdzc2RfbHVjaWQ6IGRvbmVcbiIpOworCXJlc3VsdC0+bWFqb3Jfc3RhdHVzID0gR1NTX1NfVU5B VkFJTEFCTEU7CiAJcmV0dXJuIChUUlVFKTsKIH0KIAogYm9vbF90Citnc3NkX2luaXRfc2VjX2Nv bnRleHRfcGx1c18xX3N2Yyhpbml0X3NlY19jb250ZXh0X3BsdXNfYXJncyAqYXJncCwKKyAgICBp bml0X3NlY19jb250ZXh0X3BsdXNfcmVzICpyZXN1bHQsIHN0cnVjdCBzdmNfcmVxICpycXN0cCkK K3sKKworCWdzc2RfdmVyYm9zZV9vdXQoImdzc2RfaW5pdF9zZWNfY29udGV4dF9wbHVzOiBIZWlt ZGFsXG4iKTsKKwlyZXN1bHQtPm1ham9yX3N0YXR1cyA9IEdTU19TX1VOQVZBSUxBQkxFOworCXJl dHVybiAoVFJVRSk7Cit9CisKK2Jvb2xfdAorZ3NzZF9hY2NlcHRfc2VjX2NvbnRleHRfcGx1c18x X3N2YyhhY2NlcHRfc2VjX2NvbnRleHRfcGx1c19hcmdzICphcmdwLAorICAgIGFjY2VwdF9zZWNf Y29udGV4dF9wbHVzX3JlcyAqcmVzdWx0LCBzdHJ1Y3Qgc3ZjX3JlcSAqcnFzdHApCit7CisKKwln c3NkX3ZlcmJvc2Vfb3V0KCJnc3NkX2FjY2VwdF9zZWNfY29udGV4dF9wbHVzOiBIZWltZGFsXG4i KTsKKwlyZXN1bHQtPm1ham9yX3N0YXR1cyA9IEdTU19TX1VOQVZBSUxBQkxFOworCXJldHVybiAo VFJVRSk7Cit9CisKK2Jvb2xfdAogZ3NzZF9hY2NlcHRfc2VjX2NvbnRleHRfMV9zdmMoYWNjZXB0 X3NlY19jb250ZXh0X2FyZ3MgKmFyZ3AsIGFjY2VwdF9zZWNfY29udGV4dF9yZXMgKnJlc3VsdCwg c3RydWN0IHN2Y19yZXEgKnJxc3RwKQogewogCWdzc19jdHhfaWRfdCBjdHggPSBHU1NfQ19OT19D T05URVhUOwpAQCAtNTA4LDggKzU0MSwzNDIgQEAgZ3NzZF9hY2NlcHRfc2VjX2NvbnRleHRfMV9z dmMoYWNjZXB0X3NlY19jb250ZXh0X2FyZ3MgCiAKIAlyZXR1cm4gKFRSVUUpOwogfQorI2Vsc2UJ LyogTUtfTUlUS1JCNSAqLworYm9vbF90Citnc3NkX3N1cHBvcnRzX2x1Y2lkXzFfc3ZjKHZvaWQg KmFyZ3AsIHN1cHBvcnRzX2x1Y2lkX3JlcyAqcmVzdWx0LCBzdHJ1Y3Qgc3ZjX3JlcSAqcnFzdHAp Cit7CiAKKwlnc3NkX3ZlcmJvc2Vfb3V0KCJnc3NkX2x1Y2lkOiBkb25lXG4iKTsKKwlyZXN1bHQt PnZlcnMgPSAxOworCXJlc3VsdC0+bWFqb3Jfc3RhdHVzID0gR1NTX1NfQ09NUExFVEU7CisJcmV0 dXJuIChUUlVFKTsKK30KKwogYm9vbF90Citnc3NkX2luaXRfc2VjX2NvbnRleHRfMV9zdmMoaW5p dF9zZWNfY29udGV4dF9hcmdzICphcmdwLAorICAgIGluaXRfc2VjX2NvbnRleHRfcmVzICpyZXN1 bHQsIHN0cnVjdCBzdmNfcmVxICpycXN0cCkKK3sKKworCWdzc2RfdmVyYm9zZV9vdXQoImdzc2Rf aW5pdF9zZWNfY29udGV4dF9wbHVzOiBNSVRcbiIpOworCXJlc3VsdC0+bWFqb3Jfc3RhdHVzID0g R1NTX1NfVU5BVkFJTEFCTEU7CisJcmV0dXJuIChUUlVFKTsKK30KKworYm9vbF90Citnc3NkX2Fj Y2VwdF9zZWNfY29udGV4dF8xX3N2YyhhY2NlcHRfc2VjX2NvbnRleHRfYXJncyAqYXJncCwKKyAg ICBhY2NlcHRfc2VjX2NvbnRleHRfcmVzICpyZXN1bHQsIHN0cnVjdCBzdmNfcmVxICpycXN0cCkK K3sKKworCWdzc2RfdmVyYm9zZV9vdXQoImdzc2RfYWNjZXB0X3NlY19jb250ZXh0X3BsdXM6IE1J VFxuIik7CisJcmVzdWx0LT5tYWpvcl9zdGF0dXMgPSBHU1NfU19VTkFWQUlMQUJMRTsKKwlyZXR1 cm4gKFRSVUUpOworfQorCitib29sX3QKK2dzc2RfaW5pdF9zZWNfY29udGV4dF9wbHVzXzFfc3Zj KGluaXRfc2VjX2NvbnRleHRfcGx1c19hcmdzICphcmdwLAorICAgIGluaXRfc2VjX2NvbnRleHRf cGx1c19yZXMgKnJlc3VsdCwgc3RydWN0IHN2Y19yZXEgKnJxc3RwKQoreworCWdzc19jcmVkX2lk X3QgY3JlZCA9IEdTU19DX05PX0NSRURFTlRJQUw7CisJZ3NzX2N0eF9pZF90IGN0eCA9IEdTU19D X05PX0NPTlRFWFQ7CisJZ3NzX25hbWVfdCBuYW1lID0gR1NTX0NfTk9fTkFNRTsKKwljaGFyIGNj bmFtZVtQQVRIX01BWCArIDUgKyAxXSwgKmNwLCAqY3AyOworCWludCBnb3RvbmUsIGdvdGNyZWQ7 CisJT01fdWludDMyIG1pbl9zdGF0OworI2lmbmRlZiBXSVRIT1VUX0tFUkJFUk9TCisJZ3NzX2J1 ZmZlcl9kZXNjIHByaW5jaXBhbF9kZXNjOworCWNoYXIgZW5jdHlwZVtzaXplb2YodWludDMyX3Qp XTsKKwlpbnQga2V5X2VuY3R5cGU7CisJT01fdWludDMyIG1hal9zdGF0OworI2VuZGlmCisKKwlt ZW1zZXQocmVzdWx0LCAwLCBzaXplb2YoKnJlc3VsdCkpOworCWlmIChob3N0YmFzZWRfaW5pdGlh dG9yX2NyZWQgIT0gMCAmJiBhcmdwLT5jcmVkICE9IDAgJiYKKwkgICAgYXJncC0+dWlkID09IDAp IHsKKwkJLyoKKwkJICogVGhlc2UgY3JlZGVudGlhbHMgYXJlIGZvciBhIGhvc3QgYmFzZWQgaW5p dGlhdG9yIG5hbWUKKwkJICogaW4gYSBrZXl0YWIgZmlsZSwgd2hpY2ggc2hvdWxkIG5vdyBoYXZl IGNyZWRlbnRpYWxzCisJCSAqIGluIC90bXAva3JiNWNjX2dzc2QsIGJlY2F1c2UgZ3NzX2FjcXVp cmVfY3JlZCgpIGRpZAorCQkgKiB0aGUgZXF1aXZhbGVudCBvZiAia2luaXQgLWsiLgorCQkgKi8K KwkJc25wcmludGYoY2NuYW1lLCBzaXplb2YoY2NuYW1lKSwgIkZJTEU6JXMiLAorCQkgICAgR1NT RF9DUkVERU5USUFMX0NBQ0hFX0ZJTEUpOworCX0gZWxzZSBpZiAoY2NmaWxlX2Rpcmxpc3RbMF0g IT0gJ1wwJyAmJiBhcmdwLT5jcmVkID09IDApIHsKKwkJLyoKKwkJICogRm9yIHRoZSAiLXMiIGNh c2UgYW5kIG5vIGNyZWRlbnRpYWxzIHByb3ZpZGVkIGFzIGFuCisJCSAqIGFyZ3VtZW50LCBzZWFy Y2ggdGhlIGRpcmVjdG9yeSBsaXN0IGZvciBhbiBhcHByb3ByaWF0ZQorCQkgKiBjcmVkZW50aWFs IGNhY2hlIGZpbGUuIElmIHRoZSBzZWFyY2ggZmFpbHMsIHJldHVybiBmYWlsdXJlLgorCQkgKi8K KwkJZ290b25lID0gMDsKKwkJY3AgPSBjY2ZpbGVfZGlybGlzdDsKKwkJZG8geworCQkJY3AyID0g c3RyY2hyKGNwLCAnOicpOworCQkJaWYgKGNwMiAhPSBOVUxMKQorCQkJCSpjcDIgPSAnXDAnOwor CQkJZ290b25lID0gZmluZF9jY2FjaGVfZmlsZShjcCwgYXJncC0+dWlkLCBjY25hbWUpOworCQkJ aWYgKGdvdG9uZSAhPSAwKQorCQkJCWJyZWFrOworCQkJaWYgKGNwMiAhPSBOVUxMKQorCQkJCSpj cDIrKyA9ICc6JzsKKwkJCWNwID0gY3AyOworCQl9IHdoaWxlIChjcCAhPSBOVUxMICYmICpjcCAh PSAnXDAnKTsKKwkJaWYgKGdvdG9uZSA9PSAwKSB7CisJCQlyZXN1bHQtPm1ham9yX3N0YXR1cyA9 IEdTU19TX0NSRURFTlRJQUxTX0VYUElSRUQ7CisJCQlnc3NkX3ZlcmJvc2Vfb3V0KCJnc3NkX2lu aXRfc2VjX2NvbnRleHRfcGx1czogLXMgbm8iCisJCQkgICAgIiBjcmVkZW50aWFsIGNhY2hlIGZp bGUgZm91bmQgZm9yIHVpZD0lZFxuIiwKKwkJCSAgICAoaW50KWFyZ3AtPnVpZCk7CisJCQlyZXR1 cm4gKFRSVUUpOworCQl9CisJfSBlbHNlIHsKKwkJLyoKKwkJICogSWYgdGhlcmUgd2Fzbid0IGEg Ii1zIiBvcHRpb24gb3IgdGhlIGNyZWRlbnRpYWxzIGhhdmUKKwkJICogYmVlbiBwcm92aWRlZCBh cyBhbiBhcmd1bWVudCwgZG8gaXQgdGhlIG9sZCB3YXkuCisJCSAqIFdoZW4gY3JlZGVudGlhbHMg YXJlIHByb3ZpZGVkLCB0aGUgdWlkIHNob3VsZCBiZSByb290LgorCQkgKi8KKwkJaWYgKGFyZ3At PmNyZWQgIT0gMCAmJiBhcmdwLT51aWQgIT0gMCkgeworCQkJaWYgKGRlYnVnX2xldmVsID09IDAp CisJCQkJc3lzbG9nKExPR19FUlIsICJnc3NfaW5pdF9zZWNfY29udGV4dF9wbHVzOiIKKwkJCQkg ICAgIiBjcmVkIGZvciBub24tcm9vdCIpOworCQkJZWxzZQorCQkJCWZwcmludGYoc3RkZXJyLCAi Z3NzX2luaXRfc2VjX2NvbnRleHRfcGx1czoiCisJCQkJICAgICIgY3JlZCBmb3Igbm9uLXJvb3Rc biIpOworCQl9CisJCXNucHJpbnRmKGNjbmFtZSwgc2l6ZW9mKGNjbmFtZSksICJGSUxFOi90bXAv a3JiNWNjXyVkIiwKKwkJICAgIChpbnQpIGFyZ3AtPnVpZCk7CisJfQorCXNldGVudigiS1JCNUND TkFNRSIsIGNjbmFtZSwgVFJVRSk7CisKKwlpZiAoYXJncC0+Y3JlZCkgeworCQljcmVkID0gZ3Nz ZF9maW5kX3Jlc291cmNlKGFyZ3AtPmNyZWQpOworCQlpZiAoIWNyZWQpIHsKKwkJCXJlc3VsdC0+ bWFqb3Jfc3RhdHVzID0gR1NTX1NfQ1JFREVOVElBTFNfRVhQSVJFRDsKKwkJCWdzc2RfdmVyYm9z ZV9vdXQoImdzc2RfaW5pdF9zZWNfY29udGV4dF9wbHVzOiBjcmVkIgorCQkJICAgICIgcmVzb3Vy Y2Ugbm90IGZvdW5kXG4iKTsKKwkJCXJldHVybiAoVFJVRSk7CisJCX0KKwl9CisJaWYgKGFyZ3At PmN0eCkgeworCQljdHggPSBnc3NkX2ZpbmRfcmVzb3VyY2UoYXJncC0+Y3R4KTsKKwkJaWYgKCFj dHgpIHsKKwkJCXJlc3VsdC0+bWFqb3Jfc3RhdHVzID0gR1NTX1NfQ09OVEVYVF9FWFBJUkVEOwor CQkJZ3NzZF92ZXJib3NlX291dCgiZ3NzZF9pbml0X3NlY19jb250ZXh0X3BsdXM6IGNvbnRleHQi CisJCQkgICAgIiByZXNvdXJjZSBub3QgZm91bmRcbiIpOworCQkJcmV0dXJuIChUUlVFKTsKKwkJ fQorCX0KKwlpZiAoYXJncC0+bmFtZSkgeworCQluYW1lID0gZ3NzZF9maW5kX3Jlc291cmNlKGFy Z3AtPm5hbWUpOworCQlpZiAoIW5hbWUpIHsKKwkJCXJlc3VsdC0+bWFqb3Jfc3RhdHVzID0gR1NT X1NfQkFEX05BTUU7CisJCQlnc3NkX3ZlcmJvc2Vfb3V0KCJnc3NkX2luaXRfc2VjX2NvbnRleHRf cGx1czogbmFtZSIKKwkJCSAgICAiIHJlc291cmNlIG5vdCBmb3VuZFxuIik7CisJCQlyZXR1cm4g KFRSVUUpOworCQl9CisJfQorCWdvdGNyZWQgPSAwOworCisJcmVzdWx0LT5tYWpvcl9zdGF0dXMg PSBnc3NfaW5pdF9zZWNfY29udGV4dCgmcmVzdWx0LT5taW5vcl9zdGF0dXMsCisJICAgIGNyZWQs ICZjdHgsIG5hbWUsIGFyZ3AtPm1lY2hfdHlwZSwKKwkgICAgYXJncC0+cmVxX2ZsYWdzLCBhcmdw LT50aW1lX3JlcSwgYXJncC0+aW5wdXRfY2hhbl9iaW5kaW5ncywKKwkgICAgJmFyZ3AtPmlucHV0 X3Rva2VuLCAmcmVzdWx0LT5hY3R1YWxfbWVjaF90eXBlLAorCSAgICAmcmVzdWx0LT5vdXRwdXRf dG9rZW4sICZyZXN1bHQtPnJldF9mbGFncywgJnJlc3VsdC0+dGltZV9yZWMpOworCWdzc2RfdmVy Ym9zZV9vdXQoImdzc2RfaW5pdF9zZWNfY29udGV4dF9wbHVzOiBkb25lIG1ham9yPTB4JXggbWlu b3I9JWQiCisJICAgICIgdWlkPSVkXG4iLCAodW5zaWduZWQgaW50KXJlc3VsdC0+bWFqb3Jfc3Rh dHVzLAorCSAgICAoaW50KXJlc3VsdC0+bWlub3Jfc3RhdHVzLCAoaW50KWFyZ3AtPnVpZCk7CisJ aWYgKGdvdGNyZWQgIT0gMCkKKwkJZ3NzX3JlbGVhc2VfY3JlZCgmbWluX3N0YXQsICZjcmVkKTsK KworCWlmIChyZXN1bHQtPmFjdHVhbF9tZWNoX3R5cGUpIHsKK2dzc2RfdmVyYm9zZV9vdXQoImdz c2QgbWVjaCBsZW49JWQgZWxlbT0lcFxuIiwgcmVzdWx0LT5hY3R1YWxfbWVjaF90eXBlLT5sZW5n dGgsIHJlc3VsdC0+YWN0dWFsX21lY2hfdHlwZS0+ZWxlbWVudHMpOworCQkvKgorCQkgKiBKdXN0 IHRvIGtlZXAgdGhlIGJvZ3VzICJlbGVtZW50cyIgcG9pbnRlcgorCQkgKiBmcm9tIGNvcmUgZHVt cGluZyB0aGUgZGFlbW9uLgorCQkgKi8KKwkJcmVzdWx0LT5hY3R1YWxfbWVjaF90eXBlID0gR1NT X0tSQjVfTUVDSF9PSURfWDsKK2dzc2RfdmVyYm9zZV9vdXQoImdzc2QgYWZ0IG1lY2hcbiIpOwor CX0KKworCWlmIChyZXN1bHQtPm1ham9yX3N0YXR1cyA9PSBHU1NfU19DT01QTEVURQorCSAgICB8 fCByZXN1bHQtPm1ham9yX3N0YXR1cyA9PSBHU1NfU19DT05USU5VRV9ORUVERUQpIHsKKwkJaWYg KGFyZ3AtPmN0eCkKKwkJCXJlc3VsdC0+Y3R4ID0gYXJncC0+Y3R4OworCQllbHNlCisJCQlyZXN1 bHQtPmN0eCA9IGdzc2RfbWFrZV9yZXNvdXJjZShjdHgpOworCQlnc3NkX3ZlcmJvc2Vfb3V0KCJn c3NkX2luaXRfY3R4PSVwIGFyZz0lbGQgcmVzPSVsZCIsIGN0eCwgYXJncC0+Y3R4LCByZXN1bHQt PmN0eCk7CisJfQorCisJaWYgKHJlc3VsdC0+bWFqb3Jfc3RhdHVzID09IEdTU19TX0NPTVBMRVRF KSB7CisJCWdzc19rcmI1X2x1Y2lkX2NvbnRleHRfdjFfdCAqbGN0eDsKKworCQlyZXN1bHQtPm1h am9yX3N0YXR1cyA9IGdzc19rcmI1X2V4cG9ydF9sdWNpZF9zZWNfY29udGV4dCgKKwkJICAgICZy ZXN1bHQtPm1pbm9yX3N0YXR1cywgJmN0eCwgMSwgKHZvaWQgKikmbGN0eCk7CisJCWdzc2RfdmVy Ym9zZV9vdXQoImdzc19sdWNpZDogbWFqPTB4JXggbWluPTB4JXggbGN0eD0lcFxuIiwgcmVzdWx0 LT5tYWpvcl9zdGF0dXMsIHJlc3VsdC0+bWlub3Jfc3RhdHVzLCBsY3R4KTsKKwkJaWYgKHJlc3Vs dC0+bWFqb3Jfc3RhdHVzID09IEdTU19TX0NPTVBMRVRFICYmCisJCSAgICBsY3R4ICE9IE5VTEwp IHsKKwkJCWdzc2RfdmVyYm9zZV9vdXQoIkdvdCB0aGUgc3Vja2VyISEiKTsKKwkJCXJlc3VsdC0+ aW5pdGlhdGUgPSBsY3R4LT5pbml0aWF0ZTsKKwkJCXJlc3VsdC0+ZW5kdGltZSA9IGxjdHgtPmVu ZHRpbWU7CisJCQlyZXN1bHQtPnNlbmRfc2VxID0gbGN0eC0+c2VuZF9zZXE7CisJCQlyZXN1bHQt PnJlY3Zfc2VxID0gbGN0eC0+cmVjdl9zZXE7CisJCQlyZXN1bHQtPnByb3RvY29sID0gbGN0eC0+ cHJvdG9jb2w7CisJCQlpZiAobGN0eC0+cHJvdG9jb2wgPT0gMCkgeworCQkJCXJlc3VsdC0+cmZj X3NpZ24gPSBsY3R4LT5yZmMxOTY0X2tkLnNpZ25fYWxnOworCQkJCXJlc3VsdC0+cmZjX3NlYWwg PSBsY3R4LT5yZmMxOTY0X2tkLnNlYWxfYWxnOworCQkJCXJlc3VsdC0+Y3R4X3R5cGUgPQorCQkJ CSAgICBsY3R4LT5yZmMxOTY0X2tkLmN0eF9rZXkudHlwZTsKKwkJCQlyZXN1bHQtPmN0eF9rZXku bGVuZ3RoID0KKwkJCQkgICAgbGN0eC0+cmZjMTk2NF9rZC5jdHhfa2V5Lmxlbmd0aDsKKwkJCQly ZXN1bHQtPmN0eF9rZXkudmFsdWUgPQorCQkJCSAgICBtZW1fYWxsb2MocmVzdWx0LT5jdHhfa2V5 Lmxlbmd0aCk7CisJCQkJbWVtY3B5KHJlc3VsdC0+Y3R4X2tleS52YWx1ZSwKKwkJCQkgICAgbGN0 eC0+cmZjMTk2NF9rZC5jdHhfa2V5LmRhdGEsCisJCQkJICAgIHJlc3VsdC0+Y3R4X2tleS5sZW5n dGgpOworCQkJfSBlbHNlIGlmIChsY3R4LT5wcm90b2NvbCA9PSAxKSB7CisJCQkJZ3NzZF92ZXJi b3NlX291dCgiYWNjc3ViPSVkXG4iLCBsY3R4LT5jZnhfa2QuaGF2ZV9hY2NlcHRvcl9zdWJrZXkp OworCQkJCWdzc2RfdmVyYm9zZV9vdXQoImN0eCB0eT0lZCBsZW49JWQgaz0lcFxuIiwgbGN0eC0+ Y2Z4X2tkLmN0eF9rZXkudHlwZSwgbGN0eC0+Y2Z4X2tkLmN0eF9rZXkubGVuZ3RoLCBsY3R4LT5j Znhfa2QuY3R4X2tleS5kYXRhKTsKKwkJCQlnc3NkX3ZlcmJvc2Vfb3V0KCJzdWIgdHk9JWQgbGVu PSVkIGs9JXBcbiIsIGxjdHgtPmNmeF9rZC5hY2NlcHRvcl9zdWJrZXkudHlwZSwgbGN0eC0+Y2Z4 X2tkLmFjY2VwdG9yX3N1YmtleS5sZW5ndGgsIGxjdHgtPmNmeF9rZC5hY2NlcHRvcl9zdWJrZXku ZGF0YSk7CisJCQkJcmVzdWx0LT5oYXZlX3N1YmtleSA9CisJCQkJICAgIGxjdHgtPmNmeF9rZC5o YXZlX2FjY2VwdG9yX3N1YmtleTsKKwkJCQlyZXN1bHQtPmN0eF90eXBlID0gbGN0eC0+Y2Z4X2tk LmN0eF9rZXkudHlwZTsKKwkJCQlyZXN1bHQtPmN0eF9rZXkubGVuZ3RoID0KKwkJCQkgICAgbGN0 eC0+Y2Z4X2tkLmN0eF9rZXkubGVuZ3RoOworCQkJCXJlc3VsdC0+Y3R4X2tleS52YWx1ZSA9CisJ CQkJICAgIG1lbV9hbGxvYyhyZXN1bHQtPmN0eF9rZXkubGVuZ3RoKTsKKwkJCQltZW1jcHkocmVz dWx0LT5jdHhfa2V5LnZhbHVlLAorCQkJCSAgICBsY3R4LT5jZnhfa2QuY3R4X2tleS5kYXRhLAor CQkJCSAgICByZXN1bHQtPmN0eF9rZXkubGVuZ3RoKTsKKwkJCQlpZiAocmVzdWx0LT5oYXZlX3N1 YmtleSAhPSAwKSB7CisJCQkJCXJlc3VsdC0+c3Via2V5X3R5cGUgPQorCQkJCQkgICAgbGN0eC0+ Y2Z4X2tkLmFjY2VwdG9yX3N1YmtleS50eXBlOworCQkJCQlyZXN1bHQtPnN1YmtleV9rZXkubGVu Z3RoID0KKwkJCQkJICAgIGxjdHgtPmNmeF9rZC5hY2NlcHRvcl9zdWJrZXkubGVuZ3RoOworCQkJ CQlyZXN1bHQtPnN1YmtleV9rZXkudmFsdWUgPSBtZW1fYWxsb2MoCisJCQkJCSAgICByZXN1bHQt PnN1YmtleV9rZXkubGVuZ3RoKTsKKwkJCQkJbWVtY3B5KHJlc3VsdC0+c3Via2V5X2tleS52YWx1 ZSwKKwkJCQkJICAgIGxjdHgtPmNmeF9rZC5hY2NlcHRvcl9zdWJrZXkuZGF0YSwKKwkJCQkJICAg IHJlc3VsdC0+c3Via2V5X2tleS5sZW5ndGgpOworCQkJCX0gZWxzZSB7CisJCQkJCXJlc3VsdC0+ c3Via2V5X3R5cGUgPSAwOworCQkJCQlyZXN1bHQtPnN1YmtleV9rZXkubGVuZ3RoID0gMDsKKwkJ CQkJcmVzdWx0LT5zdWJrZXlfa2V5LnZhbHVlID0gTlVMTDsKKwkJCQl9CisJCQl9CisJCX0KKwl9 CisKKwlyZXR1cm4gKFRSVUUpOworfQorCitib29sX3QKK2dzc2RfYWNjZXB0X3NlY19jb250ZXh0 X3BsdXNfMV9zdmMoYWNjZXB0X3NlY19jb250ZXh0X3BsdXNfYXJncyAqYXJncCwgYWNjZXB0X3Nl Y19jb250ZXh0X3BsdXNfcmVzICpyZXN1bHQsIHN0cnVjdCBzdmNfcmVxICpycXN0cCkKK3sKKwln c3NfY3R4X2lkX3QgY3R4ID0gR1NTX0NfTk9fQ09OVEVYVDsKKwlnc3NfY3JlZF9pZF90IGNyZWQg PSBHU1NfQ19OT19DUkVERU5USUFMOworCWdzc19uYW1lX3Qgc3JjX25hbWU7CisJZ3NzX2NyZWRf aWRfdCBkZWxlZ2F0ZWRfY3JlZF9oYW5kbGU7CisKKwltZW1zZXQocmVzdWx0LCAwLCBzaXplb2Yo KnJlc3VsdCkpOworCWlmIChhcmdwLT5jdHgpIHsKKwkJY3R4ID0gZ3NzZF9maW5kX3Jlc291cmNl KGFyZ3AtPmN0eCk7CisJCWlmICghY3R4KSB7CisJCQlyZXN1bHQtPm1ham9yX3N0YXR1cyA9IEdT U19TX0NPTlRFWFRfRVhQSVJFRDsKKwkJCWdzc2RfdmVyYm9zZV9vdXQoImdzc2RfYWNjZXB0X3Nl Y19jb250ZXh0OiBjdHgiCisJCQkgICAgIiByZXNvdXJjZSBub3QgZm91bmRcbiIpOworCQkJcmV0 dXJuIChUUlVFKTsKKwkJfQorCX0KKwlpZiAoYXJncC0+Y3JlZCkgeworCQljcmVkID0gZ3NzZF9m aW5kX3Jlc291cmNlKGFyZ3AtPmNyZWQpOworCQlpZiAoIWNyZWQpIHsKKwkJCXJlc3VsdC0+bWFq b3Jfc3RhdHVzID0gR1NTX1NfQ1JFREVOVElBTFNfRVhQSVJFRDsKKwkJCWdzc2RfdmVyYm9zZV9v dXQoImdzc2RfYWNjZXB0X3NlY19jb250ZXh0OiBjcmVkIgorCQkJICAgICIgcmVzb3VyY2Ugbm90 IGZvdW5kXG4iKTsKKwkJCXJldHVybiAoVFJVRSk7CisJCX0KKwl9CisKKwltZW1zZXQocmVzdWx0 LCAwLCBzaXplb2YoKnJlc3VsdCkpOworCXJlc3VsdC0+bWFqb3Jfc3RhdHVzID0gZ3NzX2FjY2Vw dF9zZWNfY29udGV4dCgmcmVzdWx0LT5taW5vcl9zdGF0dXMsCisJICAgICZjdHgsIGNyZWQsICZh cmdwLT5pbnB1dF90b2tlbiwgYXJncC0+aW5wdXRfY2hhbl9iaW5kaW5ncywKKwkgICAgJnNyY19u YW1lLCAmcmVzdWx0LT5tZWNoX3R5cGUsICZyZXN1bHQtPm91dHB1dF90b2tlbiwKKwkgICAgJnJl c3VsdC0+cmV0X2ZsYWdzLCAmcmVzdWx0LT50aW1lX3JlYywKKwkgICAgJmRlbGVnYXRlZF9jcmVk X2hhbmRsZSk7CisJZ3NzZF92ZXJib3NlX291dCgiZ3NzZF9hY2NlcHRfc2VjX2NvbnRleHQ6IGRv bmUgbWFqb3I9MHgleCBtaW5vcj0lZFxuIiwKKwkgICAgKHVuc2lnbmVkIGludClyZXN1bHQtPm1h am9yX3N0YXR1cywgKGludClyZXN1bHQtPm1pbm9yX3N0YXR1cyk7CisKKwlpZiAocmVzdWx0LT5t YWpvcl9zdGF0dXMgPT0gR1NTX1NfQ09NUExFVEUKKwkgICAgfHwgcmVzdWx0LT5tYWpvcl9zdGF0 dXMgPT0gR1NTX1NfQ09OVElOVUVfTkVFREVEKSB7CisJCWlmIChhcmdwLT5jdHgpCisJCQlyZXN1 bHQtPmN0eCA9IGFyZ3AtPmN0eDsKKwkJZWxzZQorCQkJcmVzdWx0LT5jdHggPSBnc3NkX21ha2Vf cmVzb3VyY2UoY3R4KTsKKwkJcmVzdWx0LT5zcmNfbmFtZSA9IGdzc2RfbWFrZV9yZXNvdXJjZShz cmNfbmFtZSk7CisJCXJlc3VsdC0+ZGVsZWdhdGVkX2NyZWRfaGFuZGxlID0KKwkJCWdzc2RfbWFr ZV9yZXNvdXJjZShkZWxlZ2F0ZWRfY3JlZF9oYW5kbGUpOworCX0KKworCWlmIChyZXN1bHQtPm1h am9yX3N0YXR1cyA9PSBHU1NfU19DT01QTEVURSkgeworCQlnc3Nfa3JiNV9sdWNpZF9jb250ZXh0 X3YxX3QgKmxjdHg7CisKKwkJcmVzdWx0LT5tYWpvcl9zdGF0dXMgPSBnc3Nfa3JiNV9leHBvcnRf bHVjaWRfc2VjX2NvbnRleHQoCisJCSAgICAmcmVzdWx0LT5taW5vcl9zdGF0dXMsICZjdHgsIDEs ICh2b2lkICopJmxjdHgpOworCQlnc3NkX3ZlcmJvc2Vfb3V0KCJnc3NfbHVjaWQ6IG1haj0weCV4 IG1pbj0weCV4IGxjdHg9JXBcbiIsIHJlc3VsdC0+bWFqb3Jfc3RhdHVzLCByZXN1bHQtPm1pbm9y X3N0YXR1cywgbGN0eCk7CisJCWlmIChyZXN1bHQtPm1ham9yX3N0YXR1cyA9PSBHU1NfU19DT01Q TEVURSAmJgorCQkgICAgbGN0eCAhPSBOVUxMKSB7CisJCQlnc3NkX3ZlcmJvc2Vfb3V0KCJHb3Qg dGhlIHN1Y2tlciEhIik7CisJCQlyZXN1bHQtPmluaXRpYXRlID0gbGN0eC0+aW5pdGlhdGU7CisJ CQlyZXN1bHQtPmVuZHRpbWUgPSBsY3R4LT5lbmR0aW1lOworCQkJcmVzdWx0LT5zZW5kX3NlcSA9 IGxjdHgtPnNlbmRfc2VxOworCQkJcmVzdWx0LT5yZWN2X3NlcSA9IGxjdHgtPnJlY3Zfc2VxOwor CQkJcmVzdWx0LT5wcm90b2NvbCA9IGxjdHgtPnByb3RvY29sOworCQkJaWYgKGxjdHgtPnByb3Rv Y29sID09IDApIHsKKwkJCQlyZXN1bHQtPnJmY19zaWduID0gbGN0eC0+cmZjMTk2NF9rZC5zaWdu X2FsZzsKKwkJCQlyZXN1bHQtPnJmY19zZWFsID0gbGN0eC0+cmZjMTk2NF9rZC5zZWFsX2FsZzsK KwkJCQlyZXN1bHQtPmN0eF90eXBlID0KKwkJCQkgICAgbGN0eC0+cmZjMTk2NF9rZC5jdHhfa2V5 LnR5cGU7CisJCQkJcmVzdWx0LT5jdHhfa2V5Lmxlbmd0aCA9CisJCQkJICAgIGxjdHgtPnJmYzE5 NjRfa2QuY3R4X2tleS5sZW5ndGg7CisJCQkJcmVzdWx0LT5jdHhfa2V5LnZhbHVlID0KKwkJCQkg ICAgbWVtX2FsbG9jKHJlc3VsdC0+Y3R4X2tleS5sZW5ndGgpOworCQkJCW1lbWNweShyZXN1bHQt PmN0eF9rZXkudmFsdWUsCisJCQkJICAgIGxjdHgtPnJmYzE5NjRfa2QuY3R4X2tleS5kYXRhLAor CQkJCSAgICByZXN1bHQtPmN0eF9rZXkubGVuZ3RoKTsKKwkJCX0gZWxzZSBpZiAobGN0eC0+cHJv dG9jb2wgPT0gMSkgeworCQkJCWdzc2RfdmVyYm9zZV9vdXQoImFjY3N1Yj0lZFxuIiwgbGN0eC0+ Y2Z4X2tkLmhhdmVfYWNjZXB0b3Jfc3Via2V5KTsKKwkJCQlnc3NkX3ZlcmJvc2Vfb3V0KCJjdHgg dHk9JWQgbGVuPSVkIGs9JXBcbiIsIGxjdHgtPmNmeF9rZC5jdHhfa2V5LnR5cGUsIGxjdHgtPmNm eF9rZC5jdHhfa2V5Lmxlbmd0aCwgbGN0eC0+Y2Z4X2tkLmN0eF9rZXkuZGF0YSk7CisJCQkJZ3Nz ZF92ZXJib3NlX291dCgic3ViIHR5PSVkIGxlbj0lZCBrPSVwXG4iLCBsY3R4LT5jZnhfa2QuYWNj ZXB0b3Jfc3Via2V5LnR5cGUsIGxjdHgtPmNmeF9rZC5hY2NlcHRvcl9zdWJrZXkubGVuZ3RoLCBs Y3R4LT5jZnhfa2QuYWNjZXB0b3Jfc3Via2V5LmRhdGEpOworCQkJCXJlc3VsdC0+aGF2ZV9zdWJr ZXkgPQorCQkJCSAgICBsY3R4LT5jZnhfa2QuaGF2ZV9hY2NlcHRvcl9zdWJrZXk7CisJCQkJcmVz dWx0LT5jdHhfdHlwZSA9IGxjdHgtPmNmeF9rZC5jdHhfa2V5LnR5cGU7CisJCQkJcmVzdWx0LT5j dHhfa2V5Lmxlbmd0aCA9CisJCQkJICAgIGxjdHgtPmNmeF9rZC5jdHhfa2V5Lmxlbmd0aDsKKwkJ CQlyZXN1bHQtPmN0eF9rZXkudmFsdWUgPQorCQkJCSAgICBtZW1fYWxsb2MocmVzdWx0LT5jdHhf a2V5Lmxlbmd0aCk7CisJCQkJbWVtY3B5KHJlc3VsdC0+Y3R4X2tleS52YWx1ZSwKKwkJCQkgICAg bGN0eC0+Y2Z4X2tkLmN0eF9rZXkuZGF0YSwKKwkJCQkgICAgcmVzdWx0LT5jdHhfa2V5Lmxlbmd0 aCk7CisJCQkJaWYgKHJlc3VsdC0+aGF2ZV9zdWJrZXkgIT0gMCkgeworCQkJCQlyZXN1bHQtPnN1 YmtleV90eXBlID0KKwkJCQkJICAgIGxjdHgtPmNmeF9rZC5hY2NlcHRvcl9zdWJrZXkudHlwZTsK KwkJCQkJcmVzdWx0LT5zdWJrZXlfa2V5Lmxlbmd0aCA9CisJCQkJCSAgICBsY3R4LT5jZnhfa2Qu YWNjZXB0b3Jfc3Via2V5Lmxlbmd0aDsKKwkJCQkJcmVzdWx0LT5zdWJrZXlfa2V5LnZhbHVlID0g bWVtX2FsbG9jKAorCQkJCQkgICAgcmVzdWx0LT5zdWJrZXlfa2V5Lmxlbmd0aCk7CisJCQkJCW1l bWNweShyZXN1bHQtPnN1YmtleV9rZXkudmFsdWUsCisJCQkJCSAgICBsY3R4LT5jZnhfa2QuYWNj ZXB0b3Jfc3Via2V5LmRhdGEsCisJCQkJCSAgICByZXN1bHQtPnN1YmtleV9rZXkubGVuZ3RoKTsK KwkJCQl9IGVsc2UgeworCQkJCQlyZXN1bHQtPnN1YmtleV90eXBlID0gMDsKKwkJCQkJcmVzdWx0 LT5zdWJrZXlfa2V5Lmxlbmd0aCA9IDA7CisJCQkJCXJlc3VsdC0+c3Via2V5X2tleS52YWx1ZSA9 IE5VTEw7CisJCQkJfQorCQkJfQorCQl9CisJfQorCXJldHVybiAoVFJVRSk7Cit9CisjZW5kaWYJ LyogIU1LX01JVEtSQjUgKi8KKworYm9vbF90CiBnc3NkX2RlbGV0ZV9zZWNfY29udGV4dF8xX3N2 YyhkZWxldGVfc2VjX2NvbnRleHRfYXJncyAqYXJncCwgZGVsZXRlX3NlY19jb250ZXh0X3JlcyAq cmVzdWx0LCBzdHJ1Y3Qgc3ZjX3JlcSAqcnFzdHApCiB7CiAJZ3NzX2N0eF9pZF90IGN0eCA9IGdz c2RfZmluZF9yZXNvdXJjZShhcmdwLT5jdHgpOwo= --0000000000009121f8063b56dc86 Content-Type: application/octet-stream; name="kgssapi.patch" Content-Disposition: attachment; filename="kgssapi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mdtic3p61 LS0tIHN5cy9rZ3NzYXBpL2tyYjUva3JiNV9tZWNoLmMuc2F2CTIwMjUtMDctMjcgMTk6MjA6Mjku ODg2MzA5MDAwIC0wNzAwCisrKyBzeXMva2dzc2FwaS9rcmI1L2tyYjVfbWVjaC5jCTIwMjUtMDgt MDEgMTQ6MDA6MjUuMzk0NzExMDAwIC0wNzAwCkBAIC0yMTUsNiArMjE1LDE4IEBAIGNvcHlfa2V5 KHN0cnVjdCBrcmI1X2tleWJsb2NrICpmcm9tLCBzdHJ1Y3Qga3JiNV9rZXlibAogCQkqdG8gPSBm cm9tOwogCWVsc2UKIAkJKnRvID0gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK2NvcHlfbHVjaWRf a2V5KGdzc19rcmI1X2x1Y2lkX2tleV90ICpmcm9tLCBzdHJ1Y3Qga3JiNV9rZXlibG9jayAqdG8p Cit7CisKKwl0by0+a2tfdHlwZSA9IGZyb20tPnR5cGU7CisJdG8tPmtrX2tleS5rZF9sZW5ndGgg PSBmcm9tLT5sZW5ndGg7CisJaWYgKGZyb20tPmxlbmd0aCA+IDApIHsKKwkJdG8tPmtrX2tleS5r ZF9kYXRhID0gbWFsbG9jKGZyb20tPmxlbmd0aCwgTV9HU1NBUEksIE1fV0FJVE9LKTsKKwkJbWVt Y3B5KHRvLT5ra19rZXkua2RfZGF0YSwgZnJvbS0+ZGF0YSwgZnJvbS0+bGVuZ3RoKTsKKwl9CiB9 CiAKIC8qCkBAIC0yNTgsNiArMjcwLDk4IEBAIHN0YXRpYyBPTV91aW50MzIKIH0KIAogc3RhdGlj IE9NX3VpbnQzMgorZ2V0X2x1Y2lkX2tleXMoc3RydWN0IGtyYjVfY29udGV4dCAqa2MpCit7CisJ c3RydWN0IGtyYjVfa2V5YmxvY2sgKmtleWRhdGE7CisJc3RydWN0IGtyYjVfZW5jcnlwdGlvbl9j bGFzcyAqZWM7CisJc3RydWN0IGtyYjVfa2V5X3N0YXRlICprZXk7CisJaW50IGV0eXBlOworCisJ a2V5ZGF0YSA9IE5VTEw7CisJZ2V0X2FjY2VwdG9yX3N1YmtleShrYywgJmtleWRhdGEpOworCWlm ICgha2V5ZGF0YSkKKwkJaWYgKChrYy0+a2NfbW9yZV9mbGFncyAmIEFDQ0VQVE9SX1NVQktFWSkg PT0gMCkKKwkJCWdldF9pbml0aWF0b3Jfc3Via2V5KGtjLCAma2V5ZGF0YSk7CisJaWYgKCFrZXlk YXRhKQorCQlyZXR1cm4gKEdTU19TX0ZBSUxVUkUpOworCisJLyoKKwkgKiBHU1MtQVBJIHRyZWF0 cyBhbGwgREVTIGV0eXBlcyB0aGUgc2FtZSBhbmQgYWxsIERFUzMgZXR5cGVzCisJICogdGhlIHNh bWUuCisJICovCisJc3dpdGNoIChrZXlkYXRhLT5ra190eXBlKSB7CisJY2FzZSBFVFlQRV9ERVNf Q0JDX0NSQzoKKwljYXNlIEVUWVBFX0RFU19DQkNfTUQ0OgorCWNhc2UgRVRZUEVfREVTX0NCQ19N RDU6CisJY2FzZSBFVFlQRV9ERVMzX0NCQ19NRDU6CisJY2FzZSBFVFlQRV9ERVMzX0NCQ19TSEEx OgorCWNhc2UgRVRZUEVfT0xEX0RFUzNfQ0JDX1NIQTE6CisJCXJldHVybiAoR1NTX1NfRkFJTFVS RSk7CisKKwlkZWZhdWx0OgorCQlldHlwZSA9IGtleWRhdGEtPmtrX3R5cGU7CisJfQorCisJZWMg PSBrcmI1X2ZpbmRfZW5jcnlwdGlvbl9jbGFzcyhldHlwZSk7CisJaWYgKCFlYykKKwkJcmV0dXJu IChHU1NfU19GQUlMVVJFKTsKKworCWtleSA9IGtyYjVfY3JlYXRlX2tleShlYyk7CisJa3JiNV9z ZXRfa2V5KGtleSwga2V5ZGF0YS0+a2tfa2V5LmtkX2RhdGEpOworCWtjLT5rY190b2tlbmtleSA9 IGtleTsKKworCS8qCisJICogV2UgbmVlZCBlaWdodCBkZXJpdmVkIGtleXMgZm91ciBmb3Igc2Vu ZGluZyBhbmQKKwkgKiBmb3VyIGZvciByZWNlaXZpbmcuCisJICovCisJaWYgKGlzX2luaXRpYXRv cihrYykpIHsKKwkJLyoKKwkJICogV2UgYXJlIGluaXRpYXRvci4KKwkJICovCisJCWtjLT5rY19z ZW5kX3NlYWxfS2UgPSBrcmI1X2dldF9lbmNyeXB0aW9uX2tleShrZXksCisJCSAgICBLR19VU0FH RV9JTklUSUFUT1JfU0VBTCk7CisJCWtjLT5rY19zZW5kX3NlYWxfS2kgPSBrcmI1X2dldF9pbnRl Z3JpdHlfa2V5KGtleSwKKwkJICAgIEtHX1VTQUdFX0lOSVRJQVRPUl9TRUFMKTsKKwkJa2MtPmtj X3NlbmRfc2VhbF9LYyA9IGtyYjVfZ2V0X2NoZWNrc3VtX2tleShrZXksCisJCSAgICBLR19VU0FH RV9JTklUSUFUT1JfU0VBTCk7CisJCWtjLT5rY19zZW5kX3NpZ25fS2MgPSBrcmI1X2dldF9jaGVj a3N1bV9rZXkoa2V5LAorCQkgICAgS0dfVVNBR0VfSU5JVElBVE9SX1NJR04pOworCisJCWtjLT5r Y19yZWN2X3NlYWxfS2UgPSBrcmI1X2dldF9lbmNyeXB0aW9uX2tleShrZXksCisJCSAgICBLR19V U0FHRV9BQ0NFUFRPUl9TRUFMKTsKKwkJa2MtPmtjX3JlY3Zfc2VhbF9LaSA9IGtyYjVfZ2V0X2lu dGVncml0eV9rZXkoa2V5LAorCQkgICAgS0dfVVNBR0VfQUNDRVBUT1JfU0VBTCk7CisJCWtjLT5r Y19yZWN2X3NlYWxfS2MgPSBrcmI1X2dldF9jaGVja3N1bV9rZXkoa2V5LAorCQkgICAgS0dfVVNB R0VfQUNDRVBUT1JfU0VBTCk7CisJCWtjLT5rY19yZWN2X3NpZ25fS2MgPSBrcmI1X2dldF9jaGVj a3N1bV9rZXkoa2V5LAorCQkgICAgS0dfVVNBR0VfQUNDRVBUT1JfU0lHTik7CisJfSBlbHNlIHsK KwkJLyoKKwkJICogV2UgYXJlIGFjY2VwdG9yLgorCQkgKi8KKwkJa2MtPmtjX3NlbmRfc2VhbF9L ZSA9IGtyYjVfZ2V0X2VuY3J5cHRpb25fa2V5KGtleSwKKwkJICAgIEtHX1VTQUdFX0FDQ0VQVE9S X1NFQUwpOworCQlrYy0+a2Nfc2VuZF9zZWFsX0tpID0ga3JiNV9nZXRfaW50ZWdyaXR5X2tleShr ZXksCisJCSAgICBLR19VU0FHRV9BQ0NFUFRPUl9TRUFMKTsKKwkJa2MtPmtjX3NlbmRfc2VhbF9L YyA9IGtyYjVfZ2V0X2NoZWNrc3VtX2tleShrZXksCisJCSAgICBLR19VU0FHRV9BQ0NFUFRPUl9T RUFMKTsKKwkJa2MtPmtjX3NlbmRfc2lnbl9LYyA9IGtyYjVfZ2V0X2NoZWNrc3VtX2tleShrZXks CisJCSAgICBLR19VU0FHRV9BQ0NFUFRPUl9TSUdOKTsKKworCQlrYy0+a2NfcmVjdl9zZWFsX0tl ID0ga3JiNV9nZXRfZW5jcnlwdGlvbl9rZXkoa2V5LAorCQkgICAgS0dfVVNBR0VfSU5JVElBVE9S X1NFQUwpOworCQlrYy0+a2NfcmVjdl9zZWFsX0tpID0ga3JiNV9nZXRfaW50ZWdyaXR5X2tleShr ZXksCisJCSAgICBLR19VU0FHRV9JTklUSUFUT1JfU0VBTCk7CisJCWtjLT5rY19yZWN2X3NlYWxf S2MgPSBrcmI1X2dldF9jaGVja3N1bV9rZXkoa2V5LAorCQkgICAgS0dfVVNBR0VfSU5JVElBVE9S X1NFQUwpOworCQlrYy0+a2NfcmVjdl9zaWduX0tjID0ga3JiNV9nZXRfY2hlY2tzdW1fa2V5KGtl eSwKKwkJICAgIEtHX1VTQUdFX0lOSVRJQVRPUl9TSUdOKTsKKwl9CisKKwlyZXR1cm4gKEdTU19T X0NPTVBMRVRFKTsKK30KKworc3RhdGljIE9NX3VpbnQzMgogZ2V0X2tleXMoc3RydWN0IGtyYjVf Y29udGV4dCAqa2MpCiB7CiAJc3RydWN0IGtyYjVfa2V5YmxvY2sgKmtleWRhdGE7CkBAIC00MDIs NiArNTA2LDc3IEBAIHN0YXRpYyBPTV91aW50MzIKIH0KIAogc3RhdGljIE9NX3VpbnQzMgora3Ji NV9sdWNpZF9pbXBvcnQoZ3NzX2N0eF9pZF90IGN0eCwKKyAgICBlbnVtIHNlY19jb250ZXh0X2Zv cm1hdCBmb3JtYXQsCisgICAgY29uc3QgZ3NzX2J1ZmZlcl90IGNvbnRleHRfdG9rZW4pCit7CisJ c3RydWN0IGtyYjVfY29udGV4dCAqa2MgPSAoc3RydWN0IGtyYjVfY29udGV4dCAqKWN0eDsKKwln c3Nfa3JiNV9sdWNpZF9jb250ZXh0X3YxX3QgKmxjdHggPSAoZ3NzX2tyYjVfbHVjaWRfY29udGV4 dF92MV90ICopCisJICAgIGNvbnRleHRfdG9rZW47CisJT01fdWludDMyIHJlczsKKworcHJpbnRm KCJrcmI1X2ltcG9ydDogaW5pdGlhdGU9JWQgZW5kdGltZT0lZCBzZW5kX3NlcT0lbGQgcmVjdl9z ZXE9JWxkIHByb3RvPSVkXG4iLCBsY3R4LT5pbml0aWF0ZSwgbGN0eC0+ZW5kdGltZSwgbGN0eC0+ c2VuZF9zZXEsIGxjdHgtPnJlY3Zfc2VxLCBsY3R4LT5wcm90b2NvbCk7CisJa2MtPmtjX21vcmVf ZmxhZ3MgPSAwOworCWlmIChsY3R4LT5wcm90b2NvbCA9PSAwKSB7CisJCWtjLT5rY19ja3N1bXR5 cGUgPSBsY3R4LT5yZmMxOTY0X2tkLnNpZ25fYWxnOworCQlrYy0+a2Nfa2V5dHlwZSA9IGxjdHgt PnJmYzE5NjRfa2Quc2VhbF9hbGc7CisJCWNvcHlfbHVjaWRfa2V5KCZsY3R4LT5yZmMxOTY0X2tk LmN0eF9rZXksCisJCSAgICAma2MtPmtjX2tleWJsb2NrKTsKKwl9IGVsc2UgaWYgKGxjdHgtPnBy b3RvY29sID09IDEpIHsKK3ByaW50ZigiYWNjZXB0b3I9JWRcbiIsIGxjdHgtPmNmeF9rZC5oYXZl X2FjY2VwdG9yX3N1YmtleSk7CisJCWlmIChsY3R4LT5jZnhfa2QuaGF2ZV9hY2NlcHRvcl9zdWJr ZXkgIT0gMCkgeworCQkJaWYgKGxjdHgtPmluaXRpYXRlICE9IDApCisJCQkJY29weV9sdWNpZF9r ZXkoJmxjdHgtPmNmeF9rZC5hY2NlcHRvcl9zdWJrZXksCisJCQkJICAgICZrYy0+a2NfcmVtb3Rl X3N1YmtleSk7CisJCQllbHNlCisJCQkJY29weV9sdWNpZF9rZXkoJmxjdHgtPmNmeF9rZC5hY2Nl cHRvcl9zdWJrZXksCisJCQkJICAgICZrYy0+a2NfbG9jYWxfc3Via2V5KTsKKwkJCWtjLT5rY19j a3N1bXR5cGUgPSBsY3R4LT5jZnhfa2QuYWNjZXB0b3Jfc3Via2V5LnR5cGU7CisJCQlrYy0+a2Nf a2V5dHlwZSA9IGxjdHgtPmNmeF9rZC5hY2NlcHRvcl9zdWJrZXkudHlwZTsKKwkJCWtjLT5rY19t b3JlX2ZsYWdzIHw9IEFDQ0VQVE9SX1NVQktFWTsKKwkJfSBlbHNlIHsKKwkJCWlmIChsY3R4LT5p bml0aWF0ZSAhPSAwKQorCQkJCWNvcHlfbHVjaWRfa2V5KCZsY3R4LT5jZnhfa2QuY3R4X2tleSwK KwkJCQkgICAgJmtjLT5rY19yZW1vdGVfc3Via2V5KTsKKwkJCWVsc2UKKwkJCQljb3B5X2x1Y2lk X2tleSgmbGN0eC0+Y2Z4X2tkLmN0eF9rZXksCisJCQkJICAgICZrYy0+a2NfbG9jYWxfc3Via2V5 KTsKKwkJCWtjLT5rY19ja3N1bXR5cGUgPSBsY3R4LT5jZnhfa2QuY3R4X2tleS50eXBlOworCQkJ a2MtPmtjX2tleXR5cGUgPSBsY3R4LT5jZnhfa2QuY3R4X2tleS50eXBlOworCQl9CisJfSBlbHNl IHsKKwkJcmV0dXJuIChHU1NfU19ERUZFQ1RJVkVfVE9LRU4pOworCX0KKyNpZmRlZiBub3Rub3cK KwlpZiAoZmxhZ3MgJiBTQ19LRVlCTE9DSykKKwkJZ2V0X2tleWJsb2NrKCZwLCAmbGVuLCAma2Mt PmtjX2tleWJsb2NrKTsKKwlpZiAoZmxhZ3MgJiBTQ19MT0NBTF9TVUJLRVkpCisJCWdldF9rZXli bG9jaygmcCwgJmxlbiwgJmtjLT5rY19sb2NhbF9zdWJrZXkpOworCWlmIChmbGFncyAmIFNDX1JF TU9URV9TVUJLRVkpCisJCWdldF9rZXlibG9jaygmcCwgJmxlbiwgJmtjLT5rY19yZW1vdGVfc3Vi a2V5KTsKKyNlbmRpZgorCWtjLT5rY19sb2NhbF9zZXFudW1iZXIgPSBsY3R4LT5zZW5kX3NlcTsK KwlrYy0+a2NfcmVtb3RlX3NlcW51bWJlciA9IGxjdHgtPnJlY3Zfc2VxOworCWlmIChsY3R4LT5p bml0aWF0ZSAhPSAwKQorCQlrYy0+a2NfbW9yZV9mbGFncyB8PSBMT0NBTDsKKwlrYy0+a2NfbGlm ZXRpbWUgPSBsY3R4LT5lbmR0aW1lOworCWtjLT5rY19tc2dfb3JkZXIua21fZmxhZ3MgPSAwOwor CisJcmVzID0gZ2V0X2x1Y2lkX2tleXMoa2MpOworCWlmIChHU1NfRVJST1IocmVzKSkKKwkJcmV0 dXJuIChyZXMpOworCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHRoZXNlIGFueW1vcmUuCisJICov CisJZGVsZXRlX2tleWJsb2NrKCZrYy0+a2Nfa2V5YmxvY2spOworCWRlbGV0ZV9rZXlibG9jaygm a2MtPmtjX2xvY2FsX3N1YmtleSk7CisJZGVsZXRlX2tleWJsb2NrKCZrYy0+a2NfcmVtb3RlX3N1 YmtleSk7CisKKwlyZXR1cm4gKEdTU19TX0NPTVBMRVRFKTsKK30KKworc3RhdGljIE9NX3VpbnQz Mgoga3JiNV9pbXBvcnQoZ3NzX2N0eF9pZF90IGN0eCwKICAgICBlbnVtIHNlY19jb250ZXh0X2Zv cm1hdCBmb3JtYXQsCiAgICAgY29uc3QgZ3NzX2J1ZmZlcl90IGNvbnRleHRfdG9rZW4pCkBAIC00 MTIsNiArNTg3LDEwIEBAIGtyYjVfaW1wb3J0KGdzc19jdHhfaWRfdCBjdHgsCiAJc2l6ZV90IGxl biA9IGNvbnRleHRfdG9rZW4tPmxlbmd0aDsKIAl1aW50MzJfdCBmbGFnczsKIAlpbnQgaTsKKwor CS8qIEZvciBNSVQsIGp1c3QgY2FsbCBrcmI1X2x1Y2lkX2ltcG9ydCgpLiAqLworCWlmIChmb3Jt YXQgPT0gTUlUX1YxKQorCQlyZXR1cm4gKGtyYjVfbHVjaWRfaW1wb3J0KGN0eCwgZm9ybWF0LCBj b250ZXh0X3Rva2VuKSk7CiAKIAkvKgogCSAqIFdlIHN1cHBvcnQgaGVpbWRhbCAwLjYgYW5kIGhl aW1kYWwgMS4xCi0tLSBzeXMva2dzc2FwaS9nc3NfaW1wbC5jLnNhdgkyMDI1LTA3LTMxIDEzOjE4 OjM5LjM5MTc5MTAwMCAtMDcwMAorKysgc3lzL2tnc3NhcGkvZ3NzX2ltcGwuYwkyMDI1LTA4LTAx IDA3OjA5OjA5LjU5MDE3NDAwMCAtMDcwMApAQCAtMTkyLDEyICsxOTIsMTggQEAgT01fdWludDMy CiB9CiAKIE9NX3VpbnQzMgota2dzc190cmFuc2Zlcl9jb250ZXh0KGdzc19jdHhfaWRfdCBjdHgp CitrZ3NzX3RyYW5zZmVyX2NvbnRleHQoZ3NzX2N0eF9pZF90IGN0eCwgdm9pZCAqbGN0eCkKIHsK IAlzdHJ1Y3QgZXhwb3J0X3NlY19jb250ZXh0X3JlcyByZXM7CiAJc3RydWN0IGV4cG9ydF9zZWNf Y29udGV4dF9hcmdzIGFyZ3M7CiAJZW51bSBjbG50X3N0YXQgc3RhdDsKIAlPTV91aW50MzIgbWFq X3N0YXQ7CisKKwlpZiAobGN0eCAhPSBOVUxMKSB7CisJCW1hal9zdGF0ID0gS0dTU19JTVBPUlQo Y3R4LCBNSVRfVjEsIGxjdHgpOworCQljdHgtPmhhbmRsZSA9IDA7CisJCXJldHVybiAobWFqX3N0 YXQpOworCX0KIAogCUtHU1NfQ1VSVk5FVF9TRVRfUVVJRVQoS0dTU19URF9UT19WTkVUKGN1cnRo cmVhZCkpOwogCWlmICghS0dTU19WTkVUKGtnc3NfZ3NzZF9oYW5kbGUpKSB7Ci0tLSBzeXMva2dz c2FwaS9nc3NhcGkuaC5zYXYJMjAyNS0wNy0yOCAxNDo1NDo1OS41ODg3NzAwMDAgLTA3MDAKKysr IHN5cy9rZ3NzYXBpL2dzc2FwaS5oCTIwMjUtMDgtMDEgMDg6MDg6MzUuMjMwMTM2MDAwIC0wNzAw CkBAIC03Nyw2ICs3Nyw1NCBAQCB0eXBlZGVmIGludCBnc3NfY3JlZF91c2FnZV90OwogdHlwZWRl ZiBpbnQgZ3NzX2NyZWRfdXNhZ2VfdDsKIAogLyoKKyAqIFRoZSBzdHJ1Y3R1cmUgcmV0dXJuZWQg YnkgZ3NzX2tyYjVfZXhwb3J0X2x1Y2lkX3NlY19jb250ZXh0KCkuCisgKi8KK3R5cGVkZWYgc3Ry dWN0IGdzc19rcmI1X2x1Y2lkX2tleSB7CisgICAgT01fdWludDMyICAgICAgIHR5cGU7ICAgICAg ICAgICAvKiBrZXkgZW5jcnlwdGlvbiB0eXBlICovCisgICAgT01fdWludDMyICAgICAgIGxlbmd0 aDsgICAgICAgICAvKiBsZW5ndGggb2Yga2V5IGRhdGEgKi8KKyAgICB2b2lkICogICAgICAgICAg ZGF0YTsgICAgICAgICAgIC8qIGFjdHVhbCBrZXkgZGF0YSAqLworfSBnc3Nfa3JiNV9sdWNpZF9r ZXlfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZ3NzX2tyYjVfcmZjMTk2NF9rZXlkYXRhIHsKKyAgICBP TV91aW50MzIgICAgICAgc2lnbl9hbGc7ICAgICAgIC8qIHNpZ25pbmcgYWxnb3JpdGhtICovCisg ICAgT01fdWludDMyICAgICAgIHNlYWxfYWxnOyAgICAgICAvKiBzZWFsL2VuY3J5cHQgYWxnb3Jp dGhtICovCisgICAgZ3NzX2tyYjVfbHVjaWRfa2V5X3QgICAgY3R4X2tleTsKKyAgICAvKiBDb250 ZXh0IGtleQorICAgICAgIChLZXJiZXJvcyBzZXNzaW9uIGtleSBvciBzdWJrZXkpICovCit9IGdz c19rcmI1X3JmYzE5NjRfa2V5ZGF0YV90OworCit0eXBlZGVmIHN0cnVjdCBnc3Nfa3JiNV9jZnhf a2V5ZGF0YSB7CisgICAgT01fdWludDMyICAgICAgICAgICAgICAgaGF2ZV9hY2NlcHRvcl9zdWJr ZXk7CisgICAgLyogMSBpZiB0aGVyZSBpcyBhbiBhY2NlcHRvcl9zdWJrZXkKKyAgICAgICBwcmVz ZW50LCAwIG90aGVyd2lzZSAqLworICAgIGdzc19rcmI1X2x1Y2lkX2tleV90ICAgIGN0eF9rZXk7 CisgICAgLyogQ29udGV4dCBrZXkKKyAgICAgICAoS2VyYmVyb3Mgc2Vzc2lvbiBrZXkgb3Igc3Vi a2V5KSAqLworICAgIGdzc19rcmI1X2x1Y2lkX2tleV90ICAgIGFjY2VwdG9yX3N1YmtleTsKKyAg ICAvKiBhY2NlcHRvci1hc3NlcnRlZCBzdWJrZXkgb3IKKyAgICAgICAwJ3MgaWYgbm8gYWNjZXB0 b3Igc3Via2V5ICovCit9IGdzc19rcmI1X2NmeF9rZXlkYXRhX3Q7CisKK3R5cGVkZWYgc3RydWN0 IGdzc19rcmI1X2x1Y2lkX2NvbnRleHRfdjEgeworICAgIE9NX3VpbnQzMiAgICAgICB2ZXJzaW9u OyAgICAgICAgLyogU3RydWN0dXJlIHZlcnNpb24gbnVtYmVyICgxKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTVVTVCBiZSBhdCBiZWdpbm5pbmcgb2Ygc3RydWN0ISAq LworICAgIE9NX3VpbnQzMiAgICAgICBpbml0aWF0ZTsgICAgICAgLyogQXJlIHdlIHRoZSBpbml0 aWF0b3I/ICovCisgICAgT01fdWludDMyICAgICAgIGVuZHRpbWU7ICAgICAgICAvKiBleHBpcmF0 aW9uIHRpbWUgb2YgY29udGV4dCAqLworICAgIHVpbnQ2NF90ICAgICAgICBzZW5kX3NlcTsgICAg ICAgLyogc2VuZGVyIHNlcXVlbmNlIG51bWJlciAqLworICAgIHVpbnQ2NF90ICAgICAgICByZWN2 X3NlcTsgICAgICAgLyogcmVjZWl2ZSBzZXF1ZW5jZSBudW1iZXIgKi8KKyAgICBPTV91aW50MzIg ICAgICAgcHJvdG9jb2w7ICAgICAgIC8qIDA6IHJmYzE5NjQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxOiBkcmFmdC1pZXRmLWtyYi13Zy1nc3NhcGktY2Z4LTA3ICov CisgICAgLyoKKyAgICAgKiBpZiAocHJvdG9jb2wgPT0gMCkgcmZjMTk2NF9rZCBzaG91bGQgYmUg dXNlZAorICAgICAqIGFuZCBjZnhfa2QgY29udGVudHMgYXJlIGludmFsaWQgYW5kIHNob3VsZCBi ZSB6ZXJvCisgICAgICogaWYgKHByb3RvY29sID09IDEpIGNmeF9rZCBzaG91bGQgYmUgdXNlZAor ICAgICAqIGFuZCByZmMxOTY0X2tkIGNvbnRlbnRzIGFyZSBpbnZhbGlkIGFuZCBzaG91bGQgYmUg emVybworICAgICAqLworICAgIGdzc19rcmI1X3JmYzE5NjRfa2V5ZGF0YV90IHJmYzE5NjRfa2Q7 CisgICAgZ3NzX2tyYjVfY2Z4X2tleWRhdGFfdCAgICAgY2Z4X2tkOworfSBnc3Nfa3JiNV9sdWNp ZF9jb250ZXh0X3YxX3Q7CisKKy8qCiAgKiBGbGFnIGJpdHMgZm9yIGNvbnRleHQtbGV2ZWwgc2Vy dmljZXMuCiAgKi8KICNkZWZpbmUgR1NTX0NfREVMRUdfRkxBRyAgICAgIDEKQEAgLTQwNiw2ICs0 NTQsMjMgQEAgT01fdWludDMyIGdzc19pbml0X3NlY19jb250ZXh0CiAJICAgICAgKTsKIAogT01f dWludDMyIGdzc19pbml0X3NlY19jb250ZXh0CisJICAgICAgKE9NX3VpbnQzMiAqLCAgICAgICAg ICAgIC8qIG1pbm9yX3N0YXR1cyAqLworCSAgICAgICBjb25zdCBnc3NfY3JlZF9pZF90LCAgICAv KiBpbml0aWF0b3JfY3JlZF9oYW5kbGUgKi8KKwkgICAgICAgZ3NzX2N0eF9pZF90ICosICAgICAg ICAgLyogY29udGV4dF9oYW5kbGUgKi8KKwkgICAgICAgY29uc3QgZ3NzX25hbWVfdCwgICAgICAg LyogdGFyZ2V0X25hbWUgKi8KKwkgICAgICAgY29uc3QgZ3NzX09JRCwgICAgICAgICAgLyogbWVj aF90eXBlICovCisJICAgICAgIE9NX3VpbnQzMiwgICAgICAgICAgICAgIC8qIHJlcV9mbGFncyAq LworCSAgICAgICBPTV91aW50MzIsICAgICAgICAgICAgICAvKiB0aW1lX3JlcSAqLworCSAgICAg ICBjb25zdCBnc3NfY2hhbm5lbF9iaW5kaW5nc190LAorCQkJCSAgICAgICAvKiBpbnB1dF9jaGFu X2JpbmRpbmdzICovCisJICAgICAgIGNvbnN0IGdzc19idWZmZXJfdCwgICAgIC8qIGlucHV0X3Rv a2VuICovCisJICAgICAgIGdzc19PSUQgKiwgICAgICAgICAgICAgIC8qIGFjdHVhbF9tZWNoX3R5 cGUgKi8KKwkgICAgICAgZ3NzX2J1ZmZlcl90LCAgICAgICAgICAgLyogb3V0cHV0X3Rva2VuICov CisJICAgICAgIE9NX3VpbnQzMiAqLCAgICAgICAgICAgIC8qIHJldF9mbGFncyAqLworCSAgICAg ICBPTV91aW50MzIgKiAgICAgICAgICAgICAvKiB0aW1lX3JlYyAqLworCSAgICAgICk7CisKK09N X3VpbnQzMiBnc3NfaW5pdF9zZWNfY29udGV4dF9wbHVzCiAJICAgICAgKE9NX3VpbnQzMiAqLCAg ICAgICAgICAgIC8qIG1pbm9yX3N0YXR1cyAqLwogCSAgICAgICBjb25zdCBnc3NfY3JlZF9pZF90 LCAgICAvKiBpbml0aWF0b3JfY3JlZF9oYW5kbGUgKi8KIAkgICAgICAgZ3NzX2N0eF9pZF90ICos ICAgICAgICAgLyogY29udGV4dF9oYW5kbGUgKi8KQEAgLTQyMiw2ICs0ODcsMTEgQEAgT01fdWlu dDMyIGdzc19pbml0X3NlY19jb250ZXh0CiAJICAgICAgIE9NX3VpbnQzMiAqICAgICAgICAgICAg IC8qIHRpbWVfcmVjICovCiAJICAgICAgKTsKIAorT01fdWludDMyIGdzc19zdXBwb3J0c19sdWNp ZAorCSAgICAgIChPTV91aW50MzIgKiwgICAgICAgICAgICAvKiBtaW5vcl9zdGF0dXMgKi8KKwkg ICAgICAgT01fdWludDMyICogICAgICAgICAgICAgIC8qIHZlcnMgKi8KKwkgICAgICApOworCiBP TV91aW50MzIgZ3NzX2FjY2VwdF9zZWNfY29udGV4dAogCSAgICAgIChPTV91aW50MzIgKiwgICAg ICAgICAgICAvKiBtaW5vcl9zdGF0dXMgKi8KIAkgICAgICAgZ3NzX2N0eF9pZF90ICosICAgICAg ICAgLyogY29udGV4dF9oYW5kbGUgKi8KQEAgLTQzNyw2ICs1MDcsMjEgQEAgT01fdWludDMyIGdz c19hY2NlcHRfc2VjX2NvbnRleHQKIAkgICAgICAgZ3NzX2NyZWRfaWRfdCAqICAgICAgICAgLyog ZGVsZWdhdGVkX2NyZWRfaGFuZGxlICovCiAJICAgICAgKTsKIAorT01fdWludDMyIGdzc19hY2Nl cHRfc2VjX2NvbnRleHRfcGx1cworCSAgICAgIChPTV91aW50MzIgKiwgICAgICAgICAgICAvKiBt aW5vcl9zdGF0dXMgKi8KKwkgICAgICAgZ3NzX2N0eF9pZF90ICosICAgICAgICAgLyogY29udGV4 dF9oYW5kbGUgKi8KKwkgICAgICAgY29uc3QgZ3NzX2NyZWRfaWRfdCwgICAgLyogYWNjZXB0b3Jf Y3JlZF9oYW5kbGUgKi8KKwkgICAgICAgY29uc3QgZ3NzX2J1ZmZlcl90LCAgICAgLyogaW5wdXRf dG9rZW5fYnVmZmVyICovCisJICAgICAgIGNvbnN0IGdzc19jaGFubmVsX2JpbmRpbmdzX3QsCisJ CQkJICAgICAgIC8qIGlucHV0X2NoYW5fYmluZGluZ3MgKi8KKwkgICAgICAgZ3NzX25hbWVfdCAq LCAgICAgICAgICAgLyogc3JjX25hbWUgKi8KKwkgICAgICAgZ3NzX09JRCAqLCAgICAgICAgICAg ICAgLyogbWVjaF90eXBlICovCisJICAgICAgIGdzc19idWZmZXJfdCwgICAgICAgICAgIC8qIG91 dHB1dF90b2tlbiAqLworCSAgICAgICBPTV91aW50MzIgKiwgICAgICAgICAgICAvKiByZXRfZmxh Z3MgKi8KKwkgICAgICAgT01fdWludDMyICosICAgICAgICAgICAgLyogdGltZV9yZWMgKi8KKwkg ICAgICAgZ3NzX2NyZWRfaWRfdCAqICAgICAgICAgLyogZGVsZWdhdGVkX2NyZWRfaGFuZGxlICov CisJICAgICAgKTsKKwogT01fdWludDMyIGdzc19kZWxldGVfc2VjX2NvbnRleHQKIAkgICAgICAo T01fdWludDMyICosICAgICAgICAgICAgLyogbWlub3Jfc3RhdHVzICovCiAJICAgICAgIGdzc19j dHhfaWRfdCAqLCAgICAgICAgIC8qIGNvbnRleHRfaGFuZGxlICovCi0tLSBzeXMva2dzc2FwaS9n c3NkLnguc2F2CTIwMjUtMDctMjggMTQ6MjA6MTAuMzcwMDE5MDAwIC0wNzAwCisrKyBzeXMva2dz c2FwaS9nc3NkLngJMjAyNS0wOC0wMSAwODowODo1MS4xNjIxODcwMDAgLTA3MDAKQEAgLTcwLDYg KzcwLDQwIEBAIHN0cnVjdCBpbml0X3NlY19jb250ZXh0X2FyZ3MgewogCWdzc19idWZmZXJfZGVz YyBpbnB1dF90b2tlbjsKIH07CiAKK3N0cnVjdCBpbml0X3NlY19jb250ZXh0X3BsdXNfcmVzIHsK Kwl1aW50MzJfdAltYWpvcl9zdGF0dXM7CisJdWludDMyX3QJbWlub3Jfc3RhdHVzOworCWdzc2Rf Y3R4X2lkX3QJY3R4OworCWdzc19PSUQJCWFjdHVhbF9tZWNoX3R5cGU7CisJZ3NzX2J1ZmZlcl9k ZXNjIG91dHB1dF90b2tlbjsKKwl1aW50MzJfdAlyZXRfZmxhZ3M7CisJdWludDMyX3QJdGltZV9y ZWM7CisJdWludDMyX3QJaW5pdGlhdGU7CisJdWludDMyX3QJZW5kdGltZTsKKwl1aW50NjRfdAlz ZW5kX3NlcTsKKwl1aW50NjRfdAlyZWN2X3NlcTsKKwl1aW50MzJfdAlwcm90b2NvbDsKKwl1aW50 MzJfdAlyZmNfc2lnbjsKKwl1aW50MzJfdAlyZmNfc2VhbDsKKwl1aW50MzJfdAloYXZlX3N1Ymtl eTsKKwl1aW50MzJfdAljdHhfdHlwZTsKKwlnc3NfYnVmZmVyX2Rlc2MJY3R4X2tleTsKKwl1aW50 MzJfdAlzdWJrZXlfdHlwZTsKKwlnc3NfYnVmZmVyX2Rlc2MJc3Via2V5X2tleTsKK307CisKK3N0 cnVjdCBpbml0X3NlY19jb250ZXh0X3BsdXNfYXJncyB7CisJdWludDMyX3QJdWlkOworCWdzc2Rf Y3JlZF9pZF90CWNyZWQ7CisJZ3NzZF9jdHhfaWRfdAljdHg7CisJZ3NzZF9uYW1lX3QJbmFtZTsK Kwlnc3NfT0lECQltZWNoX3R5cGU7CisJdWludDMyX3QJcmVxX2ZsYWdzOworCXVpbnQzMl90CXRp bWVfcmVxOworCWdzc19jaGFubmVsX2JpbmRpbmdzX3QgaW5wdXRfY2hhbl9iaW5kaW5nczsKKwln c3NfYnVmZmVyX2Rlc2MgaW5wdXRfdG9rZW47Cit9OworCiBzdHJ1Y3QgYWNjZXB0X3NlY19jb250 ZXh0X3JlcyB7CiAJdWludDMyX3QJbWFqb3Jfc3RhdHVzOwogCXVpbnQzMl90CW1pbm9yX3N0YXR1 czsKQEAgLTgzLDcgKzExNywzOCBAQCBzdHJ1Y3QgYWNjZXB0X3NlY19jb250ZXh0X2FyZ3Mgewog fTsKIAogc3RydWN0IGFjY2VwdF9zZWNfY29udGV4dF9hcmdzIHsKKwlnc3NkX2N0eF9pZF90CWN0 eDsKKwlnc3NkX2NyZWRfaWRfdAljcmVkOworCWdzc19idWZmZXJfZGVzYwlpbnB1dF90b2tlbjsK Kwlnc3NfY2hhbm5lbF9iaW5kaW5nc190IGlucHV0X2NoYW5fYmluZGluZ3M7Cit9OworCitzdHJ1 Y3QgYWNjZXB0X3NlY19jb250ZXh0X3BsdXNfcmVzIHsKKwl1aW50MzJfdAltYWpvcl9zdGF0dXM7 CisJdWludDMyX3QJbWlub3Jfc3RhdHVzOwogCWdzc2RfY3R4X2lkX3QJY3R4OworCWdzc2RfbmFt ZV90CXNyY19uYW1lOworCWdzc19PSUQJCW1lY2hfdHlwZTsKKwlnc3NfYnVmZmVyX2Rlc2MJb3V0 cHV0X3Rva2VuOworCXVpbnQzMl90CXJldF9mbGFnczsKKwl1aW50MzJfdAl0aW1lX3JlYzsKKwln c3NkX2NyZWRfaWRfdAlkZWxlZ2F0ZWRfY3JlZF9oYW5kbGU7CisJdWludDMyX3QJaW5pdGlhdGU7 CisJdWludDMyX3QJZW5kdGltZTsKKwl1aW50NjRfdAlzZW5kX3NlcTsKKwl1aW50NjRfdAlyZWN2 X3NlcTsKKwl1aW50MzJfdAlwcm90b2NvbDsKKwl1aW50MzJfdAlyZmNfc2lnbjsKKwl1aW50MzJf dAlyZmNfc2VhbDsKKwl1aW50MzJfdAloYXZlX3N1YmtleTsKKwl1aW50MzJfdAljdHhfdHlwZTsK Kwlnc3NfYnVmZmVyX2Rlc2MJY3R4X2tleTsKKwl1aW50MzJfdAlzdWJrZXlfdHlwZTsKKwlnc3Nf YnVmZmVyX2Rlc2MJc3Via2V5X2tleTsKK307CisKK3N0cnVjdCBhY2NlcHRfc2VjX2NvbnRleHRf cGx1c19hcmdzIHsKKwlnc3NkX2N0eF9pZF90CWN0eDsKIAlnc3NkX2NyZWRfaWRfdAljcmVkOwog CWdzc19idWZmZXJfZGVzYwlpbnB1dF90b2tlbjsKIAlnc3NfY2hhbm5lbF9iaW5kaW5nc190IGlu cHV0X2NoYW5fYmluZGluZ3M7CkBAIC0xMDEsNyArMTY2LDggQEAgZW51bSBzZWNfY29udGV4dF9m b3JtYXQgewogCiBlbnVtIHNlY19jb250ZXh0X2Zvcm1hdCB7CiAJS0dTU19IRUlNREFMXzBfNiwK LQlLR1NTX0hFSU1EQUxfMV8xCisJS0dTU19IRUlNREFMXzFfMSwKKwlNSVRfVjEKIH07CiAKIHN0 cnVjdCBleHBvcnRfc2VjX2NvbnRleHRfcmVzIHsKQEAgLTIyOSw2ICsyOTUsMTEgQEAgc3RydWN0 IGlwX3RvX2Ruc19hcmdzIHsKIAljaGFyCQlpcF9hZGRyPE5JX01BWEhPU1Q+OwogfTsKIAorc3Ry dWN0IHN1cHBvcnRzX2x1Y2lkX3JlcyB7CisJdWludDMyX3QJbWFqb3Jfc3RhdHVzOworCXVpbnQz Ml90CXZlcnM7Cit9OworCiBwcm9ncmFtIEdTU0QgewogCXZlcnNpb24gR1NTRFZFUlMgewogCQl2 b2lkIEdTU0RfTlVMTCh2b2lkKSA9IDA7CkBAIC0yNzQsNSArMzQ1LDE0IEBAIHByb2dyYW0gR1NT RCB7CiAKIAkJaXBfdG9fZG5zX3JlcwogCQlHU1NEX0lQX1RPX0ROUyhpcF90b19kbnNfYXJncykg PSAxNDsKKworCQlpbml0X3NlY19jb250ZXh0X3BsdXNfcmVzCisJCUdTU0RfSU5JVF9TRUNfQ09O VEVYVF9QTFVTKGluaXRfc2VjX2NvbnRleHRfcGx1c19hcmdzKSA9IDE1OworCQkJCisJCWFjY2Vw dF9zZWNfY29udGV4dF9wbHVzX3JlcworCQlHU1NEX0FDQ0VQVF9TRUNfQ09OVEVYVF9QTFVTKGFj Y2VwdF9zZWNfY29udGV4dF9wbHVzX2FyZ3MpID0gMTY7CisKKwkJc3VwcG9ydHNfbHVjaWRfcmVz CisJCUdTU0RfU1VQUE9SVFNfTFVDSUQodm9pZCkgPSAxNzsKIAl9ID0gMTsKIH0gPSAweDQwNjc3 MzczOwotLS0gc3lzL2tnc3NhcGkvZ3NzX2luaXRfc2VjX2NvbnRleHQuYy5zYXYJMjAyNS0wNy0y OCAxNToxODozOS4xNDg3OTUwMDAgLTA3MDAKKysrIHN5cy9rZ3NzYXBpL2dzc19pbml0X3NlY19j b250ZXh0LmMJMjAyNS0wOC0wMSAwODoyODowMi42ODk2NjYwMDAgLTA3MDAKQEAgLTU3LDggKzU3 LDggQEAgZ3NzX2luaXRfc2VjX2NvbnRleHQoT01fdWludDMyICogbWlub3Jfc3RhdHVzLAogICAg IE9NX3VpbnQzMiAqIHJldF9mbGFncywKICAgICBPTV91aW50MzIgKiB0aW1lX3JlYykKIHsKLQlz dHJ1Y3QgaW5pdF9zZWNfY29udGV4dF9yZXMgcmVzOwotCXN0cnVjdCBpbml0X3NlY19jb250ZXh0 X2FyZ3MgYXJnczsKKwlzdHJ1Y3QgaW5pdF9zZWNfY29udGV4dF9wbHVzX3JlcyByZXM7CisJc3Ry dWN0IGluaXRfc2VjX2NvbnRleHRfcGx1c19hcmdzIGFyZ3M7CiAJZW51bSBjbG50X3N0YXQgc3Rh dDsKIAlnc3NfY3R4X2lkX3QgY3R4ID0gKmNvbnRleHRfaGFuZGxlOwogCUNMSUVOVCAqY2w7CkBA IC05MSw3ICs5MSw3IEBAIGdzc19pbml0X3NlY19jb250ZXh0KE9NX3VpbnQzMiAqIG1pbm9yX3N0 YXR1cywKIAl9CiAKIAliemVybygmcmVzLCBzaXplb2YocmVzKSk7Ci0Jc3RhdCA9IGdzc2RfaW5p dF9zZWNfY29udGV4dF8xKCZhcmdzLCAmcmVzLCBjbCk7CisJc3RhdCA9IGdzc2RfaW5pdF9zZWNf Y29udGV4dF9wbHVzXzEoJmFyZ3MsICZyZXMsIGNsKTsKIAlDTE5UX1JFTEVBU0UoY2wpOwogCWlm IChzdGF0ICE9IFJQQ19TVUNDRVNTKSB7CiAJCSptaW5vcl9zdGF0dXMgPSBzdGF0OwpAQCAtMTAx LDcgKzEwMSw3IEBAIGdzc19pbml0X3NlY19jb250ZXh0KE9NX3VpbnQzMiAqIG1pbm9yX3N0YXR1 cywKIAlpZiAocmVzLm1ham9yX3N0YXR1cyAhPSBHU1NfU19DT01QTEVURQogCSAgICAmJiByZXMu bWFqb3Jfc3RhdHVzICE9IEdTU19TX0NPTlRJTlVFX05FRURFRCkgewogCQkqbWlub3Jfc3RhdHVz ID0gcmVzLm1pbm9yX3N0YXR1czsKLQkJeGRyX2ZyZWUoKHhkcnByb2NfdCkgeGRyX2luaXRfc2Vj X2NvbnRleHRfcmVzLCAmcmVzKTsKKwkJeGRyX2ZyZWUoKHhkcnByb2NfdCkgeGRyX2luaXRfc2Vj X2NvbnRleHRfcGx1c19yZXMsICZyZXMpOwogCQlyZXR1cm4gKHJlcy5tYWpvcl9zdGF0dXMpOwog CX0KIApAQCAtMTEwLDcgKzExMCw3IEBAIGdzc19pbml0X3NlY19jb250ZXh0KE9NX3VpbnQzMiAq IG1pbm9yX3N0YXR1cywKIAlpZiAoIWN0eCkgewogCQljdHggPSBrZ3NzX2NyZWF0ZV9jb250ZXh0 KHJlcy5hY3R1YWxfbWVjaF90eXBlKTsKIAkJaWYgKCFjdHgpIHsKLQkJCXhkcl9mcmVlKCh4ZHJw cm9jX3QpIHhkcl9pbml0X3NlY19jb250ZXh0X3JlcywgJnJlcyk7CisJCQl4ZHJfZnJlZSgoeGRy cHJvY190KSB4ZHJfaW5pdF9zZWNfY29udGV4dF9wbHVzX3JlcywgJnJlcyk7CiAJCQkqbWlub3Jf c3RhdHVzID0gMDsKIAkJCXJldHVybiAoR1NTX1NfQkFEX01FQ0gpOwogCQl9CkBAIC0xMjUsMTUg KzEyNSwxNjggQEAgZ3NzX2luaXRfc2VjX2NvbnRleHQoT01fdWludDMyICogbWlub3Jfc3RhdHVz LAogCWlmICh0aW1lX3JlYykKIAkJKnRpbWVfcmVjID0gcmVzLnRpbWVfcmVjOwogCi0JeGRyX2Zy ZWUoKHhkcnByb2NfdCkgeGRyX2luaXRfc2VjX2NvbnRleHRfcmVzLCAmcmVzKTsKKwkvKgorCSAq IElmIHRoZSBjb250ZXh0IGVzdGFibGlzaG1lbnQgaXMgY29tcGxldGUsIGV4cG9ydCBpdCBmcm9t CisJICogdXNlcmxhbmQgYW5kIGhhbmQgdGhlIHJlc3VsdCAod2hpY2ggaW5jbHVkZXMga2V5IG1h dGVyaWFsCisJICogZXRjLikgdG8gdGhlIGtlcm5lbCBpbXBsZW1lbnRhdGlvbi4KKwkgKi8KKwlp ZiAocmVzLm1ham9yX3N0YXR1cyA9PSBHU1NfU19DT01QTEVURSkgeworCQlyZXMubWFqb3Jfc3Rh dHVzID0ga2dzc190cmFuc2Zlcl9jb250ZXh0KGN0eCwgTlVMTCk7CitwcmludGYoImtyYjVfaW1w b3J0OiBpbml0aWF0ZT0lZCBlbmR0aW1lPSVkIHNlbmRfc2VxPSVsZCByZWN2X3NlcT0lbGQgcHJv dG89JWRcbiIsIHJlcy5pbml0aWF0ZSwgcmVzLmVuZHRpbWUsIHJlcy5zZW5kX3NlcSwgcmVzLnJl Y3Zfc2VxLCByZXMucHJvdG9jb2wpOworCX0KIAorCXhkcl9mcmVlKCh4ZHJwcm9jX3QpIHhkcl9p bml0X3NlY19jb250ZXh0X3BsdXNfcmVzLCAmcmVzKTsKKworCXJldHVybiAocmVzLm1ham9yX3N0 YXR1cyk7Cit9CisKK09NX3VpbnQzMgorZ3NzX3N1cHBvcnRzX2x1Y2lkKHVpbnQzMl90ICptaW5v cl9zdGF0dXMsIHVpbnQzMl90ICp2ZXJzKQoreworCXN0cnVjdCBzdXBwb3J0c19sdWNpZF9yZXMg cmVzOworCWVudW0gY2xudF9zdGF0IHN0YXQ7CisJQ0xJRU5UICpjbDsKKworCSptaW5vcl9zdGF0 dXMgPSAwOworCisJY2wgPSBrZ3NzX2dzc2RfY2xpZW50KCk7CisJaWYgKGNsID09IE5VTEwpCisJ CXJldHVybiAoR1NTX1NfRkFJTFVSRSk7CisKKwliemVybygmcmVzLCBzaXplb2YocmVzKSk7CisJ c3RhdCA9IGdzc2Rfc3VwcG9ydHNfbHVjaWRfMShOVUxMLCAmcmVzLCBjbCk7CisJQ0xOVF9SRUxF QVNFKGNsKTsKKwlpZiAoc3RhdCAhPSBSUENfU1VDQ0VTUykgeworCQkqbWlub3Jfc3RhdHVzID0g c3RhdDsKKwkJcmV0dXJuIChHU1NfU19GQUlMVVJFKTsKKwl9CisKKwlpZiAodmVycykKKwkJKnZl cnMgPSByZXMudmVyczsKKworCXJldHVybiAocmVzLm1ham9yX3N0YXR1cyk7Cit9CisKK09NX3Vp bnQzMgorZ3NzX2luaXRfc2VjX2NvbnRleHRfcGx1cyhPTV91aW50MzIgKiBtaW5vcl9zdGF0dXMs CisgICAgY29uc3QgZ3NzX2NyZWRfaWRfdCBpbml0aWF0b3JfY3JlZF9oYW5kbGUsCisgICAgZ3Nz X2N0eF9pZF90ICogY29udGV4dF9oYW5kbGUsCisgICAgY29uc3QgZ3NzX25hbWVfdCB0YXJnZXRf bmFtZSwKKyAgICBjb25zdCBnc3NfT0lEIGlucHV0X21lY2hfdHlwZSwKKyAgICBPTV91aW50MzIg cmVxX2ZsYWdzLAorICAgIE9NX3VpbnQzMiB0aW1lX3JlcSwKKyAgICBjb25zdCBnc3NfY2hhbm5l bF9iaW5kaW5nc190IGlucHV0X2NoYW5fYmluZGluZ3MsCisgICAgY29uc3QgZ3NzX2J1ZmZlcl90 IGlucHV0X3Rva2VuLAorICAgIGdzc19PSUQgKiBhY3R1YWxfbWVjaF90eXBlLAorICAgIGdzc19i dWZmZXJfdCBvdXRwdXRfdG9rZW4sCisgICAgT01fdWludDMyICogcmV0X2ZsYWdzLAorICAgIE9N X3VpbnQzMiAqIHRpbWVfcmVjKQoreworCXN0cnVjdCBpbml0X3NlY19jb250ZXh0X3BsdXNfcmVz IHJlczsKKwlzdHJ1Y3QgaW5pdF9zZWNfY29udGV4dF9wbHVzX2FyZ3MgYXJnczsKKwlnc3Nfa3Ji NV9sdWNpZF9jb250ZXh0X3YxX3QgbHVjaWQ7CisJZW51bSBjbG50X3N0YXQgc3RhdDsKKwlnc3Nf Y3R4X2lkX3QgY3R4ID0gKmNvbnRleHRfaGFuZGxlOworCUNMSUVOVCAqY2w7CisKKwkqbWlub3Jf c3RhdHVzID0gMDsKKworCWNsID0ga2dzc19nc3NkX2NsaWVudCgpOworCWlmIChjbCA9PSBOVUxM KQorCQlyZXR1cm4gKEdTU19TX0ZBSUxVUkUpOworCisJYXJncy51aWQgPSBjdXJ0aHJlYWQtPnRk X3VjcmVkLT5jcl91aWQ7CisJaWYgIChpbml0aWF0b3JfY3JlZF9oYW5kbGUpCisJCWFyZ3MuY3Jl ZCA9IGluaXRpYXRvcl9jcmVkX2hhbmRsZS0+aGFuZGxlOworCWVsc2UKKwkJYXJncy5jcmVkID0g MDsKKwlpZiAoY3R4KQorCQlhcmdzLmN0eCA9IGN0eC0+aGFuZGxlOworCWVsc2UKKwkJYXJncy5j dHggPSAwOworCWFyZ3MubmFtZSA9IHRhcmdldF9uYW1lLT5oYW5kbGU7CisJYXJncy5tZWNoX3R5 cGUgPSBpbnB1dF9tZWNoX3R5cGU7CisJYXJncy5yZXFfZmxhZ3MgPSByZXFfZmxhZ3M7CisJYXJn cy50aW1lX3JlcSA9IHRpbWVfcmVxOworCWFyZ3MuaW5wdXRfY2hhbl9iaW5kaW5ncyA9IGlucHV0 X2NoYW5fYmluZGluZ3M7CisJaWYgKGlucHV0X3Rva2VuKQorCQlhcmdzLmlucHV0X3Rva2VuID0g KmlucHV0X3Rva2VuOworCWVsc2UgeworCQlhcmdzLmlucHV0X3Rva2VuLmxlbmd0aCA9IDA7CisJ CWFyZ3MuaW5wdXRfdG9rZW4udmFsdWUgPSBOVUxMOworCX0KKworCWJ6ZXJvKCZyZXMsIHNpemVv ZihyZXMpKTsKKwlzdGF0ID0gZ3NzZF9pbml0X3NlY19jb250ZXh0X3BsdXNfMSgmYXJncywgJnJl cywgY2wpOworCUNMTlRfUkVMRUFTRShjbCk7CisJaWYgKHN0YXQgIT0gUlBDX1NVQ0NFU1MpIHsK KwkJKm1pbm9yX3N0YXR1cyA9IHN0YXQ7CisJCXJldHVybiAoR1NTX1NfRkFJTFVSRSk7CisJfQor CisJaWYgKHJlcy5tYWpvcl9zdGF0dXMgIT0gR1NTX1NfQ09NUExFVEUKKwkgICAgJiYgcmVzLm1h am9yX3N0YXR1cyAhPSBHU1NfU19DT05USU5VRV9ORUVERUQpIHsKKwkJKm1pbm9yX3N0YXR1cyA9 IHJlcy5taW5vcl9zdGF0dXM7CisJCXhkcl9mcmVlKCh4ZHJwcm9jX3QpIHhkcl9pbml0X3NlY19j b250ZXh0X3BsdXNfcmVzLCAmcmVzKTsKKwkJcmV0dXJuIChyZXMubWFqb3Jfc3RhdHVzKTsKKwl9 CisKKwkqbWlub3Jfc3RhdHVzID0gcmVzLm1pbm9yX3N0YXR1czsKKworCWlmICghY3R4KSB7CisJ CWN0eCA9IGtnc3NfY3JlYXRlX2NvbnRleHQocmVzLmFjdHVhbF9tZWNoX3R5cGUpOworCQlpZiAo IWN0eCkgeworCQkJeGRyX2ZyZWUoKHhkcnByb2NfdCkgeGRyX2luaXRfc2VjX2NvbnRleHRfcGx1 c19yZXMsICZyZXMpOworCQkJKm1pbm9yX3N0YXR1cyA9IDA7CisJCQlyZXR1cm4gKEdTU19TX0JB RF9NRUNIKTsKKwkJfQorCX0KKwkqY29udGV4dF9oYW5kbGUgPSBjdHg7CisJY3R4LT5oYW5kbGUg PSByZXMuY3R4OworCWlmIChhY3R1YWxfbWVjaF90eXBlKQorCQkqYWN0dWFsX21lY2hfdHlwZSA9 IEtHU1NfTUVDSF9UWVBFKGN0eCk7CisJa2dzc19jb3B5X2J1ZmZlcigmcmVzLm91dHB1dF90b2tl biwgb3V0cHV0X3Rva2VuKTsKKwlpZiAocmV0X2ZsYWdzKQorCQkqcmV0X2ZsYWdzID0gcmVzLnJl dF9mbGFnczsKKwlpZiAodGltZV9yZWMpCisJCSp0aW1lX3JlYyA9IHJlcy50aW1lX3JlYzsKKwog CS8qCiAJICogSWYgdGhlIGNvbnRleHQgZXN0YWJsaXNobWVudCBpcyBjb21wbGV0ZSwgZXhwb3J0 IGl0IGZyb20KIAkgKiB1c2VybGFuZCBhbmQgaGFuZCB0aGUgcmVzdWx0ICh3aGljaCBpbmNsdWRl cyBrZXkgbWF0ZXJpYWwKIAkgKiBldGMuKSB0byB0aGUga2VybmVsIGltcGxlbWVudGF0aW9uLgog CSAqLwotCWlmIChyZXMubWFqb3Jfc3RhdHVzID09IEdTU19TX0NPTVBMRVRFKQotCQlyZXMubWFq b3Jfc3RhdHVzID0ga2dzc190cmFuc2Zlcl9jb250ZXh0KGN0eCk7CisJaWYgKHJlcy5tYWpvcl9z dGF0dXMgPT0gR1NTX1NfQ09NUExFVEUpIHsKKwkJbHVjaWQuaW5pdGlhdGUgPSByZXMuaW5pdGlh dGU7CisJCWx1Y2lkLmVuZHRpbWUgPSByZXMuZW5kdGltZTsKKwkJbHVjaWQuc2VuZF9zZXEgPSBy ZXMuc2VuZF9zZXE7CisJCWx1Y2lkLnJlY3Zfc2VxID0gcmVzLnJlY3Zfc2VxOworCQlsdWNpZC5w cm90b2NvbCA9IHJlcy5wcm90b2NvbDsKKwkJaWYgKHJlcy5wcm90b2NvbCA9PSAwKSB7CisJCQls dWNpZC5yZmMxOTY0X2tkLnNpZ25fYWxnID0gcmVzLnJmY19zaWduOworCQkJbHVjaWQucmZjMTk2 NF9rZC5zZWFsX2FsZyA9IHJlcy5yZmNfc2VhbDsKKwkJCWx1Y2lkLnJmYzE5NjRfa2QuY3R4X2tl eS50eXBlID0gcmVzLmN0eF90eXBlOworCQkJbHVjaWQucmZjMTk2NF9rZC5jdHhfa2V5Lmxlbmd0 aCA9IHJlcy5jdHhfa2V5Lmxlbmd0aDsKKwkJCWx1Y2lkLnJmYzE5NjRfa2QuY3R4X2tleS5kYXRh ID0gcmVzLmN0eF9rZXkudmFsdWU7CisJCX0gZWxzZSBpZiAocmVzLnByb3RvY29sID09IDEpIHsK KwkJCWx1Y2lkLmNmeF9rZC5oYXZlX2FjY2VwdG9yX3N1YmtleSA9IHJlcy5oYXZlX3N1YmtleTsK KwkJCWx1Y2lkLmNmeF9rZC5jdHhfa2V5LnR5cGUgPSByZXMuY3R4X3R5cGU7CisJCQlsdWNpZC5j Znhfa2QuY3R4X2tleS5sZW5ndGggPSByZXMuY3R4X2tleS5sZW5ndGg7CisJCQlsdWNpZC5jZnhf a2QuY3R4X2tleS5kYXRhID0gcmVzLmN0eF9rZXkudmFsdWU7CisJCQlsdWNpZC5jZnhfa2QuYWNj ZXB0b3Jfc3Via2V5LnR5cGUgPSByZXMuc3Via2V5X3R5cGU7CisJCQlsdWNpZC5jZnhfa2QuYWNj ZXB0b3Jfc3Via2V5Lmxlbmd0aCA9CisJCQkgICAgcmVzLnN1YmtleV9rZXkubGVuZ3RoOworCQkJ bHVjaWQuY2Z4X2tkLmFjY2VwdG9yX3N1YmtleS5kYXRhID0KKwkJCSAgICByZXMuc3Via2V5X2tl eS52YWx1ZTsKKwkJfSBlbHNlIHsKKwkJCXJlcy5tYWpvcl9zdGF0dXMgPSBHU1NfU19GQUlMVVJF OworCQl9CisJCWlmIChyZXMubWFqb3Jfc3RhdHVzID09IEdTU19TX0NPTVBMRVRFKQorCQkJcmVz Lm1ham9yX3N0YXR1cyA9IGtnc3NfdHJhbnNmZXJfY29udGV4dChjdHgsICZsdWNpZCk7Citwcmlu dGYoImtyYjVfaW1wb3J0OiBpbml0aWF0ZT0lZCBlbmR0aW1lPSVkIHNlbmRfc2VxPSVsZCByZWN2 X3NlcT0lbGQgcHJvdG89JWRcbiIsIHJlcy5pbml0aWF0ZSwgcmVzLmVuZHRpbWUsIHJlcy5zZW5k X3NlcSwgcmVzLnJlY3Zfc2VxLCByZXMucHJvdG9jb2wpOworCX0KIAorCXhkcl9mcmVlKCh4ZHJw cm9jX3QpIHhkcl9pbml0X3NlY19jb250ZXh0X3BsdXNfcmVzLCAmcmVzKTsKKwogCXJldHVybiAo cmVzLm1ham9yX3N0YXR1cyk7CiB9Ci0tLSBzeXMva2dzc2FwaS9nc3NhcGlfaW1wbC5oLnNhdgky MDI1LTA3LTMxIDEzOjM0OjQ2LjQxMTI0MjAwMCAtMDcwMAorKysgc3lzL2tnc3NhcGkvZ3NzYXBp X2ltcGwuaAkyMDI1LTA3LTMxIDEzOjM1OjExLjcxNzY3NjAwMCAtMDcwMApAQCAtNzgsNSArNzgs NSBAQCBleHRlcm4gdm9pZCBrZ3NzX2RlbGV0ZV9jb250ZXh0KGdzc19jdHhfaWRfdCBjdHgsIGdz c18KIGV4dGVybiBjb25zdCBjaGFyICprZ3NzX2ZpbmRfbWVjaF9ieV9vaWQoY29uc3QgZ3NzX09J RCBvaWQpOwogZXh0ZXJuIGdzc19jdHhfaWRfdCBrZ3NzX2NyZWF0ZV9jb250ZXh0KGdzc19PSUQg bWVjaF90eXBlKTsKIGV4dGVybiB2b2lkIGtnc3NfZGVsZXRlX2NvbnRleHQoZ3NzX2N0eF9pZF90 IGN0eCwgZ3NzX2J1ZmZlcl90IG91dHB1dF90b2tlbik7Ci1leHRlcm4gT01fdWludDMyIGtnc3Nf dHJhbnNmZXJfY29udGV4dChnc3NfY3R4X2lkX3QgY3R4KTsKK2V4dGVybiBPTV91aW50MzIga2dz c190cmFuc2Zlcl9jb250ZXh0KGdzc19jdHhfaWRfdCBjdHgsIHZvaWQgKmxjdHgpOwogZXh0ZXJu IHZvaWQga2dzc19jb3B5X2J1ZmZlcihjb25zdCBnc3NfYnVmZmVyX3QgZnJvbSwgZ3NzX2J1ZmZl cl90IHRvKTsKLS0tIHN5cy9rZ3NzYXBpL2dzc19hY2NlcHRfc2VjX2NvbnRleHQuYy5zYXYJMjAy NS0wNy0zMSAxMzozNjozNC41ODUzOTEwMDAgLTA3MDAKKysrIHN5cy9rZ3NzYXBpL2dzc19hY2Nl cHRfc2VjX2NvbnRleHQuYwkyMDI1LTA4LTAxIDA3OjIzOjI5LjQwOTIxOTAwMCAtMDcwMApAQCAt MTM4LDcgKzEzOCwxMzcgQEAgT01fdWludDMyIGdzc19hY2NlcHRfc2VjX2NvbnRleHQoT01fdWlu dDMyICptaW5vcl9zdGF0CiAJICogZXRjLikgdG8gdGhlIGtlcm5lbCBpbXBsZW1lbnRhdGlvbi4K IAkgKi8KIAlpZiAocmVzLm1ham9yX3N0YXR1cyA9PSBHU1NfU19DT01QTEVURSkKLQkJcmVzLm1h am9yX3N0YXR1cyA9IGtnc3NfdHJhbnNmZXJfY29udGV4dChjdHgpOworCQlyZXMubWFqb3Jfc3Rh dHVzID0ga2dzc190cmFuc2Zlcl9jb250ZXh0KGN0eCwgTlVMTCk7CiAKIAlyZXR1cm4gKHJlcy5t YWpvcl9zdGF0dXMpOwogfQorCitPTV91aW50MzIgZ3NzX2FjY2VwdF9zZWNfY29udGV4dF9wbHVz KE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLAorICAgIGdzc19jdHhfaWRfdCAqY29udGV4dF9oYW5k bGUsCisgICAgY29uc3QgZ3NzX2NyZWRfaWRfdCBhY2NlcHRvcl9jcmVkX2hhbmRsZSwKKyAgICBj b25zdCBnc3NfYnVmZmVyX3QgaW5wdXRfdG9rZW4sCisgICAgY29uc3QgZ3NzX2NoYW5uZWxfYmlu ZGluZ3NfdCBpbnB1dF9jaGFuX2JpbmRpbmdzLAorICAgIGdzc19uYW1lX3QgKnNyY19uYW1lLAor ICAgIGdzc19PSUQgKm1lY2hfdHlwZSwKKyAgICBnc3NfYnVmZmVyX3Qgb3V0cHV0X3Rva2VuLAor ICAgIE9NX3VpbnQzMiAqcmV0X2ZsYWdzLAorICAgIE9NX3VpbnQzMiAqdGltZV9yZWMsCisgICAg Z3NzX2NyZWRfaWRfdCAqZGVsZWdhdGVkX2NyZWRfaGFuZGxlKQoreworCXN0cnVjdCBhY2NlcHRf c2VjX2NvbnRleHRfcGx1c19yZXMgcmVzOworCXN0cnVjdCBhY2NlcHRfc2VjX2NvbnRleHRfcGx1 c19hcmdzIGFyZ3M7CisJZ3NzX2tyYjVfbHVjaWRfY29udGV4dF92MV90IGx1Y2lkOworCWVudW0g Y2xudF9zdGF0IHN0YXQ7CisJZ3NzX2N0eF9pZF90IGN0eCA9ICpjb250ZXh0X2hhbmRsZTsKKwln c3NfbmFtZV90IG5hbWU7CisJZ3NzX2NyZWRfaWRfdCBjcmVkOworCUNMSUVOVCAqY2w7CisKKwlj bCA9IGtnc3NfZ3NzZF9jbGllbnQoKTsKKwlpZiAoY2wgPT0gTlVMTCkgeworCQkqbWlub3Jfc3Rh dHVzID0gMDsKKwkJcmV0dXJuIChHU1NfU19GQUlMVVJFKTsKKwl9CisKKwlpZiAoY3R4KQorCQlh cmdzLmN0eCA9IGN0eC0+aGFuZGxlOworCWVsc2UKKwkJYXJncy5jdHggPSAwOworCWlmIChhY2Nl cHRvcl9jcmVkX2hhbmRsZSkKKwkJYXJncy5jcmVkID0gYWNjZXB0b3JfY3JlZF9oYW5kbGUtPmhh bmRsZTsKKwllbHNlCisJCWFyZ3MuY3JlZCA9IDA7CisJYXJncy5pbnB1dF90b2tlbiA9ICppbnB1 dF90b2tlbjsKKwlhcmdzLmlucHV0X2NoYW5fYmluZGluZ3MgPSBpbnB1dF9jaGFuX2JpbmRpbmdz OworCisJYnplcm8oJnJlcywgc2l6ZW9mKHJlcykpOworCXN0YXQgPSBnc3NkX2FjY2VwdF9zZWNf Y29udGV4dF9wbHVzXzEoJmFyZ3MsICZyZXMsIGNsKTsKKwlDTE5UX1JFTEVBU0UoY2wpOworCWlm IChzdGF0ICE9IFJQQ19TVUNDRVNTKSB7CisJCSptaW5vcl9zdGF0dXMgPSBzdGF0OworCQlyZXR1 cm4gKEdTU19TX0ZBSUxVUkUpOworCX0KKworCWlmIChyZXMubWFqb3Jfc3RhdHVzICE9IEdTU19T X0NPTVBMRVRFCisJICAgICYmIHJlcy5tYWpvcl9zdGF0dXMgIT0gR1NTX1NfQ09OVElOVUVfTkVF REVEKSB7CisJCSptaW5vcl9zdGF0dXMgPSByZXMubWlub3Jfc3RhdHVzOworCQl4ZHJfZnJlZSgo eGRycHJvY190KSB4ZHJfYWNjZXB0X3NlY19jb250ZXh0X3JlcywgJnJlcyk7CisJCXJldHVybiAo cmVzLm1ham9yX3N0YXR1cyk7CisJfQorCisJKm1pbm9yX3N0YXR1cyA9IHJlcy5taW5vcl9zdGF0 dXM7CisKKwlpZiAoIWN0eCkgeworCQljdHggPSBrZ3NzX2NyZWF0ZV9jb250ZXh0KHJlcy5tZWNo X3R5cGUpOworCQlpZiAoIWN0eCkgeworCQkJeGRyX2ZyZWUoKHhkcnByb2NfdCkgeGRyX2FjY2Vw dF9zZWNfY29udGV4dF9yZXMsICZyZXMpOworCQkJKm1pbm9yX3N0YXR1cyA9IDA7CisJCQlyZXR1 cm4gKEdTU19TX0JBRF9NRUNIKTsKKwkJfQorCX0KKwkqY29udGV4dF9oYW5kbGUgPSBjdHg7CisK KwljdHgtPmhhbmRsZSA9IHJlcy5jdHg7CisJbmFtZSA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IF9n c3NfbmFtZV90KSwgTV9HU1NBUEksIE1fV0FJVE9LKTsKKwluYW1lLT5oYW5kbGUgPSByZXMuc3Jj X25hbWU7CisJaWYgKHNyY19uYW1lKSB7CisJCSpzcmNfbmFtZSA9IG5hbWU7CisJfSBlbHNlIHsK KwkJT01fdWludDMyIGp1bms7CisJCWdzc19yZWxlYXNlX25hbWUoJmp1bmssICZuYW1lKTsKKwl9 CisJaWYgKG1lY2hfdHlwZSkKKwkJKm1lY2hfdHlwZSA9IEtHU1NfTUVDSF9UWVBFKGN0eCk7CisJ a2dzc19jb3B5X2J1ZmZlcigmcmVzLm91dHB1dF90b2tlbiwgb3V0cHV0X3Rva2VuKTsKKwlpZiAo cmV0X2ZsYWdzKQorCQkqcmV0X2ZsYWdzID0gcmVzLnJldF9mbGFnczsKKwlpZiAodGltZV9yZWMp CisJCSp0aW1lX3JlYyA9IHJlcy50aW1lX3JlYzsKKwljcmVkID0gbWFsbG9jKHNpemVvZihzdHJ1 Y3QgX2dzc19jcmVkX2lkX3QpLCBNX0dTU0FQSSwgTV9XQUlUT0spOworCWNyZWQtPmhhbmRsZSA9 IHJlcy5kZWxlZ2F0ZWRfY3JlZF9oYW5kbGU7CisJaWYgKGRlbGVnYXRlZF9jcmVkX2hhbmRsZSkg eworCQkqZGVsZWdhdGVkX2NyZWRfaGFuZGxlID0gY3JlZDsKKwl9IGVsc2UgeworCQlPTV91aW50 MzIganVuazsKKwkJZ3NzX3JlbGVhc2VfY3JlZCgmanVuaywgJmNyZWQpOworCX0KKworCS8qCisJ ICogSWYgdGhlIGNvbnRleHQgZXN0YWJsaXNobWVudCBpcyBjb21wbGV0ZSwgZXhwb3J0IGl0IGZy b20KKwkgKiB1c2VybGFuZCBhbmQgaGFuZCB0aGUgcmVzdWx0ICh3aGljaCBpbmNsdWRlcyBrZXkg bWF0ZXJpYWwKKwkgKiBldGMuKSB0byB0aGUga2VybmVsIGltcGxlbWVudGF0aW9uLgorCSAqLwor CWlmIChyZXMubWFqb3Jfc3RhdHVzID09IEdTU19TX0NPTVBMRVRFKSB7CisJCWx1Y2lkLmluaXRp YXRlID0gcmVzLmluaXRpYXRlOworCQlsdWNpZC5lbmR0aW1lID0gcmVzLmVuZHRpbWU7CisJCWx1 Y2lkLnNlbmRfc2VxID0gcmVzLnNlbmRfc2VxOworCQlsdWNpZC5yZWN2X3NlcSA9IHJlcy5yZWN2 X3NlcTsKKwkJbHVjaWQucHJvdG9jb2wgPSByZXMucHJvdG9jb2w7CisJCWlmIChyZXMucHJvdG9j b2wgPT0gMCkgeworCQkJbHVjaWQucmZjMTk2NF9rZC5zaWduX2FsZyA9IHJlcy5yZmNfc2lnbjsK KwkJCWx1Y2lkLnJmYzE5NjRfa2Quc2VhbF9hbGcgPSByZXMucmZjX3NlYWw7CisJCQlsdWNpZC5y ZmMxOTY0X2tkLmN0eF9rZXkudHlwZSA9IHJlcy5jdHhfdHlwZTsKKwkJCWx1Y2lkLnJmYzE5NjRf a2QuY3R4X2tleS5sZW5ndGggPSByZXMuY3R4X2tleS5sZW5ndGg7CisJCQlsdWNpZC5yZmMxOTY0 X2tkLmN0eF9rZXkuZGF0YSA9IHJlcy5jdHhfa2V5LnZhbHVlOworCQl9IGVsc2UgaWYgKHJlcy5w cm90b2NvbCA9PSAxKSB7CisJCQlsdWNpZC5jZnhfa2QuaGF2ZV9hY2NlcHRvcl9zdWJrZXkgPSBy ZXMuaGF2ZV9zdWJrZXk7CisJCQlsdWNpZC5jZnhfa2QuY3R4X2tleS50eXBlID0gcmVzLmN0eF90 eXBlOworCQkJbHVjaWQuY2Z4X2tkLmN0eF9rZXkubGVuZ3RoID0gcmVzLmN0eF9rZXkubGVuZ3Ro OworCQkJbHVjaWQuY2Z4X2tkLmN0eF9rZXkuZGF0YSA9IHJlcy5jdHhfa2V5LnZhbHVlOworCQkJ bHVjaWQuY2Z4X2tkLmFjY2VwdG9yX3N1YmtleS50eXBlID0gcmVzLnN1YmtleV90eXBlOworCQkJ bHVjaWQuY2Z4X2tkLmFjY2VwdG9yX3N1YmtleS5sZW5ndGggPQorCQkJICAgIHJlcy5zdWJrZXlf a2V5Lmxlbmd0aDsKKwkJCWx1Y2lkLmNmeF9rZC5hY2NlcHRvcl9zdWJrZXkuZGF0YSA9CisJCQkg ICAgcmVzLnN1YmtleV9rZXkudmFsdWU7CisJCX0gZWxzZSB7CisJCQlyZXMubWFqb3Jfc3RhdHVz ID0gR1NTX1NfRkFJTFVSRTsKKwkJfQorCQlpZiAocmVzLm1ham9yX3N0YXR1cyA9PSBHU1NfU19D T01QTEVURSkKKwkJCXJlcy5tYWpvcl9zdGF0dXMgPSBrZ3NzX3RyYW5zZmVyX2NvbnRleHQoY3R4 LCAmbHVjaWQpOworcHJpbnRmKCJrcmI1X2ltcG9ydDogaW5pdGlhdGU9JWQgZW5kdGltZT0lZCBz ZW5kX3NlcT0lbGQgcmVjdl9zZXE9JWxkIHByb3RvPSVkXG4iLCByZXMuaW5pdGlhdGUsIHJlcy5l bmR0aW1lLCByZXMuc2VuZF9zZXEsIHJlcy5yZWN2X3NlcSwgcmVzLnByb3RvY29sKTsKKwl9CisK Kwl4ZHJfZnJlZSgoeGRycHJvY190KSB4ZHJfYWNjZXB0X3NlY19jb250ZXh0X3JlcywgJnJlcyk7 CisKKwlyZXR1cm4gKHJlcy5tYWpvcl9zdGF0dXMpOworfQotLS0gc3lzL3JwYy9ycGNzZWNfZ3Nz L3JwY3NlY19nc3MuYy5zYXYJMjAyNS0wOC0wMSAwODo0OTozMS42NjcwMDAwMDAgLTA3MDAKKysr IHN5cy9ycGMvcnBjc2VjX2dzcy9ycGNzZWNfZ3NzLmMJMjAyNS0wOC0wMSAwODo0ODoyNS4wOTUx MDAwMDAgLTA3MDAKQEAgLTc0Niw2ICs3NDYsNyBAQCBycGNfZ3NzX2luaXQoQVVUSCAqYXV0aCwg cnBjX2dzc19vcHRpb25zX3JldF90ICpvcHRpb24KIAlzdHJ1Y3QgcnBjX2NhbGxleHRyYQkgZXh0 OwogCWdzc19PSUQJCQltZWNoX29pZDsKIAlnc3NfT0lEX3NldAkJbWVjaGxpc3Q7CisJc3RhdGlj IGVudW0ga3JiX2ltcAlteV9rcmJfaW1wID0gS1JCSU1QX1VOS05PV047CiAKIAlycGNfZ3NzX2xv Z19kZWJ1ZygiaW4gcnBjX2dzc19yZWZyZXNoKCkiKTsKIAkKQEAgLTg1Miw2ICs4NTMsMTQgQEAg cnBjX2dzc19pbml0KEFVVEggKmF1dGgsIHJwY19nc3Nfb3B0aW9uc19yZXRfdCAqb3B0aW9uCiAJ CWdvdG8gb3V0OwogCX0KIAorCWlmIChteV9rcmJfaW1wID09IEtSQklNUF9VTktOT1dOKSB7CisJ CW1hal9zdGF0ID0gZ3NzX3N1cHBvcnRzX2x1Y2lkKCZtaW5fc3RhdCwgTlVMTCk7CisJCWlmICht YWpfc3RhdCA9PSBHU1NfU19DT01QTEVURSkKKwkJCW15X2tyYl9pbXAgPSBLUkJJTVBfTUlUOwor CQllbHNlCisJCQlteV9rcmJfaW1wID0gS1JCSU1QX0hFU0lPRDE7CisJfQorCiAJLyogR1NTIGNv bnRleHQgZXN0YWJsaXNobWVudCBsb29wLiAqLwogCW1lbXNldCgmcmVjdl90b2tlbiwgMCwgc2l6 ZW9mKHJlY3ZfdG9rZW4pKTsKIAltZW1zZXQoJmdyLCAwLCBzaXplb2YoZ3IpKTsKQEAgLTg2Miwy MCArODcxLDM4IEBAIHJwY19nc3NfaW5pdChBVVRIICphdXRoLCBycGNfZ3NzX29wdGlvbnNfcmV0 X3QgKm9wdGlvbgogCWZvciAoOzspIHsKIAkJY3JzYXZlID0gdGQtPnRkX3VjcmVkOwogCQl0ZC0+ dGRfdWNyZWQgPSBnZC0+Z2RfdWNyZWQ7Ci0JCW1hal9zdGF0ID0gZ3NzX2luaXRfc2VjX2NvbnRl eHQoJm1pbl9zdGF0LAotCQkgICAgZ2QtPmdkX29wdGlvbnMubXlfY3JlZCwKLQkJICAgICZnZC0+ Z2RfY3R4LAotCQkgICAgbmFtZSwKLQkJICAgIGdkLT5nZF9tZWNoLAotCQkgICAgZ2QtPmdkX29w dGlvbnMucmVxX2ZsYWdzLAotCQkgICAgZ2QtPmdkX29wdGlvbnMudGltZV9yZXEsCi0JCSAgICBn ZC0+Z2Rfb3B0aW9ucy5pbnB1dF9jaGFubmVsX2JpbmRpbmdzLAotCQkgICAgcmVjdl90b2tlbnAs Ci0JCSAgICAmZ2QtPmdkX21lY2gsCS8qIHVzZWQgbWVjaCAqLwotCQkgICAgJnNlbmRfdG9rZW4s Ci0JCSAgICAmb3B0aW9uc19yZXQtPnJldF9mbGFncywKLQkJICAgICZvcHRpb25zX3JldC0+dGlt ZV9yZXEpOworcHJpbnRmKCJnZF9tZWNoPSVwXG4iLCBnZC0+Z2RfbWVjaCk7CisJCWlmIChteV9r cmJfaW1wID09IEtSQklNUF9NSVQpCisJCQltYWpfc3RhdCA9IGdzc19pbml0X3NlY19jb250ZXh0 X3BsdXMoJm1pbl9zdGF0LAorCQkJICAgIGdkLT5nZF9vcHRpb25zLm15X2NyZWQsCisJCQkgICAg JmdkLT5nZF9jdHgsCisJCQkgICAgbmFtZSwKKwkJCSAgICBnZC0+Z2RfbWVjaCwKKwkJCSAgICBn ZC0+Z2Rfb3B0aW9ucy5yZXFfZmxhZ3MsCisJCQkgICAgZ2QtPmdkX29wdGlvbnMudGltZV9yZXEs CisJCQkgICAgZ2QtPmdkX29wdGlvbnMuaW5wdXRfY2hhbm5lbF9iaW5kaW5ncywKKwkJCSAgICBy ZWN2X3Rva2VucCwKKwkJCSAgICAmZ2QtPmdkX21lY2gsCS8qIHVzZWQgbWVjaCAqLworCQkJICAg ICZzZW5kX3Rva2VuLAorCQkJICAgICZvcHRpb25zX3JldC0+cmV0X2ZsYWdzLAorCQkJICAgICZv cHRpb25zX3JldC0+dGltZV9yZXEpOworCQllbHNlCisJCQltYWpfc3RhdCA9IGdzc19pbml0X3Nl Y19jb250ZXh0KCZtaW5fc3RhdCwKKwkJCSAgICBnZC0+Z2Rfb3B0aW9ucy5teV9jcmVkLAorCQkJ ICAgICZnZC0+Z2RfY3R4LAorCQkJICAgIG5hbWUsCisJCQkgICAgZ2QtPmdkX21lY2gsCisJCQkg ICAgZ2QtPmdkX29wdGlvbnMucmVxX2ZsYWdzLAorCQkJICAgIGdkLT5nZF9vcHRpb25zLnRpbWVf cmVxLAorCQkJICAgIGdkLT5nZF9vcHRpb25zLmlucHV0X2NoYW5uZWxfYmluZGluZ3MsCisJCQkg ICAgcmVjdl90b2tlbnAsCisJCQkgICAgJmdkLT5nZF9tZWNoLAkvKiB1c2VkIG1lY2ggKi8KKwkJ CSAgICAmc2VuZF90b2tlbiwKKwkJCSAgICAmb3B0aW9uc19yZXQtPnJldF9mbGFncywKKwkJCSAg ICAmb3B0aW9uc19yZXQtPnRpbWVfcmVxKTsKIAkJdGQtPnRkX3VjcmVkID0gY3JzYXZlOworcHJp bnRmKCJhZnQgZ3NzX2luaXQgZ2RfbWVjaD0lcFxuIiwgZ2QtPmdkX21lY2gpOworcHJpbnRmKCJh ZnQgZ3NzX2luaXQgbWFqPTB4JXggbWluPSVkXG4iLCBtYWpfc3RhdCwgbWluX3N0YXQpOwogCQkK IAkJLyoKIAkJICogRnJlZSB0aGUgdG9rZW4gd2hpY2ggd2UgZ290IGZyb20gdGhlIHNlcnZlciAo aWYKLS0tIHN5cy9ycGMvcnBjc2VjX2dzcy9ycGNzZWNfZ3NzX2ludC5oLnNhdgkyMDI1LTA4LTAx IDA4OjM4OjA2LjUxNjUzMjAwMCAtMDcwMAorKysgc3lzL3JwYy9ycGNzZWNfZ3NzL3JwY3NlY19n c3NfaW50LmgJMjAyNS0wOC0wMSAwODo0MToxMy44NjEyMzkwMDAgLTA3MDAKQEAgLTczLDYgKzcz LDEyIEBAIHN0cnVjdCBycGNfZ3NzX2luaXRfcmVzIHsKIC8qIE1heGltdW0gc2VxdWVuY2UgbnVt YmVyIHZhbHVlLiAqLwogI2RlZmluZSBNQVhTRVEJCTB4ODAwMDAwMDAKIAorZW51bSBrcmJfaW1w IHsKKwlLUkJJTVBfVU5LTk9XTiwKKwlLUkJJTVBfSEVTSU9EMSwKKwlLUkJJTVBfTUlUCit9Owor CiAvKiBQcm90b3R5cGVzLiAqLwogX19CRUdJTl9ERUNMUwogCi0tLSBzeXMvcnBjL3JwY3NlY19n c3Mvc3ZjX3JwY3NlY19nc3MuYy5zYXYJMjAyNS0wOC0wMSAwODo1MDoyMS43MjQ4NDkwMDAgLTA3 MDAKKysrIHN5cy9ycGMvcnBjc2VjX2dzcy9zdmNfcnBjc2VjX2dzcy5jCTIwMjUtMDgtMDEgMDg6 NTY6NDQuOTAyMzg4MDAwIC0wNzAwCkBAIC05MjUsOSArOTI1LDE5IEBAIHN2Y19ycGNfZ3NzX2Fj Y2VwdF9zZWNfY29udGV4dChzdHJ1Y3Qgc3ZjX3JwY19nc3NfY2xpZQogCU9NX3VpbnQzMgkJbWFq X3N0YXQgPSAwLCBtaW5fc3RhdCA9IDAsIHJldF9mbGFnczsKIAlPTV91aW50MzIJCWNyZWRfbGlm ZXRpbWU7CiAJc3RydWN0IHN2Y19ycGNfZ3NzX3N2Y19uYW1lICpzbmFtZTsKKwlzdGF0aWMgZW51 bSBrcmJfaW1wCW15X2tyYl9pbXAgPSBLUkJJTVBfVU5LTk9XTjsKIAogCXJwY19nc3NfbG9nX2Rl YnVnKCJpbiBzdmNfcnBjX2dzc19hY2NlcHRfY29udGV4dCgpIik7CiAJCisJaWYgKG15X2tyYl9p bXAgPT0gS1JCSU1QX1VOS05PV04pIHsKKwkJbWFqX3N0YXQgPSBnc3Nfc3VwcG9ydHNfbHVjaWQo Jm1pbl9zdGF0LCBOVUxMKTsKKwkJaWYgKG1hal9zdGF0ID09IEdTU19TX0NPTVBMRVRFKQorCQkJ bXlfa3JiX2ltcCA9IEtSQklNUF9NSVQ7CisJCWVsc2UKKwkJCW15X2tyYl9pbXAgPSBLUkJJTVBf SEVTSU9EMTsKKwkJbWluX3N0YXQgPSAwOworCX0KKwogCS8qIERlc2VyaWFsaXplIGFyZ3VtZW50 cy4gKi8KIAltZW1zZXQoJnJlY3ZfdG9rLCAwLCBzaXplb2YocmVjdl90b2spKTsKIAkKQEAgLTk0 OSwxOCArOTU5LDMzIEBAIHN2Y19ycGNfZ3NzX2FjY2VwdF9zZWNfY29udGV4dChzdHJ1Y3Qgc3Zj X3JwY19nc3NfY2xpZQogCQkJaWYgKHNuYW1lLT5zbl9wcm9ncmFtID09IHJxc3QtPnJxX3Byb2cK IAkJCSAgICAmJiBzbmFtZS0+c25fdmVyc2lvbiA9PSBycXN0LT5ycV92ZXJzKSB7CiAJCQlyZXRy eToKLQkJCQlnci0+Z3JfbWFqb3IgPSBnc3NfYWNjZXB0X3NlY19jb250ZXh0KAotCQkJCQkmZ3It PmdyX21pbm9yLAotCQkJCQkmY2xpZW50LT5jbF9jdHgsCi0JCQkJCXNuYW1lLT5zbl9jcmVkLAot CQkJCQkmcmVjdl90b2ssCi0JCQkJCUdTU19DX05PX0NIQU5ORUxfQklORElOR1MsCi0JCQkJCSZj bGllbnQtPmNsX2NuYW1lLAotCQkJCQkmbWVjaCwKLQkJCQkJJmdyLT5ncl90b2tlbiwKLQkJCQkJ JnJldF9mbGFncywKLQkJCQkJJmNyZWRfbGlmZXRpbWUsCi0JCQkJCSZjbGllbnQtPmNsX2NyZWRz KTsKKwkJCQlpZiAobXlfa3JiX2ltcCA9PSBLUkJJTVBfTUlUKQorCQkJCQlnci0+Z3JfbWFqb3Ig PQorCQkJCQkgICAgZ3NzX2FjY2VwdF9zZWNfY29udGV4dF9wbHVzKAorCQkJCQkJJmdyLT5ncl9t aW5vciwKKwkJCQkJCSZjbGllbnQtPmNsX2N0eCwKKwkJCQkJCXNuYW1lLT5zbl9jcmVkLAorCQkJ CQkJJnJlY3ZfdG9rLAorCQkJCQkJR1NTX0NfTk9fQ0hBTk5FTF9CSU5ESU5HUywKKwkJCQkJCSZj bGllbnQtPmNsX2NuYW1lLAorCQkJCQkJJm1lY2gsCisJCQkJCQkmZ3ItPmdyX3Rva2VuLAorCQkJ CQkJJnJldF9mbGFncywKKwkJCQkJCSZjcmVkX2xpZmV0aW1lLAorCQkJCQkJJmNsaWVudC0+Y2xf Y3JlZHMpOworCQkJCWVsc2UKKwkJCQkJZ3ItPmdyX21ham9yID0gZ3NzX2FjY2VwdF9zZWNfY29u dGV4dCgKKwkJCQkJCSZnci0+Z3JfbWlub3IsCisJCQkJCQkmY2xpZW50LT5jbF9jdHgsCisJCQkJ CQlzbmFtZS0+c25fY3JlZCwKKwkJCQkJCSZyZWN2X3RvaywKKwkJCQkJCUdTU19DX05PX0NIQU5O RUxfQklORElOR1MsCisJCQkJCQkmY2xpZW50LT5jbF9jbmFtZSwKKwkJCQkJCSZtZWNoLAorCQkJ CQkJJmdyLT5ncl90b2tlbiwKKwkJCQkJCSZyZXRfZmxhZ3MsCisJCQkJCQkmY3JlZF9saWZldGlt ZSwKKwkJCQkJCSZjbGllbnQtPmNsX2NyZWRzKTsKIAkJCQlpZiAoZ3ItPmdyX21ham9yID09IAog CQkJCSAgICBHU1NfU19DUkVERU5USUFMU19FWFBJUkVEKSB7CiAJCQkJCS8qCg== --0000000000009121f8063b56dc86--