Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:24455 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 59749 invoked by uid 1010); 18 Jul 2006 08:39:38 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 59734 invoked from network); 18 Jul 2006 08:39:38 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 18 Jul 2006 08:39:38 -0000 Authentication-Results: pb1.pair.com header.from=rquadling@googlemail.com; domainkeys=good DomainKey-Status: good X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: rquadling@googlemail.com X-Host-Fingerprint: 64.233.166.182 py-out-1112.google.com Linux 2.4/2.6 Received: from ([64.233.166.182:33164] helo=py-out-1112.google.com) by pb1.pair.com (ecelerity 2.1.1.3 r(11751M)) with ESMTP id 7D/09-11992-94E9CB44 for ; Tue, 18 Jul 2006 04:39:38 -0400 Received: by py-out-1112.google.com with SMTP id 57so343586pya for ; Tue, 18 Jul 2006 01:39:35 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=googlemail.com; h=received:message-id:date:from:reply-to:to:subject:in-reply-to:mime-version:content-type:references; b=X269NVcAbNAnwz3oP12SB89mm7dTXmWLzbR7u86PVEfXNp2XSkP69Xr3e3InRo9ddESLXctENLesi1Bf+nyK3hWanEp/WcvyRSzV3ucxRoAnkhGCHgJ/Q/AEPr3kKlVst/fyPYbz2ZHCC3XOKG0riASN3DKswwqd5d5FaHd7aGg= Received: by 10.35.117.5 with SMTP id u5mr5213002pym; Tue, 18 Jul 2006 01:39:34 -0700 (PDT) Received: by 10.35.93.20 with HTTP; Tue, 18 Jul 2006 01:39:34 -0700 (PDT) Message-ID: <10845a340607180139t45806159oaee78d9b585fc9cf@mail.gmail.com> Date: Tue, 18 Jul 2006 09:39:34 +0100 Reply-To: RQuadling@GoogleMail.com To: internals@lists.php.net In-Reply-To: <10845a340607180117g77f738ddkd972ffdf34e4c860@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_23539_24102289.1153211974849" References: <10845a340607151310od745e13gcd2f9c6137ebb68@mail.gmail.com> <10845a340607160209h427741cevbcf20df09c9501d5@mail.gmail.com> <10845a340607160217n769809agcfa097364d6aee86@mail.gmail.com> <10845a340607170316j7e3440ddlbe62ab8b0a807919@mail.gmail.com> <44BB7426.9060501@emini.dk> <3A.72.11992.93A7BB44@pb1.pair.com> <1153166320.18418.10.camel@localhost.localdomain> <1153169132.2994.3.camel@blobule> <44BBFA46.6070904@dealnews.com> <10845a340607180117g77f738ddkd972ffdf34e4c860@mail.gmail.com> Subject: Re: [PHP-DEV] Supporting version specific INI files as well as SAPI specific INI files. From: rquadling@googlemail.com ("Richard Quadling") ------=_Part_23539_24102289.1153211974849 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline The supplied patch enhances PHP's .INI from ... php-%sapi-name%.ini to ... php%php-version%-%sapi-module-name%.ini php%php-major-version%.%php-minor-version%.%php-release-version%-%sapi-module-name%.ini php%php-major-version%.%php-minor-version%-%sapi-module-name%.ini php%php-major-version%-%sapi-module-name%.ini with the original as a fallback. e.g. from php-isapi.ini to php5.2.0-dev-isapi.ini php5.1.4-isapi.ini php5.0-isapi.ini php5-isapi.ini php-isapi.ini (Just examples - all combinations are valid). With the INI files, the most specific one is looked for first and each check gets less specific until a file is found. The supplied patches also do the same work with the Windows Registry. Currently the registry key examined is ... SOFTWARE\\PHP This is extended to ... SOFTWARE\\PHP\\V5\\Per Directory Values SOFTWARE\\PHP\\V5.1\\Per Directory Values SOFTWARE\\PHP\\V5.1.4\\Per Directory Values SOFTWARE\\PHP\\V5.2.0-dev\\Per Directory Values The more specific settings will override the less specific settings. And the supplied patches allow for the location of the ini file on a per PHP version basis... SOFTWARE\\PHP\\V5\\IniFilePath SOFTWARE\\PHP\\V5.1\\IniFilePath SOFTWARE\\PHP\\V5.1.4\\IniFilePath SOFTWARE\\PHP\\V5.2.0-dev\\IniFilePath The more specific paths will be examined before the less specific paths. NOTE: I am NOT able to verify this code as I am not yet able to compile PHP. I'm still learning this, so please accept my apologies for any syntax errors, bugs. I'm more than willing to fix them! And if anyone has used MS VC++ Express Edition to build PHP, I'd be REALLY grateful to have any notes/comments about the process. Thanks, Richard Quadling. -- ----- Richard Quadling Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 ------=_Part_23539_24102289.1153211974849 Content-Type: text/plain; name=diff.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_eps0n05v Content-Disposition: attachment; filename="diff.txt" SW5kZXg6IG1haW4vcGhwX2luaS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3Bo cC1zcmMvbWFpbi9waHBfaW5pLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTQzCmRpZmYgLXUg LXIxLjE0MyBwaHBfaW5pLmMKLS0tIG1haW4vcGhwX2luaS5jCTQgSnVsIDIwMDYgMDY6Mzg6MzIg LTAwMDAJMS4xNDMKKysrIG1haW4vcGhwX2luaS5jCTE4IEp1bCAyMDA2IDA4OjM2OjM0IC0wMDAw CkBAIC0yOTMsNiArMjkzLDcgQEAKIAkJc3RhdGljIGNvbnN0IGNoYXIgcGF0aHNfc2VwYXJhdG9y W10gPSB7IFpFTkRfUEFUSFNfU0VQQVJBVE9SLCAwIH07CiAjaWZkZWYgUEhQX1dJTjMyCiAJCWNo YXIgKnJlZ19sb2NhdGlvbjsKKwkJaW50IHZlcnNpb25fc3BlY2lmaWM7CiAjZW5kaWYKIAogCQll bnZfbG9jYXRpb24gPSBnZXRlbnYoIlBIUFJDIik7CkBAIC0zMTgsMTQgKzMxOSwxNyBAQAogCiAj aWZkZWYgUEhQX1dJTjMyCiAJCS8qIEFkZCByZWdpc3RyeSBsb2NhdGlvbiAqLwotCQlyZWdfbG9j YXRpb24gPSBHZXRJbmlQYXRoRnJvbVJlZ2lzdHJ5KCk7Ci0JCWlmIChyZWdfbG9jYXRpb24gIT0g TlVMTCkgewotCQkJaWYgKCpwaHBfaW5pX3NlYXJjaF9wYXRoKSB7Ci0JCQkJc3RyY2F0KHBocF9p bmlfc2VhcmNoX3BhdGgsIHBhdGhzX3NlcGFyYXRvcik7CisJCS8qIFJBUSA6IEFkZCB2ZXJzaW9u IHNwZWNpZmljIHJlZ2lzdHJ5IGxvY2F0aW9uICovCisJCWZvciAodmVyc2lvbl9zcGVjaWZpYyA9 IE1BWF9WRVJTSU9OX1NQRUNJRklDIDsgdmVyc2lvbl9zcGVjaWZpYyA+PSBOT1RfVkVSU0lPTl9T UEVDSUZJQyA7IC0tdmVyc2lvbl9zcGVjaWZpYykKKwkJCXsKKwkJCXJlZ19sb2NhdGlvbiA9IEdl dEluaVBhdGhGcm9tUmVnaXN0cnkodmVyc2lvbl9zcGVjaWZpYyk7CisJCQlpZiAocmVnX2xvY2F0 aW9uICE9IE5VTEwpIHsKKwkJCQlpZiAoKnBocF9pbmlfc2VhcmNoX3BhdGgpIHsKKwkJCQkJc3Ry Y2F0KHBocF9pbmlfc2VhcmNoX3BhdGgsIHBhdGhzX3NlcGFyYXRvcik7CisJCQkJfQorCQkJCXN0 cmNhdChwaHBfaW5pX3NlYXJjaF9wYXRoLCByZWdfbG9jYXRpb24pOworCQkJCWVmcmVlKHJlZ19s b2NhdGlvbik7CiAJCQl9Ci0JCQlzdHJjYXQocGhwX2luaV9zZWFyY2hfcGF0aCwgcmVnX2xvY2F0 aW9uKTsKLQkJCWVmcmVlKHJlZ19sb2NhdGlvbik7Ci0JCX0KICNlbmRpZgogCiAJCS8qIEFkZCBj d2QgKG9ubHkgd2l0aCBDTEkpICovCkBAIC00MjgsNiArNDMyLDUwIEBACiAJCQkJfQogCQkJfQog CQl9CisJCS8qIFJBUSA6IFNlYXJjaCBwaHAlcGhwLXZlcnNpb24lLSVzYXBpLW1vZHVsZS1uYW1l JS5pbmkgZmlsZSBpbiBzZWFyY2ggcGF0aCAqLworCQlpZiAoIWZoLmhhbmRsZS5mcCkgeworCQkJ Y29uc3QgY2hhciAqZm10ID0gInBocCVzLSVzLmluaSI7CisJCQljaGFyICppbmlfZm5hbWUgPSBl bWFsbG9jKHN0cmxlbihmbXQpICsgc3RybGVuKHNhcGlfbW9kdWxlLm5hbWUpICsgc3RybGVuKFBI UF9WRVJTSU9OKSk7CisJCQlzcHJpbnRmKGluaV9mbmFtZSwgZm10LCBQSFBfVkVSU0lPTiwgc2Fw aV9tb2R1bGUubmFtZSk7CisJCQlmaC5oYW5kbGUuZnAgPSBwaHBfZm9wZW5fd2l0aF9wYXRoKGlu aV9mbmFtZSwgInIiLCBwaHBfaW5pX3NlYXJjaF9wYXRoLCAmcGhwX2luaV9vcGVuZWRfcGF0aCBU U1JNTFNfQ0MpOworCQkJZWZyZWUoaW5pX2ZuYW1lKTsKKwkJCWlmIChmaC5oYW5kbGUuZnApIHsK KwkJCQlmaC5maWxlbmFtZSA9IHBocF9pbmlfb3BlbmVkX3BhdGg7CisJCQl9CisJCX0KKwkJLyog UkFRIDogU2VhcmNoIHBocCVwaHAtbWFqb3ItdmVyc2lvbiUuJXBocC1taW5vci12ZXJzaW9uJS4l cGhwLXJlbGVhc2UtdmVyc2lvbiUtJXNhcGktbW9kdWxlLW5hbWUlLmluaSBmaWxlIGluIHNlYXJj aCBwYXRoICovCisJCWlmICghZmguaGFuZGxlLmZwKSB7CisJCQljb25zdCBjaGFyICpmbXQgPSAi cGhwJWQuJWQuJWQtJXMuaW5pIjsKKwkJCWNoYXIgKmluaV9mbmFtZSA9IGVtYWxsb2Moc3RybGVu KGZtdCkgKyBzdHJsZW4oc2FwaV9tb2R1bGUubmFtZSkgKyA2KTsKKwkJCXNwcmludGYoaW5pX2Zu YW1lLCBmbXQsIFBIUF9NQUpPUl9WRVJTSU9OLCBQSFBfTUlOT1JfVkVSU0lPTiwgUEhQX1JFTEVB U0VfVkVSU0lPTiwgc2FwaV9tb2R1bGUubmFtZSk7CisJCQlmaC5oYW5kbGUuZnAgPSBwaHBfZm9w ZW5fd2l0aF9wYXRoKGluaV9mbmFtZSwgInIiLCBwaHBfaW5pX3NlYXJjaF9wYXRoLCAmcGhwX2lu aV9vcGVuZWRfcGF0aCBUU1JNTFNfQ0MpOworCQkJZWZyZWUoaW5pX2ZuYW1lKTsKKwkJCWlmIChm aC5oYW5kbGUuZnApIHsKKwkJCQlmaC5maWxlbmFtZSA9IHBocF9pbmlfb3BlbmVkX3BhdGg7CisJ CQl9CisJCX0KKwkJLyogUkFRIDogU2VhcmNoIHBocCVwaHAtbWFqb3ItdmVyc2lvbiUuJXBocC1t aW5vci12ZXJzaW9uJS0lc2FwaS1tb2R1bGUtbmFtZSUuaW5pIGZpbGUgaW4gc2VhcmNoIHBhdGgg Ki8KKwkJaWYgKCFmaC5oYW5kbGUuZnApIHsKKwkJCWNvbnN0IGNoYXIgKmZtdCA9ICJwaHAlZC4l ZC0lcy5pbmkiOworCQkJY2hhciAqaW5pX2ZuYW1lID0gZW1hbGxvYyhzdHJsZW4oZm10KSArIHN0 cmxlbihzYXBpX21vZHVsZS5uYW1lKSArIDQpOworCQkJc3ByaW50ZihpbmlfZm5hbWUsIGZtdCwg UEhQX01BSk9SX1ZFUlNJT04sIFBIUF9NSU5PUl9WRVJTSU9OLCBzYXBpX21vZHVsZS5uYW1lKTsK KwkJCWZoLmhhbmRsZS5mcCA9IHBocF9mb3Blbl93aXRoX3BhdGgoaW5pX2ZuYW1lLCAiciIsIHBo cF9pbmlfc2VhcmNoX3BhdGgsICZwaHBfaW5pX29wZW5lZF9wYXRoIFRTUk1MU19DQyk7CisJCQll ZnJlZShpbmlfZm5hbWUpOworCQkJaWYgKGZoLmhhbmRsZS5mcCkgeworCQkJCWZoLmZpbGVuYW1l ID0gcGhwX2luaV9vcGVuZWRfcGF0aDsKKwkJCX0KKwkJfQorCQkvKiBSQVEgOiBTZWFyY2ggcGhw JXBocC1tYWpvci12ZXJzaW9uJS0lc2FwaS1tb2R1bGUtbmFtZSUuaW5pIGZpbGUgaW4gc2VhcmNo IHBhdGggKi8KKwkJaWYgKCFmaC5oYW5kbGUuZnApIHsKKwkJCWNvbnN0IGNoYXIgKmZtdCA9ICJw aHAlZC0lcy5pbmkiOworCQkJY2hhciAqaW5pX2ZuYW1lID0gZW1hbGxvYyhzdHJsZW4oZm10KSAr IHN0cmxlbihzYXBpX21vZHVsZS5uYW1lKSArIDIpOworCQkJc3ByaW50ZihpbmlfZm5hbWUsIGZt dCwgUEhQX01BSk9SX1ZFUlNJT04sIHNhcGlfbW9kdWxlLm5hbWUpOworCQkJZmguaGFuZGxlLmZw ID0gcGhwX2ZvcGVuX3dpdGhfcGF0aChpbmlfZm5hbWUsICJyIiwgcGhwX2luaV9zZWFyY2hfcGF0 aCwgJnBocF9pbmlfb3BlbmVkX3BhdGggVFNSTUxTX0NDKTsKKwkJCWVmcmVlKGluaV9mbmFtZSk7 CisJCQlpZiAoZmguaGFuZGxlLmZwKSB7CisJCQkJZmguZmlsZW5hbWUgPSBwaHBfaW5pX29wZW5l ZF9wYXRoOworCQkJfQorCQl9CiAJCS8qIFNlYXJjaCBwaHAtJXNhcGktbW9kdWxlLW5hbWUlLmlu aSBmaWxlIGluIHNlYXJjaCBwYXRoICovCiAJCWlmICghZmguaGFuZGxlLmZwKSB7CiAJCQljb25z dCBjaGFyICpmbXQgPSAicGhwLSVzLmluaSI7CkluZGV4OiB3aW4zMi9waHBfcmVnaXN0cnkuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9waHAtc3JjL3dpbjMyL3BocF9yZWdpc3Ry eS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtdSAtcjEuNCBwaHBfcmVnaXN0cnku aAotLS0gd2luMzIvcGhwX3JlZ2lzdHJ5LmgJMTkgT2N0IDIwMDMgMTA6MjI6MjEgLTAwMDAJMS40 CisrKyB3aW4zMi9waHBfcmVnaXN0cnkuaAkxOCBKdWwgMjAwNiAwODozNjozNCAtMDAwMApAQCAt MSw4ICsxLDE3IEBACiAjaWZuZGVmIFBIUF9SRUdJU1RSWV9ICiAjZGVmaW5lIFBIUF9SRUdJU1RS WV9ICiAKKy8qIFJBUSA6IENvbnN0YW50cyB0byBhc3Npc3QgaW4gdmVyc2lvbiBzcGVjaWZpY25l c3MuICovCisjZGVmaW5lIE5PVF9WRVJTSU9OX1NQRUNJRklDIDAKKyNkZWZpbmUgTUFKT1JfVkVS U0lPTl9TUEVDSUZJQyAxCisjZGVmaW5lIE1JTk9SX1ZFUlNJT05fU1BFQ0lGSUMgMgorI2RlZmlu ZSBSRUxFQVNFX1ZFUlNJT05fU1BFQ0lGSUMgMworI2RlZmluZSBFWFRSQV9WRVJTSU9OX1NQRUNJ RklDIDQKKy8qIE1heGltdW0gdmVyc2lvbiBzcGVjaWZpY25lc3MgZm9yIGZvcigpIGxvb3BzLiAq LworI2RlZmluZSBNQVhfVkVSU0lPTl9TUEVDSUZJQyA0CiAKIHZvaWQgVXBkYXRlSW5pRnJvbVJl Z2lzdHJ5KGNoYXIgKnBhdGggVFNSTUxTX0RDKTsKLWNoYXIgKkdldEluaVBhdGhGcm9tUmVnaXN0 cnkoKTsKKy8qIFJBUSA6IEFsbG93IGZvciB2ZXJzaW9uIHNwZWNpZmljbmVzcyAqLworY2hhciAq R2V0SW5pUGF0aEZyb21SZWdpc3RyeShpbnQgdmVyc2lvbl9zcGVjaWZpYyk7CiAKICNlbmRpZiAv KiBQSFBfUkVHSVNUUllfSCAqLwpJbmRleDogd2luMzIvcmVnaXN0cnkuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvcmVwb3NpdG9yeS9waHAtc3JjL3dpbjMyL3JlZ2lzdHJ5LmMsdgpyZXRyaWV2aW5n IHJldmlzaW9uIDEuMTYKZGlmZiAtdSAtcjEuMTYgcmVnaXN0cnkuYwotLS0gd2luMzIvcmVnaXN0 cnkuYwkxNCBNYXIgMjAwNSAxMjo0MjowNSAtMDAwMAkxLjE2CisrKyB3aW4zMi9yZWdpc3RyeS5j CTE4IEp1bCAyMDA2IDA4OjM2OjM0IC0wMDAwCkBAIC0zLDE1ICszLDY2IEBACiAKICNkZWZpbmUg UEhQX1JFR0lTVFJZX0tFWSAiU09GVFdBUkVcXFBIUCIKIAorI2luY2x1ZGUgInBocF9yZWdpc3Ry eS5oIgorCiB2b2lkIFVwZGF0ZUluaUZyb21SZWdpc3RyeShjaGFyICpwYXRoIFRTUk1MU19EQykK IHsKIAljaGFyICpwLCAqb3JpZ19wYXRoOwogCUhLRVkgTWFpbktleTsKIAljaGFyICpzdHJ0b2tf YnVmID0gTlVMTDsKIAotCWlmIChSZWdPcGVuS2V5RXgoSEtFWV9MT0NBTF9NQUNISU5FLCBQSFBf UkVHSVNUUllfS0VZICJcXFBlciBEaXJlY3RvcnkgVmFsdWVzIiwgMCwgS0VZX1JFQUQsICZNYWlu S2V5KSE9RVJST1JfU1VDQ0VTUykgewotCQlyZXR1cm47Ci0JfQorCS8qIFJBUSA6IFZlcnNpb24g c3BlY2lmaWNuZXNzICovCisJaW50IHZlcnNpb25fc3BlY2lmaWM7CisJY2hhciAqIHJlZ19rZXk7 CisKKwkvKiBSQVEgOiBHZXQgZGVmYXVsdCBhbmQgdGhlbiB2ZXJzaW9uIHNwZWNpZmljIGVudHJp ZXMuICovCisJLyoqCisJCXZlcnNpb25fc3BlY2lmaWMgaGFzIHRoZSBmb2xsb3dpbmcgbWVhbmlu Z3MKKwkJMCA9IE5vIGFkZGl0aW9uYWwgc3Via2V5cyAtIFNPRlRXQVJFXFxQSFBcXFBlciBEaXJl Y3RvcnkgVmFsdWVzCisJCTEgPSBQSFBfTUFKT1JfVkVSU0lPTiBhZGRlZCAtIFNPRlRXQVJFXFxQ SFBcXFY5OVxcUGVyIERpcmVjdG9yeSBWYWx1ZXMKKwkJMiA9IFBIUF9NSU5PUl9WRVJTSU9OIGFk ZGVkIC0gU09GVFdBUkVcXFBIUFxcVjk5Ljk5XFxQZXIgRGlyZWN0b3J5IFZhbHVlcworCQkzID0g UEhQX1JFTEVBU0VfVkVSU0lPTiBhZGRlZCAtIFNPRlRXQVJFXFxQSFBWOTkuOTkuOTlcXFBlciBE aXJlY3RvcnkgVmFsdWVzCisJCTQgPSBQSFBfRVhUUkFfVkVSU0lPTiBhZGRlZCAtIFNPRlRXQVJF XFxQSFBcXFY5OS45OS45OS1kZXZcXFBlciBEaXJlY3RvcnkgVmFsdWVzIC0gQWN0dWFsbHkgdXNl cyB0aGUgZnVsbCBQSFBfVkVSU0lPTi4KKwkJKiovCisJZm9yICh2ZXJzaW9uX3NwZWNpZmljID0g Tk9UX1ZFUlNJT05fU1BFQ0lGSUMgOyB2ZXJzaW9uX3NwZWNpZmljIDw9IE1BWF9WRVJTSU9OX1NQ RUNJRklDIDsgKyt2ZXJzaW9uX3NwZWNpZmljKQorCQl7CisJCS8qIFJBUSA6IEJ1aWxkIGtleSB3 aGljaCBtYXkgaW5jbHVkZSB2ZXJzaW9uIHNwZWNpZmljbmVzcyAqLworCQlzd2l0Y2godmVyc2lv bl9zcGVjaWZpYykKKwkJCXsKKwkJCWNhc2UgTUFKT1JfVkVSU0lPTl9TUEVDSUZJQyA6CisJCQkJ cmVnX2tleSA9IChjaGFyICopIGVtYWxsb2Moc3RybGVuKFBIUF9SRUdJU1RSWV9LRVkpICsgc3Ry bGVuKCJcXFY5OVxcUGVyIERpcmVjdG9yeSBWYWx1ZXMiKSk7CisJCQkJc3ByaW50ZihyZWdfa2V5 LCAiJXNcXFYlZFxcUGVyIERpcmVjdG9yeSBWYWx1ZXMiLCAKKwkJCQkJUEhQX1JFR0lTVFJZX0tF WSwgCisJCQkJCVBIUF9NQUpPUl9WRVJTSU9OKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgTUlOT1Jf VkVSU0lPTl9TUEVDSUZJQyA6CisJCQkJcmVnX2tleSA9IChjaGFyICopIGVtYWxsb2Moc3RybGVu KFBIUF9SRUdJU1RSWV9LRVkpICsgc3RybGVuKCJcXFY5OS45OVxcUGVyIERpcmVjdG9yeSBWYWx1 ZXMiKSk7CisJCQkJc3ByaW50ZihyZWdfa2V5LCAiJXNcXFYlZC4lZFxcUGVyIERpcmVjdG9yeSBW YWx1ZXMiLCAKKwkJCQkJUEhQX1JFR0lTVFJZX0tFWSwgCisJCQkJCVBIUF9NQUpPUl9WRVJTSU9O LCBQSFBfTUlOT1JfVkVSU0lPTik7CisJCQkJYnJlYWs7CisJCQljYXNlIFJFTEVBU0VfVkVSU0lP Tl9TUEVDSUZJQyA6CisJCQkJcmVnX2tleSA9IChjaGFyICopIGVtYWxsb2Moc3RybGVuKFBIUF9S RUdJU1RSWV9LRVkpICsgc3RybGVuKCJcXFY5OS45OS45OVxcUGVyIERpcmVjdG9yeSBWYWx1ZXMi KSk7CisJCQkJc3ByaW50ZihyZWdfa2V5LCAiJXNcXFYlZC4lZC4lZFxcUGVyIERpcmVjdG9yeSBW YWx1ZXMiLCAKKwkJCQkJUEhQX1JFR0lTVFJZX0tFWSwgCisJCQkJCVBIUF9NQUpPUl9WRVJTSU9O LCBQSFBfTUlOT1JfVkVSU0lPTiwgUEhQX1JFTEVBU0VfVkVSU0lPTik7CisJCQkJYnJlYWs7CisJ CQljYXNlIEVYVFJBX1ZFUlNJT05fU1BFQ0lGSUMgOgorCQkJCXJlZ19rZXkgPSAoY2hhciAqKSBl bWFsbG9jKHN0cmxlbihQSFBfUkVHSVNUUllfS0VZKSArIHN0cmxlbigiXFxWXFxQZXIgRGlyZWN0 b3J5IFZhbHVlcyIpICsgc3RybGVuKFBIUF9WRVJTSU9OKSk7CisJCQkJc3ByaW50ZihyZWdfa2V5 LCAiJXNcXFYlc1xcUGVyIERpcmVjdG9yeSBWYWx1ZXMiLCAKKwkJCQkJUEhQX1JFR0lTVFJZX0tF WSwgCisJCQkJCVBIUF9WRVJTSU9OKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQgOgorCQkJCXJl Z19rZXkgPSAoY2hhciAqKSBlbWFsbG9jKHN0cmxlbihQSFBfUkVHSVNUUllfS0VZKSArIHN0cmxl bigiXFxQZXIgRGlyZWN0b3J5IFZhbHVlcyIpKTsKKwkJCQlzcHJpbnRmKHJlZ19rZXksICIlc1xc UGVyIERpcmVjdG9yeSBWYWx1ZXMiLCBQSFBfUkVHSVNUUllfS0VZKTsKKwkJCQlicmVhazsKKwkJ CX0KKwkJLyogUkFRIEVORCA6IENvbnRpbnVlIHdpdGggYXBwcm9wcmlhdGUga2V5LiAqLworCisJ CWlmIChSZWdPcGVuS2V5RXgoSEtFWV9MT0NBTF9NQUNISU5FLCByZWdfa2V5LCAwLCBLRVlfUkVB RCwgJk1haW5LZXkpIT1FUlJPUl9TVUNDRVNTKSB7CisJCQlyZXR1cm47CisJCX0KIAogCW9yaWdf cGF0aCA9IHBhdGggPSBlc3RyZHVwKHBhdGgpOwogCkBAIC01NSw3ICsxMDYsNyBAQAogCQlIS0VZ IGhLZXk7CiAJCURXT1JEIGxUeXBlOwogCQlEV09SRCB2YWx1ZXMgPSAwLCBtYXhfbmFtZSA9IDAs IG1heF92YWx1ZSA9IDAsIGkgPSAwOwotCQkKKwogCQlpZiAocD5wYXRoKSB7CiAJCQkqKHAtMSkg PSAnXFwnOyAvKiByZXN0b3JlIHRoZSBzbGFzaCAqLwogCQl9CkBAIC05MSwxNiArMTQyLDUzIEBA CiAJfQogCVJlZ0Nsb3NlS2V5KE1haW5LZXkpOwogCWVmcmVlKG9yaWdfcGF0aCk7CisJfSAvKiBS QVEgOiBFbmQgb2YgdmVyc2lvbiBzcGVjaWZpY25lc3MgbG9vcCAqLwogfQogCiAjZGVmaW5lIFBI UFJDX1JFR0lTVFJZX05BTUUgIkluaUZpbGVQYXRoIgogCi1jaGFyICpHZXRJbmlQYXRoRnJvbVJl Z2lzdHJ5KCkKK2NoYXIgKkdldEluaVBhdGhGcm9tUmVnaXN0cnkoaW50IHZlcnNpb25fc3BlY2lm aWMpCiB7CiAJY2hhciAqcmVnX2xvY2F0aW9uID0gTlVMTDsKIAlIS0VZIGhLZXk7Ci0JCi0JaWYo UmVnT3BlbktleUV4KEhLRVlfTE9DQUxfTUFDSElORSwgUEhQX1JFR0lTVFJZX0tFWSwgMCwgS0VZ X1JFQUQsICZoS2V5KSA9PSBFUlJPUl9TVUNDRVNTKSB7CisJY2hhciAqcmVnX2tleSA9IE5VTEw7 CisKKwkvLyBSQVEgOiBEZXRlcm1pbmUgd2hpY2gga2V5IHRvIHVzZSAtIG1heSBpbmNsdWRlIHZl cnNpb24gc3BlY2lmaWNpbmVzcy4KKwlzd2l0Y2godmVyc2lvbl9zcGVjaWZpYykKKwkJeworCQlj YXNlIE1BSk9SX1ZFUlNJT05fU1BFQ0lGSUMgOgorCQkJcmVnX2tleSA9IChjaGFyICopIGVtYWxs b2Moc3RybGVuKFBIUF9SRUdJU1RSWV9LRVkpICsgc3RybGVuKCJcXFY5OSIpKTsKKwkJCXNwcmlu dGYocmVnX2tleSwgIiVzXFxWJWQiLCAKKwkJCQlQSFBfUkVHSVNUUllfS0VZLCAKKwkJCQlQSFBf TUFKT1JfVkVSU0lPTik7CisJCQlicmVhazsKKwkJY2FzZSBNSU5PUl9WRVJTSU9OX1NQRUNJRklD IDoKKwkJCXJlZ19rZXkgPSAoY2hhciAqKSBlbWFsbG9jKHN0cmxlbihQSFBfUkVHSVNUUllfS0VZ KSArIHN0cmxlbigiXFxWOTkuOTkiKSk7CisJCQlzcHJpbnRmKHJlZ19rZXksICIlc1xcViVkLiVk IiwgCisJCQkJUEhQX1JFR0lTVFJZX0tFWSwgCisJCQkJUEhQX01BSk9SX1ZFUlNJT04sIFBIUF9N SU5PUl9WRVJTSU9OKTsKKwkJCWJyZWFrOworCQljYXNlIFJFTEVBU0VfVkVSU0lPTl9TUEVDSUZJ QyA6CisJCQlyZWdfa2V5ID0gKGNoYXIgKikgZW1hbGxvYyhzdHJsZW4oUEhQX1JFR0lTVFJZX0tF WSkgKyBzdHJsZW4oIlxcVjk5Ljk5Ljk5IikpOworCQkJc3ByaW50ZihyZWdfa2V5LCAiJXNcXFYl ZC4lZC4lZCIsIAorCQkJCVBIUF9SRUdJU1RSWV9LRVksIAorCQkJCVBIUF9NQUpPUl9WRVJTSU9O LCBQSFBfTUlOT1JfVkVSU0lPTiwgUEhQX1JFTEVBU0VfVkVSU0lPTik7CisJCQlicmVhazsKKwkJ Y2FzZSBFWFRSQV9WRVJTSU9OX1NQRUNJRklDIDoKKwkJCXJlZ19rZXkgPSAoY2hhciAqKSBlbWFs bG9jKHN0cmxlbihQSFBfUkVHSVNUUllfS0VZKSArIHN0cmxlbigiXFxWIikgKyBzdHJsZW4oUEhQ X1ZFUlNJT04pKTsKKwkJCXNwcmludGYocmVnX2tleSwgIiVzXFxWJXMiLCAKKwkJCQlQSFBfUkVH SVNUUllfS0VZLCAKKwkJCQlQSFBfVkVSU0lPTik7CisJCQlicmVhazsKKwkJZGVmYXVsdCA6CisJ CQlyZWdfa2V5ID0gKGNoYXIgKikgZW1hbGxvYyhzdHJsZW4oUEhQX1JFR0lTVFJZX0tFWSkpOwor CQkJc3ByaW50ZihyZWdfa2V5LCAiJXMiLCBQSFBfUkVHSVNUUllfS0VZKTsKKwkJCWJyZWFrOwor CQl9CisJLyogUkFRIEVORCA6IENvbnRpbnVlIHdpdGggYXBwcm9wcmlhdGUga2V5LiAqLworCisJ LyogUkFRIDogVXNlIHBvdGVudGlhbGx5IHZlcnNpb24gc3BlY2lmaWMgcmVnaXN0cnkga2V5IDog aWYoUmVnT3BlbktleUV4KEhLRVlfTE9DQUxfTUFDSElORSwgUEhQX1JFR0lTVFJZX0tFWSwgMCwg S0VZX1JFQUQsICZoS2V5KSA9PSBFUlJPUl9TVUNDRVNTKSB7Ki8KKwlpZihSZWdPcGVuS2V5RXgo SEtFWV9MT0NBTF9NQUNISU5FLCByZWdfa2V5LCAwLCBLRVlfUkVBRCwgJmhLZXkpID09IEVSUk9S X1NVQ0NFU1MpIHsKIAkJRFdPUkQgYnVmbGVuID0gTUFYUEFUSExFTjsKIAkJcmVnX2xvY2F0aW9u ID0gZW1hbGxvYyhNQVhQQVRITEVOKzEpOwogCQlpZihSZWdRdWVyeVZhbHVlRXgoaEtleSwgUEhQ UkNfUkVHSVNUUllfTkFNRSwgMCwgTlVMTCwgcmVnX2xvY2F0aW9uLCAmYnVmbGVuKSAhPSBFUlJP Ul9TVUNDRVNTKSB7Cg== ------=_Part_23539_24102289.1153211974849--