From dev-return-54930-apmail-httpd-dev-archive=httpd.apache.org@httpd.apache.org Fri Sep 29 12:37:04 2006 Return-Path: Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: (qmail 97648 invoked from network); 29 Sep 2006 12:37:04 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 29 Sep 2006 12:37:04 -0000 Received: (qmail 30455 invoked by uid 500); 29 Sep 2006 12:37:01 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 30397 invoked by uid 500); 29 Sep 2006 12:37:01 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 30384 invoked by uid 99); 29 Sep 2006 12:37:01 -0000 Received: from idunn.apache.osuosl.org (HELO idunn.apache.osuosl.org) (140.211.166.84) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Sep 2006 05:37:01 -0700 X-ASF-Spam-Status: No, hits=0.0 required=5.0 tests= Received: from [64.236.25.90] ([64.236.25.90:42784] helo=cnnimail33.turner.com) by idunn.apache.osuosl.org (ecelerity 2.1.1.8 r(12930)) with ESMTP id 02/91-13110-A631D154 for ; Fri, 29 Sep 2006 05:37:00 -0700 Received: from web.turner.com (10.165.244.17) by cnnimail33.turner.com with ESMTP; 29 Sep 2006 08:36:58 -0400 Received: from [192.168.1.101] (atl-vpn-124-102.turner.com [10.188.124.102]) by web.turner.com (Postfix) with ESMTP id A1BABC0544 for ; Fri, 29 Sep 2006 08:36:50 -0400 (EDT) Message-ID: <451D1365.7060700@web.turner.com> Date: Fri, 29 Sep 2006 08:36:53 -0400 From: Brian Akins User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Dev Subject: [Fwd: Re: [PATCH] setenvif filter] Content-Type: multipart/mixed; boundary="------------080304070707030003080304" X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N This is a multi-part message in MIME format. --------------080304070707030003080304 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Bringing this up. again. Adds a filter that allows mod_setenvif to act on response headers. -------- Original Message -------- Subject: Re: [PATCH] setenvif filter Date: Wed, 31 May 2006 17:24:33 +0200 From: Francois Pesce Reply-To: dev@httpd.apache.org To: dev@httpd.apache.org References: <447325C8.8000502@turner.com> <447D4500.8040405@axiliance.com> <447D9450.101@turner.com> These patches may fix the r->content_type behaviour. Are you OK with it ? -- *Francois Pesce* 2006/5/31, Brian Akins : > Francois PESCE wrote: > > I've discussed about a patch for mod_setenvif 2 years ago, and have > > coded it at that time, it is successfully used on various host in > > production since. > > > You need to handle content type specially by checking r->content_type. > For some reason, just doing apr_table_get(r->headers_out, > "Content-type") would be null, but content_type would be set. > > See the patch I posted a few days ago. > > > +1 in concept > > -- > Brian Akins > Lead Systems Engineer > CNN Internet Technologies > -- Brian Akins Chief Operations Engineer Turner Digital Media Technologies --------------080304070707030003080304 Content-Type: application/octet-stream; x-mac-type="0"; x-mac-creator="0"; name="mod_setenvif-2-2-x-2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mod_setenvif-2-2-x-2.patch" SW5kZXg6IG1vZHVsZXMvbWV0YWRhdGEvbW9kX3NldGVudmlmLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gbW9kdWxlcy9tZXRhZGF0YS9tb2Rfc2V0ZW52aWYuYwkocmV2aXNpb24gNDEwMjg3KQor KysgbW9kdWxlcy9tZXRhZGF0YS9tb2Rfc2V0ZW52aWYuYwkod29ya2luZyBjb3B5KQpAQCAt MTAyLDcgKzEwMiw4IEBACiAgICAgU1BFQ0lBTF9SRVFVRVNUX1VSSSwKICAgICBTUEVDSUFM X1JFUVVFU1RfTUVUSE9ELAogICAgIFNQRUNJQUxfUkVRVUVTVF9QUk9UT0NPTCwKLSAgICBT UEVDSUFMX1NFUlZFUl9BRERSCisgICAgU1BFQ0lBTF9TRVJWRVJfQUREUiwKKyAgICBTUEVD SUFMX09VVFBVVF9IRUFERVIKIH07CiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgY2hhciAqbmFt ZTsgICAgICAgICAgICAgICAgIC8qIGhlYWRlciBuYW1lICovCkBAIC0xMTMsMTAgKzExNCwx MiBAQAogICAgIGFwcl90YWJsZV90ICpmZWF0dXJlczsgICAgICAvKiBlbnYgdmFycyB0byBz ZXQgKG9yIHVuc2V0KSAqLwogICAgIGVudW0gc3BlY2lhbCBzcGVjaWFsX3R5cGU7ICAvKiBp cyBpdCBhICJzcGVjaWFsIiBoZWFkZXIgPyAqLwogICAgIGludCBpY2FzZTsgICAgICAgICAg ICAgICAgICAvKiBpZ25vcmluZyBjYXNlPyAqLworICAgIGludCBpc2NvbnRlbnRfdHlwZTsg ICAgICAgICAvKiBpcyBjb250ZW50IHR5cGUgPyAqLwogfSBzZWlfZW50cnk7CiAKIHR5cGVk ZWYgc3RydWN0IHsKICAgICBhcHJfYXJyYXlfaGVhZGVyX3QgKmNvbmRpdGlvbmFsczsKKyAg ICBpbnQgb3V0cHV0X2ZpbHRlcl9vbjsgICAgICAgIC8qIGFjdCBhcyBvdXRwdXRfZmlsdGVy IGZvciBoZWFkZXJzX291dCA/ICovCiB9IHNlaV9jZmdfcmVjOwogCiBtb2R1bGUgQVBfTU9E VUxFX0RFQ0xBUkVfREFUQSBzZXRlbnZpZl9tb2R1bGU7CkBAIC0xMzUsNiArMTM4LDcgQEAK ICAgICBzZWlfY2ZnX3JlYyAqbmV3ID0gKHNlaV9jZmdfcmVjICopIGFwcl9wYWxsb2MocCwg c2l6ZW9mKHNlaV9jZmdfcmVjKSk7CiAKICAgICBuZXctPmNvbmRpdGlvbmFscyA9IGFwcl9h cnJheV9tYWtlKHAsIDIwLCBzaXplb2Yoc2VpX2VudHJ5KSk7CisgICAgbmV3LT5vdXRwdXRf ZmlsdGVyX29uID0gMDsKICAgICByZXR1cm4gKHZvaWQgKikgbmV3OwogfQogCkBAIC0xNTUs NiArMTU5LDggQEAKIAogICAgIGEtPmNvbmRpdGlvbmFscyA9IGFwcl9hcnJheV9hcHBlbmQo cCwgYmFzZS0+Y29uZGl0aW9uYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3ZlcnJpZGVzLT5jb25kaXRpb25hbHMpOworICAgIGlmKGJhc2UtPm91dHB1 dF9maWx0ZXJfb24gfHwgb3ZlcnJpZGVzLT5vdXRwdXRfZmlsdGVyX29uKQorICAgICAgICBh LT5vdXRwdXRfZmlsdGVyX29uID0gMTsKICAgICByZXR1cm4gYTsKIH0KIApAQCAtMTY0LDYg KzE3MCw3IEBACiAgKi8KICNkZWZpbmUgSUNBU0VfTUFHSUMgICgodm9pZCAqKSgmc2V0ZW52 aWZfbW9kdWxlKSkKICNkZWZpbmUgU0VJX01BR0lDX0hFSVJMT09NICJzZXRlbnZpZi1waGFz ZS1mbGFnIgorI2RlZmluZSBTRUlfT1VUUFVUX0ZJTFRFUl9OQU1FICAic2V0ZW52aWYtb3V0 cHV0LWZpbHRlciIKIAogc3RhdGljIGludCBpc19oZWFkZXJfcmVnZXgoYXByX3Bvb2xfdCAq cCwgY29uc3QgY2hhciogbmFtZSkKIHsKQEAgLTMwNyw2ICszMTQsNyBAQAogICAgICAgICBu ZXctPm5hbWUgPSBmbmFtZTsKICAgICAgICAgbmV3LT5yZWdleCA9IHJlZ2V4OwogICAgICAg ICBuZXctPmljYXNlID0gaWNhc2U7CisgICAgICAgIG5ldy0+aXNjb250ZW50X3R5cGUgPSAw OwogICAgICAgICBpZiAoKHNpbXBsZV9wYXR0ZXJuID0gbm9uX3JlZ2V4X3BhdHRlcm4oY21k LT5wb29sLCByZWdleCkpKSB7CiAgICAgICAgICAgICBuZXctPnBhdHRlcm4gPSBhcHJfc3Ry bWF0Y2hfcHJlY29tcGlsZShjbWQtPnBvb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGVfcGF0dGVybiwgIWljYXNlKTsKQEAg LTM0NSw3ICszNTMsMzcgQEAKICAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAoZm5hbWUs ICJzZXJ2ZXJfYWRkciIpKSB7CiAgICAgICAgICAgICBuZXctPnNwZWNpYWxfdHlwZSA9IFNQ RUNJQUxfU0VSVkVSX0FERFI7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAg IGVsc2UgaWYgKCFzdHJjYXNlY21wKGZuYW1lLCAib3V0cHV0X2hlYWRlciIpKSB7CisgICAg ICAgICAgICBuZXctPnNwZWNpYWxfdHlwZSA9IFNQRUNJQUxfT1VUUFVUX0hFQURFUjsKKyAg ICAgICAgICAgIHNjb25mLT5vdXRwdXRfZmlsdGVyX29uID0gMTsKKyAgICAgICAgICAgIC8q CisgICAgICAgICAgICAgKiBUaGUgcmVnZXggaXMgdGhlIDNyZCB3b3JkIGhlcmUsIGJlY2F1 c2Ugd2Uga2VlcCB0aGUgc2FtZSBzeW50YXgKKyAgICAgICAgICAgICAqIGFzIGZvciBoZWFk ZXIgc3RyaW5nLCBidXQgd2UgYWRkZWQgdGhlIG91dHB1dF9oZWFkZXIga2V5IHdvcmQgdG8K KyAgICAgICAgICAgICAqIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gICh0byBhdm9p ZCB0aGUgbWF0Y2hpbmcgb2YgYm90aAorICAgICAgICAgICAgICogcmVxdWVzdCBhbmQgcmVz cG9uc2UgaGVhZGVyIG9uIGEgcmVnZXgpLgorICAgICAgICAgICAgICogSW4gdGhpcyBjYXNl IHRoZSAybmQgcGFyYW0gb2YgdGhlIGRpcmVjdGl2ZSBpcyB0aGUgaGVhZGVyCisgICAgICAg ICAgICAgKiByZWdleC9uYW1lLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXct Pm5hbWUgPSByZWdleDsKKyAgICAgICAgICAgIGlmIChpc19oZWFkZXJfcmVnZXgoY21kLT5w b29sLCBuZXctPm5hbWUpKSB7CisgICAgICAgICAgICAgICAgbmV3LT5wbmFtZXJlZyA9IGFw X3ByZWdjb21wKGNtZC0+cG9vbCwgbmV3LT5uYW1lLCAoQVBfUkVHX0VYVEVOREVEIHwKKyAg ICAgICAgICAgICAgICBBUF9SRUdfTk9TVUIgfCAoaWNhc2UgPyBBUF9SRUdfSUNBU0UgOiAw KSkpOworICAgICAgICAgICAgICAgIGlmIChuZXctPnBuYW1lcmVnID09IE5VTEwpCisgICAg ICAgICAgICAgICAgICAgIHJldHVybiBhcHJfcHN0cmNhdChjbWQtPnBvb2wsIGNtZC0+Y21k LT5uYW1lLCAiSGVhZGVyIG5hbWUgcmVnZXggY291bGQgbm90IGJlIGNvbXBpbGVkLiIsIE5V TEwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg ICAgbmV3LT5wbmFtZXJlZyA9IE5VTEw7CisgICAgICAgICAgICAgICAgaWYoIXN0cmNhc2Vj bXAobmV3LT5uYW1lLCAiY29udGVudC10eXBlIikpCisgICAgICAgICAgICAgICAgICAgIG5l dy0+aXNjb250ZW50X3R5cGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVn ZXggPSBhcF9nZXR3b3JkX2NvbmYoY21kLT5wb29sLCAmYXJncyk7CisgICAgICAgICAgICBp ZiAoISpyZWdleCkgeworICAgICAgICAgICAgICAgIHJldHVybiBhcHJfcHN0cmNhdChjbWQt PnBvb2wsICJNaXNzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgIiwKKyAgICAgICAgICAg ICAgICBjbWQtPmNtZC0+bmFtZSwgTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICBuZXctPnJlZ2V4ID0gcmVnZXg7CisgICAgICAgIH0KKyAgICAgICAgIGVsc2UgewogICAg ICAgICAgICAgbmV3LT5zcGVjaWFsX3R5cGUgPSBTUEVDSUFMX05PVDsKICAgICAgICAgICAg IC8qIEhhbmRsZSBmbmFtZSBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICAgICAgICAgICAg ICAqIElmIGZuYW1lIGEgc2ltcGxlIGhlYWRlciBzdHJpbmcsIGlkZW50aWZ5IGFzIHN1Y2gK QEAgLTM2NSw2ICs0MDMsMzAgQEAKICAgICAgICAgICAgICAgICBuZXctPnBuYW1lcmVnID0g TlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAg KiBUaGlzIGJsb2NrIG11c3QgYmUgYWZ0ZXIgdGhlIGlkZW50aWZpY2F0aW9uIG9mIHRoZSBw YXJhbWV0ZXJzLCBhcworICAgICAgICAgKiB0aGUgcmVnZXggbWF5IGJlIGluIGFuIG90aGVy IHBvc2l0aW9uIHRoYW4gdGhlIHNlY29uZCBvbmUgZGVwZW5kcworICAgICAgICAgKiBvZiB0 aGUgc3BlY2lhbCB0eXBlLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKChzaW1wbGVfcGF0 dGVybiA9IG5vbl9yZWdleF9wYXR0ZXJuKGNtZC0+cG9vbCwgcmVnZXgpKSkgeworICAgICAg ICAgICAgbmV3LT5wYXR0ZXJuID0gYXByX3N0cm1hdGNoX3ByZWNvbXBpbGUoY21kLT5wb29s LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2ltcGxlX3BhdHRlcm4sICFpY2FzZSk7CisgICAgICAgICAgICBpZiAobmV3LT5wYXR0ZXJu ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXByX3BzdHJjYXQoY21kLT5w b29sLCBjbWQtPmNtZC0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIiBwYXR0ZXJuIGNvdWxkIG5vdCBiZSBjb21waWxlZC4iLCBOVUxMKTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIG5ldy0+cHJlZyA9IE5VTEw7CisgICAgICAgIH0KKyAgICAg ICAgZWxzZSB7CisgICAgICAgICAgICBuZXctPnByZWcgPSBhcF9wcmVnY29tcChjbWQtPnBv b2wsIHJlZ2V4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFQX1JF R19FWFRFTkRFRCB8IChpY2FzZSA/IEFQX1JFR19JQ0FTRSA6IDApKSk7CisgICAgICAgICAg ICBpZiAobmV3LT5wcmVnID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXBy X3BzdHJjYXQoY21kLT5wb29sLCBjbWQtPmNtZC0+bmFtZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiByZWdleCBjb3VsZCBub3QgYmUgY29tcGlsZWQuIiwgTlVM TCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXctPnBhdHRlcm4gPSBOVUxMOwor ICAgICAgICB9CisgICAgICAgIG5ldy0+ZmVhdHVyZXMgPSBhcHJfdGFibGVfbWFrZShjbWQt PnBvb2wsIDIpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgbmV3ID0gJmVudHJpZXNb aV07CkBAIC00MzYsNiArNDk4LDk1IEBACiB9OwogCiAvKgorICogVGhpcyByb3V0aW5lIGdl dCBmcm9tIGEgaGVhZGVyIChvciBzdWJwcm9jZXNzX2VudiBpZiBubyBtYXRjaCBpbiBoZWFk ZXIpLAorICogdGhlIHZhbHVlIHRoYXQgY29ycmVzcG9uZCB0byBhIGhlYWRlciBuYW1lIG9y IGEgaGVhZGVyIG1hdGNoaW5nIHJlZ2V4cC4KKyAqIChhY2NvcmRpbmcgdG8gYSBzZWlfZW50 cnkpLgorICovCitzdGF0aWMgdm9pZCBnZXRfaGVhZGVyX3ZhbChzZWlfZW50cnkgKmIsIGFw cl90YWJsZV90ICpoZWFkZXJzLCBhcHJfdGFibGVfdCAqc3VicHJvY2Vzc19lbnYsIGNoYXIg Y29uc3QgKip2YWwsIHJlcXVlc3RfcmVjICpyKSB7CisgICAgY29uc3QgYXByX3RhYmxlX2Vu dHJ5X3QgKmVsdHM7CisgICAgLyogTWF0Y2hpbmcgaGVhZGVyc19pbiBhZ2FpbnN0IGEgcmVn ZXguIEl0ZXJhdGUgdGhyb3VnaAorICAgICAqIHRoZSBoZWFkZXJzIHVudGlsIHdlIGZpbmQg YSBtYXRjaCBvciBydW4gb3V0IG9mCisgICAgICogaGVhZGVycy4KKyAgICAgKi8KKyAgICBj b25zdCBhcHJfYXJyYXlfaGVhZGVyX3QgKmFyciA9IGFwcl90YWJsZV9lbHRzKGhlYWRlcnMp OworICAgIGludCBqOworCisKKyAgICBpZiAoYi0+cG5hbWVyZWcpIHsKKyAgICAgICAgZWx0 cyA9IChjb25zdCBhcHJfdGFibGVfZW50cnlfdCAqKSBhcnItPmVsdHM7CisgICAgICAgICp2 YWwgPSBOVUxMOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgYXJyLT5uZWx0czsgKytqKSB7 CisgICAgICAgICAgICBpZiAoIWFwX3JlZ2V4ZWMoYi0+cG5hbWVyZWcsIGVsdHNbal0ua2V5 LCAwLCBOVUxMLCAwKSkgeyAKKyAgICAgICAgICAgICAgICAqdmFsID0gZWx0c1tqXS52YWw7 CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAg IGlmKCFiLT5pc2NvbnRlbnRfdHlwZSkgeworICAgICAgICAgICAgLyogTm90IG1hdGNoaW5n IGFnYWluc3QgYSByZWdleCAqLworICAgICAgICAgICAgKnZhbCA9IGFwcl90YWJsZV9nZXQo aGVhZGVycywgYi0+bmFtZSk7CisgICAgICAgICAgICBpZiAoKnZhbCA9PSBOVUxMKSB7Cisg ICAgICAgICAgICAgICAgKnZhbCA9IGFwcl90YWJsZV9nZXQoc3VicHJvY2Vzc19lbnYsIGIt Pm5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg ICAgICAgICAgKnZhbCA9IHItPmNvbnRlbnRfdHlwZTsKKyAgICAgICAgfQorICAgIH0KK30K KworCisvKgorICogVGhpcyByb3V0aW5lIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhY2Nv cmRpbmcgdG8gdmFsLgorICogUXVlc3Rpb24gOiB3aHkgc2VpX2VudHJ5J3Mgbm90IGNvbnN0 ID8gYmVjYXVzZSBhcF9yZWdleGVjIGlzIG5vdCBkZWZpbmVkIGFzCisgKiB3ZWxsLi4uIHBj cmVwb3NpeCBkb2VzIG5vdCBkZWZpbmUgdGhlIHVzZSBvZiB0aGUgcmVnZXggYXMgbm90IG1v ZGlmeWluZyBpdD8KKyAqLworc3RhdGljIHZvaWQgc2V0ZW52aWZfdmFsX21hdGNoKHJlcXVl c3RfcmVjICpyLCBjb25zdCBjaGFyICp2YWwsIGFwcl9zaXplX3QKKyAgICAgICAgdmFsX2xl biwgc2VpX2VudHJ5ICpiKSB7CisgICAgYXBfcmVnbWF0Y2hfdCByZWdtW0FQX01BWF9SRUdf TUFUQ0hdOworICAgIGNvbnN0IGFwcl90YWJsZV9lbnRyeV90ICplbHRzOworICAgIGludCBq OworCisgICAgLyoKKyAgICAgKiBBIE5VTEwgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIGhl YWRlciBmaWVsZCBvciBzcGVjaWFsIGVudGl0eQorICAgICAqIHdhc24ndCBwcmVzZW50IG9y IGlzIHVuZGVmaW5lZC4gIFJlcHJlc2VudCB0aGF0IGFzIGFuIGVtcHR5IHN0cmluZworICAg ICAqIHNvIHRoYXQgUkVzIGxpa2UgIl4kIiB3aWxsIHdvcmsgYW5kIGFsbG93IGVudmFyaWFi bGUgc2V0dGluZworICAgICAqIGJhc2VkIG9uIG1pc3Npbmcgb3IgZW1wdHkgZmllbGQuCisg ICAgICovCisgICAgaWYgKHZhbCA9PSBOVUxMKSB7CisgICAgICAgIHZhbCA9ICIiOworICAg ICAgICB2YWxfbGVuID0gMDsKKyAgICB9CisKKyAgICBpZiAoKGItPnBhdHRlcm4gJiYgYXBy X3N0cm1hdGNoKGItPnBhdHRlcm4sIHZhbCwgdmFsX2xlbikpIHx8CisgICAgICAgICAgICAo IWItPnBhdHRlcm4gJiYgIWFwX3JlZ2V4ZWMoYi0+cHJlZywgdmFsLCBBUF9NQVhfUkVHX01B VENILCByZWdtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAp KSkgeworICAgICAgICBjb25zdCBhcHJfYXJyYXlfaGVhZGVyX3QgKmFyciA9IGFwcl90YWJs ZV9lbHRzKGItPmZlYXR1cmVzKTsKKyAgICAgICAgZWx0cyA9IChjb25zdCBhcHJfdGFibGVf ZW50cnlfdCAqKSBhcnItPmVsdHM7CisKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IGFyci0+ bmVsdHM7ICsraikgeworICAgICAgICAgICAgaWYgKCooZWx0c1tqXS52YWwpID09ICchJykg eworICAgICAgICAgICAgICAgIGFwcl90YWJsZV91bnNldChyLT5zdWJwcm9jZXNzX2Vudiwg ZWx0c1tqXS5rZXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAg ICAgICAgICAgICAgaWYgKCFiLT5wYXR0ZXJuKSB7CisgICAgICAgICAgICAgICAgICAgIGNo YXIgKnJlcGxhY2VkID0gYXBfcHJlZ3N1YihyLT5wb29sLCBlbHRzW2pdLnZhbCwgdmFsLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQX01BWF9SRUdfTUFUQ0gsIHJlZ20pOwor ICAgICAgICAgICAgICAgICAgICBpZiAocmVwbGFjZWQpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIGFwcl90YWJsZV9zZXRuKHItPnN1YnByb2Nlc3NfZW52LCBlbHRzW2pdLmtleSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQpOworICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2Ug eworICAgICAgICAgICAgICAgICAgICBhcHJfdGFibGVfc2V0bihyLT5zdWJwcm9jZXNzX2Vu diwgZWx0c1tqXS5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0c1tqXS52 YWwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg IH0KK30KKworLyoKICAqIFRoaXMgcm91dGluZSBnZXRzIGNhbGxlZCBhdCB0d28gZGlmZmVy ZW50IHBvaW50cyBpbiByZXF1ZXN0IHByb2Nlc3Npbmc6CiAgKiBvbmNlIGJlZm9yZSB0aGUg VVJJIGhhcyBiZWVuIHRyYW5zbGF0ZWQgKGR1cmluZyB0aGUgcG9zdC1yZWFkLXJlcXVlc3QK ICAqIHBoYXNlKSBhbmQgb25jZSBhZnRlciAoZHVyaW5nIHRoZSBoZWFkZXItcGFyc2UgcGhh c2UpLiAgV2UgdXNlIGRpZmZlcmVudApAQCAtNTY1LDEzICs3MTYsNjQgQEAKICAgICAgICAg fQogICAgIH0KIAorICAgIGlmIChzY29uZi0+b3V0cHV0X2ZpbHRlcl9vbiA9PSAxKQorICAg ICAgICBhcF9hZGRfb3V0cHV0X2ZpbHRlcihTRUlfT1VUUFVUX0ZJTFRFUl9OQU1FLCBzY29u Ziwgciwgci0+Y29ubmVjdGlvbik7CisKICAgICByZXR1cm4gREVDTElORUQ7CiB9CiAKKy8q CisgKiBUaGlzIChvdXRwdXQpIGZpbHRlciBwcm9jZXNzIGhlYWRlcnNfb3V0IHRvIGZpbmQg Y29uZGl0aW9uIHRvIHNldCBlbnYuCisgKi8KK3N0YXRpYyBhcHJfc3RhdHVzX3Qgc2V0ZW52 aWZfb3V0X2ZpbHRlcihhcF9maWx0ZXJfdCAqIGYsIGFwcl9idWNrZXRfYnJpZ2FkZSAqIGJi KQoreworICAgIHNlaV9jZmdfcmVjICpzY29uZjsKKyAgICBzZWlfZW50cnkgKmVudHJpZXM7 CisgICAgY29uc3QgY2hhciAqdmFsOworICAgIGFwcl9zaXplX3QgdmFsX2xlbiA9IDA7Cisg ICAgaW50IGk7CisgICAgY2hhciAqbGFzdF9uYW1lOworCisgICAgc2NvbmYgID0gKHNlaV9j ZmdfcmVjICopIGYtPmN0eDsKKyAgICBlbnRyaWVzID0gKHNlaV9lbnRyeSAqKSBzY29uZi0+ Y29uZGl0aW9uYWxzLT5lbHRzOworICAgIGxhc3RfbmFtZSA9IE5VTEw7CisgICAgZm9yIChp ID0gMDsgaSA8IHNjb25mLT5jb25kaXRpb25hbHMtPm5lbHRzOyArK2kpIHsKKyAgICAgICAg c2VpX2VudHJ5ICpiID0gJmVudHJpZXNbaV07CisKKyAgICAgICAgdmFsID0gTlVMTDsKKyAg ICAgICAgLyoKKyAgICAgICAgICogT3B0aW1pemUgdGhlIGNhc2Ugd2hlcmUgYSBidW5jaCBv ZiBkaXJlY3RpdmVzIGluIGEgcm93IHVzZSB0aGUKKyAgICAgICAgICogc2FtZSBoZWFkZXIu ICBSZW1lbWJlciB3ZSBkb24ndCBuZWVkIHRvIHN0cmNtcCB0aGUgdHdvIGhlYWRlcgorICAg ICAgICAgKiBuYW1lcyBiZWNhdXNlIHdlIG1hZGUgc3VyZSB0aGUgcG9pbnRlcnMgd2VyZSBl cXVhbCBkdXJpbmcKKyAgICAgICAgICogY29uZmlndXJhdGlvbi4KKyAgICAgICAgICovCisg ICAgICAgIGlmIChiLT5uYW1lICE9IGxhc3RfbmFtZSkgeworICAgICAgICAgICAgbGFzdF9u YW1lID0gYi0+bmFtZTsKKyAgICAgICAgICAgIGlmIChiLT5zcGVjaWFsX3R5cGUgPT0gU1BF Q0lBTF9PVVRQVVRfSEVBREVSKSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAg ICAgICAgKiBBcyBvdXRwdXQgZmlsdGVyLCBvbmx5IGhlYWRlcnNfb3V0IGFyZSBpbnRlcnJl c3RpbmcgZm9yIHVzCisgICAgICAgICAgICAgICAgICogc28gd2UganVzdCBwcm9jZXNzIHRo aXMgdHlwZSBvZiBjb25kaXRpb25zLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAg ICAgICAgIGdldF9oZWFkZXJfdmFsKGIsIGYtPnItPmhlYWRlcnNfb3V0LCBmLT5yLT5zdWJw cm9jZXNzX2VudiwgJnZhbCwgZi0+cik7CisgICAgICAgICAgICAgICAgdmFsX2xlbiA9IHZh bCA/IHN0cmxlbih2YWwpIDogMDsKKyAgICAgICAgICAgICAgICBzZXRlbnZpZl92YWxfbWF0 Y2goZi0+ciwgdmFsLCB2YWxfbGVuLCBiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgIH0KKworICAgIGFwX3JlbW92ZV9vdXRwdXRfZmlsdGVyKGYpOworICAgIHJldHVybiBh cF9wYXNzX2JyaWdhZGUoZi0+bmV4dCwgYmIpOworfQorCiBzdGF0aWMgdm9pZCByZWdpc3Rl cl9ob29rcyhhcHJfcG9vbF90ICpwKQogewogICAgIGFwX2hvb2tfaGVhZGVyX3BhcnNlciht YXRjaF9oZWFkZXJzLCBOVUxMLCBOVUxMLCBBUFJfSE9PS19NSURETEUpOwogICAgIGFwX2hv b2tfcG9zdF9yZWFkX3JlcXVlc3QobWF0Y2hfaGVhZGVycywgTlVMTCwgTlVMTCwgQVBSX0hP T0tfTUlERExFKTsKKyAgICAvKgorICAgICAqIGZ0eXBlIGlzIHNldCB0byBBUF9GVFlQRV9D T05URU5UX1NFVCArIDEgdG8gbWFrZSB0aGlzIGZpbHRlciBob29rZWQKKyAgICAgKiBiZWZv cmUgZGVmbGF0ZSAoaXQncyBzcGVjaWZpYyBmb3IgdGhlIG1vbWVudCkuCisgICAgICovCisg ICAgYXBfcmVnaXN0ZXJfb3V0cHV0X2ZpbHRlcihTRUlfT1VUUFVUX0ZJTFRFUl9OQU1FLCBz ZXRlbnZpZl9vdXRfZmlsdGVyLCBOVUxMLCBBUF9GVFlQRV9DT05URU5UX1NFVCk7CiB9CiAK IG1vZHVsZSBBUF9NT0RVTEVfREVDTEFSRV9EQVRBIHNldGVudmlmX21vZHVsZSA9Cg== --------------080304070707030003080304 Content-Type: application/octet-stream; x-mac-type="0"; x-mac-creator="0"; name="mod_setenvif-2-0-x-2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mod_setenvif-2-0-x-2.patch" SW5kZXg6IG1vZHVsZXMvbWV0YWRhdGEvbW9kX3NldGVudmlmLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gbW9kdWxlcy9tZXRhZGF0YS9tb2Rfc2V0ZW52aWYuYwkocmV2aXNpb24gNDEwMjk2KQor KysgbW9kdWxlcy9tZXRhZGF0YS9tb2Rfc2V0ZW52aWYuYwkod29ya2luZyBjb3B5KQpAQCAt MTAyLDcgKzEwMiw4IEBACiAgICAgU1BFQ0lBTF9SRVFVRVNUX1VSSSwKICAgICBTUEVDSUFM X1JFUVVFU1RfTUVUSE9ELAogICAgIFNQRUNJQUxfUkVRVUVTVF9QUk9UT0NPTCwKLSAgICBT UEVDSUFMX1NFUlZFUl9BRERSCisgICAgU1BFQ0lBTF9TRVJWRVJfQUREUiwKKyAgICBTUEVD SUFMX09VVFBVVF9IRUFERVIKIH07CiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgY2hhciAqbmFt ZTsgICAgICAgICAgICAgICAgIC8qIGhlYWRlciBuYW1lICovCkBAIC0xMTMsMTAgKzExNCwx MiBAQAogICAgIGFwcl90YWJsZV90ICpmZWF0dXJlczsgICAgICAvKiBlbnYgdmFycyB0byBz ZXQgKG9yIHVuc2V0KSAqLwogICAgIGVudW0gc3BlY2lhbCBzcGVjaWFsX3R5cGU7ICAvKiBp cyBpdCBhICJzcGVjaWFsIiBoZWFkZXIgPyAqLwogICAgIGludCBpY2FzZTsgICAgICAgICAg ICAgICAgICAvKiBpZ25vcmluZyBjYXNlPyAqLworICAgIGludCBpc2NvbnRlbnRfdHlwZTsg ICAgICAgICAvKiBpcyBjb250ZW50IHR5cGUgPyAqLwogfSBzZWlfZW50cnk7CiAKIHR5cGVk ZWYgc3RydWN0IHsKICAgICBhcHJfYXJyYXlfaGVhZGVyX3QgKmNvbmRpdGlvbmFsczsKKyAg ICBpbnQgb3V0cHV0X2ZpbHRlcl9vbjsgICAgICAgIC8qIGFjdCBhcyBvdXRwdXRfZmlsdGVy IGZvciBoZWFkZXJzX291dCA/ICovCiB9IHNlaV9jZmdfcmVjOwogCiBtb2R1bGUgQVBfTU9E VUxFX0RFQ0xBUkVfREFUQSBzZXRlbnZpZl9tb2R1bGU7CkBAIC0xMzUsNiArMTM4LDcgQEAK ICAgICBzZWlfY2ZnX3JlYyAqbmV3ID0gKHNlaV9jZmdfcmVjICopIGFwcl9wYWxsb2MocCwg c2l6ZW9mKHNlaV9jZmdfcmVjKSk7CiAKICAgICBuZXctPmNvbmRpdGlvbmFscyA9IGFwcl9h cnJheV9tYWtlKHAsIDIwLCBzaXplb2Yoc2VpX2VudHJ5KSk7CisgICAgbmV3LT5vdXRwdXRf ZmlsdGVyX29uID0gMDsKICAgICByZXR1cm4gKHZvaWQgKikgbmV3OwogfQogCkBAIC0xNTUs NiArMTU5LDggQEAKIAogICAgIGEtPmNvbmRpdGlvbmFscyA9IGFwcl9hcnJheV9hcHBlbmQo cCwgYmFzZS0+Y29uZGl0aW9uYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3ZlcnJpZGVzLT5jb25kaXRpb25hbHMpOworICAgIGlmKGJhc2UtPm91dHB1 dF9maWx0ZXJfb24gfHwgb3ZlcnJpZGVzLT5vdXRwdXRfZmlsdGVyX29uKQorICAgICAgICBh LT5vdXRwdXRfZmlsdGVyX29uID0gMTsKICAgICByZXR1cm4gYTsKIH0KIApAQCAtMTY0LDYg KzE3MCw3IEBACiAgKi8KICNkZWZpbmUgSUNBU0VfTUFHSUMJKCh2b2lkICopKCZzZXRlbnZp Zl9tb2R1bGUpKQogI2RlZmluZSBTRUlfTUFHSUNfSEVJUkxPT00gInNldGVudmlmLXBoYXNl LWZsYWciCisjZGVmaW5lIFNFSV9PVVRQVVRfRklMVEVSX05BTUUgICJzZXRlbnZpZi1vdXRw dXQtZmlsdGVyIgogCiBzdGF0aWMgaW50IGlzX2hlYWRlcl9yZWdleChhcHJfcG9vbF90ICpw LCBjb25zdCBjaGFyKiBuYW1lKSAKIHsKQEAgLTMwNywyNiArMzE0LDcgQEAKICAgICAgICAg bmV3LT5uYW1lID0gZm5hbWU7CiAgICAgICAgIG5ldy0+cmVnZXggPSByZWdleDsKICAgICAg ICAgbmV3LT5pY2FzZSA9IGljYXNlOwotICAgICAgICBpZiAoKHNpbXBsZV9wYXR0ZXJuID0g bm9uX3JlZ2V4X3BhdHRlcm4oY21kLT5wb29sLCByZWdleCkpKSB7Ci0gICAgICAgICAgICBu ZXctPnBhdHRlcm4gPSBhcHJfc3RybWF0Y2hfcHJlY29tcGlsZShjbWQtPnBvb2wsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGVf cGF0dGVybiwgIWljYXNlKTsKLSAgICAgICAgICAgIGlmIChuZXctPnBhdHRlcm4gPT0gTlVM TCkgewotICAgICAgICAgICAgICAgIHJldHVybiBhcHJfcHN0cmNhdChjbWQtPnBvb2wsIGNt ZC0+Y21kLT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHBh dHRlcm4gY291bGQgbm90IGJlIGNvbXBpbGVkLiIsIE5VTEwpOwotICAgICAgICAgICAgfQot ICAgICAgICAgICAgbmV3LT5wcmVnID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBlbHNl IHsKLSAgICAgICAgICAgIG5ldy0+cHJlZyA9IGFwX3ByZWdjb21wKGNtZC0+cG9vbCwgcmVn ZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUkVHX0VYVEVOREVE IHwgKGljYXNlID8gUkVHX0lDQVNFIDogMCkpKTsKLSAgICAgICAgICAgIGlmIChuZXctPnBy ZWcgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBhcHJfcHN0cmNhdChjbWQt PnBvb2wsIGNtZC0+Y21kLT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiIHJlZ2V4IGNvdWxkIG5vdCBiZSBjb21waWxlZC4iLCBOVUxMKTsKLSAgICAgICAg ICAgIH0KLSAgICAgICAgICAgIG5ldy0+cGF0dGVybiA9IE5VTEw7Ci0gICAgICAgIH0KLSAg ICAgICAgbmV3LT5mZWF0dXJlcyA9IGFwcl90YWJsZV9tYWtlKGNtZC0+cG9vbCwgMik7Ci0K KyAgICAgICAgbmV3LT5pc2NvbnRlbnRfdHlwZSA9IDA7CiAgICAgICAgIGlmICghc3RyY2Fz ZWNtcChmbmFtZSwgInJlbW90ZV9hZGRyIikpIHsKICAgICAgICAgICAgIG5ldy0+c3BlY2lh bF90eXBlID0gU1BFQ0lBTF9SRU1PVEVfQUREUjsKICAgICAgICAgfQpAQCAtMzQ1LDcgKzMz MywzNyBAQAogICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcChmbmFtZSwgInNlcnZlcl9h ZGRyIikpIHsKICAgICAgICAgICAgIG5ldy0+c3BlY2lhbF90eXBlID0gU1BFQ0lBTF9TRVJW RVJfQUREUjsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAo IXN0cmNhc2VjbXAoZm5hbWUsICJvdXRwdXRfaGVhZGVyIikpIHsKKyAgICAgICAgICAgIG5l dy0+c3BlY2lhbF90eXBlID0gU1BFQ0lBTF9PVVRQVVRfSEVBREVSOworICAgICAgICAgICAg c2NvbmYtPm91dHB1dF9maWx0ZXJfb24gPSAxOworICAgICAgICAgICAgLyoKKyAgICAgICAg ICAgICAqIFRoZSByZWdleCBpcyB0aGUgM3JkIHdvcmQgaGVyZSwgYmVjYXVzZSB3ZSBrZWVw IHRoZSBzYW1lIHN5bnRheAorICAgICAgICAgICAgICogYXMgZm9yIGhlYWRlciBzdHJpbmcs IGJ1dCB3ZSBhZGRlZCB0aGUgb3V0cHV0X2hlYWRlciBrZXkgd29yZCB0bworICAgICAgICAg ICAgICoga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgKHRvIGF2b2lkIHRoZSBtYXRj aGluZyBvZiBib3RoCisgICAgICAgICAgICAgKiByZXF1ZXN0IGFuZCByZXNwb25zZSBoZWFk ZXIgb24gYSByZWdleCkuCisgICAgICAgICAgICAgKiBJbiB0aGlzIGNhc2UgdGhlIDJuZCBw YXJhbSBvZiB0aGUgZGlyZWN0aXZlIGlzIHRoZSBoZWFkZXIKKyAgICAgICAgICAgICAqIHJl Z2V4L25hbWUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG5ldy0+bmFtZSA9IHJl Z2V4OworICAgICAgICAgICAgaWYgKGlzX2hlYWRlcl9yZWdleChjbWQtPnBvb2wsIG5ldy0+ bmFtZSkpIHsKKyAgICAgICAgICAgICAgICBuZXctPnBuYW1lcmVnID0gYXBfcHJlZ2NvbXAo Y21kLT5wb29sLCBuZXctPm5hbWUsIChSRUdfRVhURU5ERUQgfAorICAgICAgICAgICAgICAg IFJFR19OT1NVQiB8IChpY2FzZSA/IFJFR19JQ0FTRSA6IDApKSk7CisgICAgICAgICAgICAg ICAgaWYgKG5ldy0+cG5hbWVyZWcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGFwcl9wc3RyY2F0KGNtZC0+cG9vbCwgY21kLT5jbWQtPm5hbWUsICJIZWFkZXIgbmFt ZSByZWdleCBjb3VsZCBub3QgYmUgY29tcGlsZWQuIiwgTlVMTCk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBuZXctPnBuYW1lcmVnID0g TlVMTDsKKyAgICAgICAgICAgICAgICBpZighc3RyY2FzZWNtcChuZXctPm5hbWUsICJjb250 ZW50LXR5cGUiKSkKKyAgICAgICAgICAgICAgICAgICAgbmV3LT5pc2NvbnRlbnRfdHlwZSA9 IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZWdleCA9IGFwX2dldHdvcmRfY29u ZihjbWQtPnBvb2wsICZhcmdzKTsKKyAgICAgICAgICAgIGlmICghKnJlZ2V4KSB7CisgICAg ICAgICAgICAgICAgcmV0dXJuIGFwcl9wc3RyY2F0KGNtZC0+cG9vbCwgIk1pc3NpbmcgcmVn dWxhciBleHByZXNzaW9uIGZvciAiLAorICAgICAgICAgICAgICAgIGNtZC0+Y21kLT5uYW1l LCBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5ldy0+cmVnZXggPSByZWdl eDsKKyAgICAgICAgfQorICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBuZXctPnNwZWNp YWxfdHlwZSA9IFNQRUNJQUxfTk9UOwogICAgICAgICAgICAgLyogSGFuZGxlIGZuYW1lIGFz IGEgcmVndWxhciBleHByZXNzaW9uLgogICAgICAgICAgICAgICogSWYgZm5hbWUgYSBzaW1w bGUgaGVhZGVyIHN0cmluZywgaWRlbnRpZnkgYXMgc3VjaApAQCAtMzY1LDYgKzM4MywzMCBA QAogICAgICAgICAgICAgICAgIG5ldy0+cG5hbWVyZWcgPSBOVUxMOwogICAgICAgICAgICAg fQogICAgICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXMgYmxvY2sgbXVzdCBi ZSBhZnRlciB0aGUgaWRlbnRpZmljYXRpb24gb2YgdGhlIHBhcmFtZXRlcnMsIGFzCisgICAg ICAgICAqIHRoZSByZWdleCBtYXkgYmUgaW4gYW4gb3RoZXIgcG9zaXRpb24gdGhhbiB0aGUg c2Vjb25kIG9uZSBkZXBlbmRzCisgICAgICAgICAqIG9mIHRoZSBzcGVjaWFsIHR5cGUuCisg ICAgICAgICAqLworICAgICAgICBpZiAoKHNpbXBsZV9wYXR0ZXJuID0gbm9uX3JlZ2V4X3Bh dHRlcm4oY21kLT5wb29sLCByZWdleCkpKSB7CisgICAgICAgICAgICBuZXctPnBhdHRlcm4g PSBhcHJfc3RybWF0Y2hfcHJlY29tcGlsZShjbWQtPnBvb2wsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGVfcGF0dGVybiwgIWlj YXNlKTsKKyAgICAgICAgICAgIGlmIChuZXctPnBhdHRlcm4gPT0gTlVMTCkgeworICAgICAg ICAgICAgICAgIHJldHVybiBhcHJfcHN0cmNhdChjbWQtPnBvb2wsIGNtZC0+Y21kLT5uYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHBhdHRlcm4gY291bGQg bm90IGJlIGNvbXBpbGVkLiIsIE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg bmV3LT5wcmVnID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAg ICAgIG5ldy0+cHJlZyA9IGFwX3ByZWdjb21wKGNtZC0+cG9vbCwgcmVnZXgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUkVHX0VYVEVOREVEIHwgKGljYXNlID8g UkVHX0lDQVNFIDogMCkpKTsKKyAgICAgICAgICAgIGlmIChuZXctPnByZWcgPT0gTlVMTCkg eworICAgICAgICAgICAgICAgIHJldHVybiBhcHJfcHN0cmNhdChjbWQtPnBvb2wsIGNtZC0+ Y21kLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHJlZ2V4 IGNvdWxkIG5vdCBiZSBjb21waWxlZC4iLCBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIG5ldy0+cGF0dGVybiA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbmV3LT5m ZWF0dXJlcyA9IGFwcl90YWJsZV9tYWtlKGNtZC0+cG9vbCwgMik7CiAgICAgfQogICAgIGVs c2UgewogICAgICAgICBuZXcgPSAmZW50cmllc1tpXTsKQEAgLTQzNiw2ICs0NzgsOTUgQEAK IH07CiAKIC8qCisgKiBUaGlzIHJvdXRpbmUgZ2V0IGZyb20gYSBoZWFkZXIgKG9yIHN1YnBy b2Nlc3NfZW52IGlmIG5vIG1hdGNoIGluIGhlYWRlciksCisgKiB0aGUgdmFsdWUgdGhhdCBj b3JyZXNwb25kIHRvIGEgaGVhZGVyIG5hbWUgb3IgYSBoZWFkZXIgbWF0Y2hpbmcgcmVnZXhw LgorICogKGFjY29yZGluZyB0byBhIHNlaV9lbnRyeSkuCisgKi8KK3N0YXRpYyB2b2lkIGdl dF9oZWFkZXJfdmFsKHNlaV9lbnRyeSAqYiwgYXByX3RhYmxlX3QgKmhlYWRlcnMsIGFwcl90 YWJsZV90ICpzdWJwcm9jZXNzX2VudiwgY2hhciBjb25zdCAqKnZhbCwgcmVxdWVzdF9yZWMg KnIpIHsKKyAgICBjb25zdCBhcHJfdGFibGVfZW50cnlfdCAqZWx0czsKKyAgICAvKiBNYXRj aGluZyBoZWFkZXJzX2luIGFnYWluc3QgYSByZWdleC4gSXRlcmF0ZSB0aHJvdWdoCisgICAg ICogdGhlIGhlYWRlcnMgdW50aWwgd2UgZmluZCBhIG1hdGNoIG9yIHJ1biBvdXQgb2YKKyAg ICAgKiBoZWFkZXJzLgorICAgICAqLworICAgIGNvbnN0IGFwcl9hcnJheV9oZWFkZXJfdCAq YXJyID0gYXByX3RhYmxlX2VsdHMoaGVhZGVycyk7CisgICAgaW50IGo7CisKKworICAgIGlm IChiLT5wbmFtZXJlZykgeworICAgICAgICBlbHRzID0gKGNvbnN0IGFwcl90YWJsZV9lbnRy eV90ICopIGFyci0+ZWx0czsKKyAgICAgICAgKnZhbCA9IE5VTEw7CisgICAgICAgIGZvciAo aiA9IDA7IGogPCBhcnItPm5lbHRzOyArK2opIHsKKyAgICAgICAgICAgIGlmICghYXBfcmVn ZXhlYyhiLT5wbmFtZXJlZywgZWx0c1tqXS5rZXksIDAsIE5VTEwsIDApKSB7IAorICAgICAg ICAgICAgICAgICp2YWwgPSBlbHRzW2pdLnZhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg fQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYoIWItPmlzY29udGVudF90eXBlKSB7 CisgICAgICAgICAgICAvKiBOb3QgbWF0Y2hpbmcgYWdhaW5zdCBhIHJlZ2V4ICovCisgICAg ICAgICAgICAqdmFsID0gYXByX3RhYmxlX2dldChoZWFkZXJzLCBiLT5uYW1lKTsKKyAgICAg ICAgICAgIGlmICgqdmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqdmFsID0gYXBy X3RhYmxlX2dldChzdWJwcm9jZXNzX2VudiwgYi0+bmFtZSk7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqdmFsID0gci0+Y29udGVu dF90eXBlOworICAgICAgICB9CisgICAgfQorfQorCisKKy8qCisgKiBUaGlzIHJvdXRpbmUg c2V0IGVudmlyb25tZW50IHZhcmlhYmxlIGFjY29yZGluZyB0byB2YWwuCisgKiBRdWVzdGlv biA6IHdoeSBzZWlfZW50cnkncyBub3QgY29uc3QgPyBiZWNhdXNlIGFwX3JlZ2V4ZWMgaXMg bm90IGRlZmluZWQgYXMKKyAqIHdlbGwuLi4gcGNyZXBvc2l4IGRvZXMgbm90IGRlZmluZSB0 aGUgdXNlIG9mIHRoZSByZWdleCBhcyBub3QgbW9kaWZ5aW5nIGl0PworICovCitzdGF0aWMg dm9pZCBzZXRlbnZpZl92YWxfbWF0Y2gocmVxdWVzdF9yZWMgKnIsIGNvbnN0IGNoYXIgKnZh bCwgYXByX3NpemVfdAorICAgICAgICB2YWxfbGVuLCBzZWlfZW50cnkgKmIpIHsKKyAgICBy ZWdtYXRjaF90IHJlZ21bQVBfTUFYX1JFR19NQVRDSF07CisgICAgY29uc3QgYXByX3RhYmxl X2VudHJ5X3QgKmVsdHM7CisgICAgaW50IGo7CisKKyAgICAvKgorICAgICAqIEEgTlVMTCB2 YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgaGVhZGVyIGZpZWxkIG9yIHNwZWNpYWwgZW50aXR5 CisgICAgICogd2Fzbid0IHByZXNlbnQgb3IgaXMgdW5kZWZpbmVkLiAgUmVwcmVzZW50IHRo YXQgYXMgYW4gZW1wdHkgc3RyaW5nCisgICAgICogc28gdGhhdCBSRXMgbGlrZSAiXiQiIHdp bGwgd29yayBhbmQgYWxsb3cgZW52YXJpYWJsZSBzZXR0aW5nCisgICAgICogYmFzZWQgb24g bWlzc2luZyBvciBlbXB0eSBmaWVsZC4KKyAgICAgKi8KKyAgICBpZiAodmFsID09IE5VTEwp IHsKKyAgICAgICAgdmFsID0gIiI7CisgICAgICAgIHZhbF9sZW4gPSAwOworICAgIH0KKwor ICAgIGlmICgoYi0+cGF0dGVybiAmJiBhcHJfc3RybWF0Y2goYi0+cGF0dGVybiwgdmFsLCB2 YWxfbGVuKSkgfHwKKyAgICAgICAgICAgICghYi0+cGF0dGVybiAmJiAhYXBfcmVnZXhlYyhi LT5wcmVnLCB2YWwsIEFQX01BWF9SRUdfTUFUQ0gsIHJlZ20sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCkpKSB7CisgICAgICAgIGNvbnN0IGFwcl9hcnJh eV9oZWFkZXJfdCAqYXJyID0gYXByX3RhYmxlX2VsdHMoYi0+ZmVhdHVyZXMpOworICAgICAg ICBlbHRzID0gKGNvbnN0IGFwcl90YWJsZV9lbnRyeV90ICopIGFyci0+ZWx0czsKKworICAg ICAgICBmb3IgKGogPSAwOyBqIDwgYXJyLT5uZWx0czsgKytqKSB7CisgICAgICAgICAgICBp ZiAoKihlbHRzW2pdLnZhbCkgPT0gJyEnKSB7CisgICAgICAgICAgICAgICAgYXByX3RhYmxl X3Vuc2V0KHItPnN1YnByb2Nlc3NfZW52LCBlbHRzW2pdLmtleSk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWItPnBhdHRlcm4p IHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAqcmVwbGFjZWQgPSBhcF9wcmVnc3ViKHIt PnBvb2wsIGVsdHNbal0udmFsLCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg QVBfTUFYX1JFR19NQVRDSCwgcmVnbSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXBs YWNlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXByX3RhYmxlX3NldG4oci0+c3Vi cHJvY2Vzc19lbnYsIGVsdHNbal0ua2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXBsYWNlZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGFwcl90 YWJsZV9zZXRuKHItPnN1YnByb2Nlc3NfZW52LCBlbHRzW2pdLmtleSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbHRzW2pdLnZhbCk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisvKgogICogVGhpcyByb3V0aW5l IGdldHMgY2FsbGVkIGF0IHR3byBkaWZmZXJlbnQgcG9pbnRzIGluIHJlcXVlc3QgcHJvY2Vz c2luZzoKICAqIG9uY2UgYmVmb3JlIHRoZSBVUkkgaGFzIGJlZW4gdHJhbnNsYXRlZCAoZHVy aW5nIHRoZSBwb3N0LXJlYWQtcmVxdWVzdAogICogcGhhc2UpIGFuZCBvbmNlIGFmdGVyIChk dXJpbmcgdGhlIGhlYWRlci1wYXJzZSBwaGFzZSkuICBXZSB1c2UgZGlmZmVyZW50CkBAIC00 NDgsMTIgKzU3OSwxMCBAQAogewogICAgIHNlaV9jZmdfcmVjICpzY29uZjsKICAgICBzZWlf ZW50cnkgKmVudHJpZXM7Ci0gICAgY29uc3QgYXByX3RhYmxlX2VudHJ5X3QgKmVsdHM7CiAg ICAgY29uc3QgY2hhciAqdmFsOwogICAgIGFwcl9zaXplX3QgdmFsX2xlbiA9IDA7Ci0gICAg aW50IGksIGo7CisgICAgaW50IGk7CiAgICAgY2hhciAqbGFzdF9uYW1lOwotICAgIHJlZ21h dGNoX3QgcmVnbVtBUF9NQVhfUkVHX01BVENIXTsKIAogICAgIGlmICghYXBfZ2V0X21vZHVs ZV9jb25maWcoci0+cmVxdWVzdF9jb25maWcsICZzZXRlbnZpZl9tb2R1bGUpKSB7CiAgICAg ICAgIGFwX3NldF9tb2R1bGVfY29uZmlnKHItPnJlcXVlc3RfY29uZmlnLCAmc2V0ZW52aWZf bW9kdWxlLApAQCAtNDY3LDEwICs1OTYsMTEgQEAKICAgICB9CiAgICAgZW50cmllcyA9IChz ZWlfZW50cnkgKikgc2NvbmYtPmNvbmRpdGlvbmFscy0+ZWx0czsKICAgICBsYXN0X25hbWUg PSBOVUxMOwotICAgIHZhbCA9IE5VTEw7CisKICAgICBmb3IgKGkgPSAwOyBpIDwgc2NvbmYt PmNvbmRpdGlvbmFscy0+bmVsdHM7ICsraSkgewogICAgICAgICBzZWlfZW50cnkgKmIgPSAm ZW50cmllc1tpXTsKIAorICAgICAgICB2YWwgPSBOVUxMOwogICAgICAgICAvKiBPcHRpbWl6 ZSB0aGUgY2FzZSB3aGVyZSBhIGJ1bmNoIG9mIGRpcmVjdGl2ZXMgaW4gYSByb3cgdXNlIHRo ZQogICAgICAgICAgKiBzYW1lIGhlYWRlci4gIFJlbWVtYmVyIHdlIGRvbid0IG5lZWQgdG8g c3RyY21wIHRoZSB0d28gaGVhZGVyCiAgICAgICAgICAqIG5hbWVzIGJlY2F1c2Ugd2UgbWFk ZSBzdXJlIHRoZSBwb2ludGVycyB3ZXJlIGVxdWFsIGR1cmluZwpAQCAtNDk5LDc5ICs2Mjks NzMgQEAKICAgICAgICAgICAgICAgICB2YWwgPSByLT5wcm90b2NvbDsKICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU1BFQ0lBTF9OT1Q6Ci0gICAgICAgICAg ICAgICAgaWYgKGItPnBuYW1lcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIE1hdGNo aW5nIGhlYWRlcnNfaW4gYWdhaW5zdCBhIHJlZ2V4LiBJdGVyYXRlIHRocm91Z2gKLSAgICAg ICAgICAgICAgICAgICAgICogdGhlIGhlYWRlcnNfaW4gdW50aWwgd2UgZmluZCBhIG1hdGNo IG9yIHJ1biBvdXQgb2YKLSAgICAgICAgICAgICAgICAgICAgICogaGVhZGVycy4KLSAgICAg ICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcl9hcnJh eV9oZWFkZXJfdAotICAgICAgICAgICAgICAgICAgICAgICAgKmFyciA9IGFwcl90YWJsZV9l bHRzKHItPmhlYWRlcnNfaW4pOwotCi0gICAgICAgICAgICAgICAgICAgIGVsdHMgPSAoY29u c3QgYXByX3RhYmxlX2VudHJ5X3QgKikgYXJyLT5lbHRzOwotICAgICAgICAgICAgICAgICAg ICB2YWwgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgYXJy LT5uZWx0czsgKytqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFwX3JlZ2V4 ZWMoYi0+cG5hbWVyZWcsIGVsdHNbal0ua2V5LCAwLCBOVUxMLCAwKSkgeyAKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWwgPSBlbHRzW2pdLnZhbDsKLSAgICAgICAgICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLyogTm90IG1h dGNoaW5nIGFnYWluc3QgYSByZWdleCAqLwotICAgICAgICAgICAgICAgICAgICB2YWwgPSBh cHJfdGFibGVfZ2V0KHItPmhlYWRlcnNfaW4sIGItPm5hbWUpOwotICAgICAgICAgICAgICAg ICAgICBpZiAodmFsID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9 IGFwcl90YWJsZV9nZXQoci0+c3VicHJvY2Vzc19lbnYsIGItPm5hbWUpOwotICAgICAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdldF9o ZWFkZXJfdmFsKGIsIHItPmhlYWRlcnNfaW4sIHItPnN1YnByb2Nlc3NfZW52LCAmdmFsLCBy KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZhbF9sZW4gPSB2YWwgPyBzdHJsZW4o dmFsKSA6IDA7CiAgICAgICAgIH0KIAorICAgICAgICBzZXRlbnZpZl92YWxfbWF0Y2gociwg dmFsLCB2YWxfbGVuLCBiKTsKKworICAgIH0KKworICAgIGlmIChzY29uZi0+b3V0cHV0X2Zp bHRlcl9vbiA9PSAxKQorICAgICAgICBhcF9hZGRfb3V0cHV0X2ZpbHRlcihTRUlfT1VUUFVU X0ZJTFRFUl9OQU1FLCBzY29uZiwgciwgci0+Y29ubmVjdGlvbik7CisgICAgCisgICAgcmV0 dXJuIERFQ0xJTkVEOworfQorCisvKgorICogVGhpcyAob3V0cHV0KSBmaWx0ZXIgcHJvY2Vz cyBoZWFkZXJzX291dCB0byBmaW5kIGNvbmRpdGlvbiB0byBzZXQgZW52LgorICovCitzdGF0 aWMgYXByX3N0YXR1c190IHNldGVudmlmX291dF9maWx0ZXIoYXBfZmlsdGVyX3QgKiBmLCBh cHJfYnVja2V0X2JyaWdhZGUgKiBiYikKK3sKKyAgICBzZWlfY2ZnX3JlYyAqc2NvbmY7Cisg ICAgc2VpX2VudHJ5ICplbnRyaWVzOworICAgIGNvbnN0IGNoYXIgKnZhbDsKKyAgICBhcHJf c2l6ZV90IHZhbF9sZW4gPSAwOworICAgIGludCBpOworICAgIGNoYXIgKmxhc3RfbmFtZTsK KworICAgIHNjb25mICA9IChzZWlfY2ZnX3JlYyAqKSBmLT5jdHg7CisgICAgZW50cmllcyA9 IChzZWlfZW50cnkgKikgc2NvbmYtPmNvbmRpdGlvbmFscy0+ZWx0czsKKyAgICBsYXN0X25h bWUgPSBOVUxMOworICAgIGZvciAoaSA9IDA7IGkgPCBzY29uZi0+Y29uZGl0aW9uYWxzLT5u ZWx0czsgKytpKSB7CisgICAgICAgIHNlaV9lbnRyeSAqYiA9ICZlbnRyaWVzW2ldOworCisg ICAgICAgIHZhbCA9IE5VTEw7CiAgICAgICAgIC8qCi0gICAgICAgICAqIEEgTlVMTCB2YWx1 ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgaGVhZGVyIGZpZWxkIG9yIHNwZWNpYWwgZW50aXR5Ci0g ICAgICAgICAqIHdhc24ndCBwcmVzZW50IG9yIGlzIHVuZGVmaW5lZC4gIFJlcHJlc2VudCB0 aGF0IGFzIGFuIGVtcHR5IHN0cmluZwotICAgICAgICAgKiBzbyB0aGF0IFJFcyBsaWtlICJe JCIgd2lsbCB3b3JrIGFuZCBhbGxvdyBlbnZhcmlhYmxlIHNldHRpbmcKLSAgICAgICAgICog YmFzZWQgb24gbWlzc2luZyBvciBlbXB0eSBmaWVsZC4KKyAgICAgICAgICogT3B0aW1pemUg dGhlIGNhc2Ugd2hlcmUgYSBidW5jaCBvZiBkaXJlY3RpdmVzIGluIGEgcm93IHVzZSB0aGUK KyAgICAgICAgICogc2FtZSBoZWFkZXIuICBSZW1lbWJlciB3ZSBkb24ndCBuZWVkIHRvIHN0 cmNtcCB0aGUgdHdvIGhlYWRlcgorICAgICAgICAgKiBuYW1lcyBiZWNhdXNlIHdlIG1hZGUg c3VyZSB0aGUgcG9pbnRlcnMgd2VyZSBlcXVhbCBkdXJpbmcKKyAgICAgICAgICogY29uZmln dXJhdGlvbi4KICAgICAgICAgICovCi0gICAgICAgIGlmICh2YWwgPT0gTlVMTCkgewotICAg ICAgICAgICAgdmFsID0gIiI7Ci0gICAgICAgICAgICB2YWxfbGVuID0gMDsKLSAgICAgICAg fQotCi0gICAgICAgIGlmICgoYi0+cGF0dGVybiAmJiBhcHJfc3RybWF0Y2goYi0+cGF0dGVy biwgdmFsLCB2YWxfbGVuKSkgfHwKLSAgICAgICAgICAgICghYi0+cGF0dGVybiAmJiAhYXBf cmVnZXhlYyhiLT5wcmVnLCB2YWwsIEFQX01BWF9SRUdfTUFUQ0gsIHJlZ20sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpKSB7Ci0gICAgICAgICAgICBj b25zdCBhcHJfYXJyYXlfaGVhZGVyX3QgKmFyciA9IGFwcl90YWJsZV9lbHRzKGItPmZlYXR1 cmVzKTsKLSAgICAgICAgICAgIGVsdHMgPSAoY29uc3QgYXByX3RhYmxlX2VudHJ5X3QgKikg YXJyLT5lbHRzOwotCi0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgYXJyLT5uZWx0czsg KytqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCooZWx0c1tqXS52YWwpID09ICchJykgewot ICAgICAgICAgICAgICAgICAgICBhcHJfdGFibGVfdW5zZXQoci0+c3VicHJvY2Vzc19lbnYs IGVsdHNbal0ua2V5KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxz ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghYi0+cGF0dGVybikgewotICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciAqcmVwbGFjZWQgPSBhcF9wcmVnc3ViKHItPnBvb2wsIGVs dHNbal0udmFsLCB2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQVBfTUFYX1JFR19NQVRDSCwgcmVnbSk7Ci0gICAgICAgICAgICAg ICAgICAgICAgICBpZiAocmVwbGFjZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhcHJfdGFibGVfc2V0bihyLT5zdWJwcm9jZXNzX2VudiwgZWx0c1tqXS5rZXksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQpOwotICAg ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgYXByX3RhYmxl X3NldG4oci0+c3VicHJvY2Vzc19lbnYsIGVsdHNbal0ua2V5LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZWx0c1tqXS52YWwpOwotICAgICAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBpZiAoYi0+bmFtZSAhPSBsYXN0 X25hbWUpIHsKKyAgICAgICAgICAgIGxhc3RfbmFtZSA9IGItPm5hbWU7CisgICAgICAgICAg ICBpZiAoYi0+c3BlY2lhbF90eXBlID09IFNQRUNJQUxfT1VUUFVUX0hFQURFUikgeworICAg ICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQXMgb3V0cHV0IGZpbHRlciwg b25seSBoZWFkZXJzX291dCBhcmUgaW50ZXJyZXN0aW5nIGZvciB1cworICAgICAgICAgICAg ICAgICAqIHNvIHdlIGp1c3QgcHJvY2VzcyB0aGlzIHR5cGUgb2YgY29uZGl0aW9ucy4KKyAg ICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBnZXRfaGVhZGVyX3ZhbChiLCBm LT5yLT5oZWFkZXJzX291dCwgZi0+ci0+c3VicHJvY2Vzc19lbnYsICZ2YWwsIGYtPnIpOwor ICAgICAgICAgICAgICAgIHZhbF9sZW4gPSB2YWwgPyBzdHJsZW4odmFsKSA6IDA7CisgICAg ICAgICAgICAgICAgc2V0ZW52aWZfdmFsX21hdGNoKGYtPnIsIHZhbCwgdmFsX2xlbiwgYik7 CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gREVDTElO RUQ7CisgICAgYXBfcmVtb3ZlX291dHB1dF9maWx0ZXIoZik7CisgICAgcmV0dXJuIGFwX3Bh c3NfYnJpZ2FkZShmLT5uZXh0LCBiYik7CiB9CiAKIHN0YXRpYyB2b2lkIHJlZ2lzdGVyX2hv b2tzKGFwcl9wb29sX3QgKnApCiB7CiAgICAgYXBfaG9va19oZWFkZXJfcGFyc2VyKG1hdGNo X2hlYWRlcnMsIE5VTEwsIE5VTEwsIEFQUl9IT09LX01JRERMRSk7CiAgICAgYXBfaG9va19w b3N0X3JlYWRfcmVxdWVzdChtYXRjaF9oZWFkZXJzLCBOVUxMLCBOVUxMLCBBUFJfSE9PS19N SURETEUpOworICAgIC8qCisgICAgICogZnR5cGUgaXMgc2V0IHRvIEFQX0ZUWVBFX0NPTlRF TlRfU0VUICsgMSB0byBtYWtlIHRoaXMgZmlsdGVyIGhvb2tlZAorICAgICAqIGJlZm9yZSBk ZWZsYXRlIChpdCdzIHNwZWNpZmljIGZvciB0aGUgbW9tZW50KS4KKyAgICAgKi8KKyAgICBh cF9yZWdpc3Rlcl9vdXRwdXRfZmlsdGVyKFNFSV9PVVRQVVRfRklMVEVSX05BTUUsIHNldGVu dmlmX291dF9maWx0ZXIsIE5VTEwsIEFQX0ZUWVBFX0NPTlRFTlRfU0VUKTsKIH0KIAogbW9k dWxlIEFQX01PRFVMRV9ERUNMQVJFX0RBVEEgc2V0ZW52aWZfbW9kdWxlID0K --------------080304070707030003080304--