Re: SNI on STARTTLS in mailfront
"John Levine" <[email protected]> 29 Jan 2019 23:03:09 -0500
| Newsgroups | gmane.comp.sysutils.bgware |
|---|---|
| Message-ID | <[email protected]> |
--3168237118-2137887810-1548820989=:33877 Content-Type: text/plain; charset=US-ASCII; format=flowed On Wed, 30 Jan 2019, Giam Teck Choon wrote: >> If anyone else wants it, let me know. It's not a big deal. I added >> 90 lines to the existing 223 in starttls-gnutls.c, which includes >> checking for error conditions I forgot to check before. > > I want it please. Here it is, updated starttls-gnutls.c R's, John --3168237118-2137887810-1548820989=:33877 Content-Type: text/plain; charset=US-ASCII; name=starttls-gnutls.c Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: Content-Disposition: attachment; filename=starttls-gnutls.c I2luY2x1ZGUgPHN0ZGxpYi5oPg0KI2luY2x1ZGUgPHN0cmluZy5oPg0KI2lu Y2x1ZGUgPHVuaXN0ZC5oPg0KI2luY2x1ZGUgPGJnbGlicy9pb2J1Zi5oPg0K I2luY2x1ZGUgPGJnbGlicy9tc2cuaD4NCiNpbmNsdWRlIDxiZ2xpYnMvc3Ry Lmg+DQojaW5jbHVkZSA8YmdsaWJzL3dyYXAuaD4NCg0KI2luY2x1ZGUgPGVy cm5vLmg+DQojaW5jbHVkZSA8Z251dGxzL2Fic3RyYWN0Lmg+DQoNCiNpbmNs dWRlICJtYWlsZnJvbnQuaCINCiNpbmNsdWRlICJzdGFydHRscy5oIg0KDQpz dGF0aWMgZ251dGxzX3Nlc3Npb25fdCBnc2Vzc2lvbjsNCg0Kc3RhdGljIGlu dCB0bHNfYXZhaWxhYmxlID0gMDsNCg0Kc3RhdGljIGlidWYgcmVhbGluYnVm OwkJCS8qIHVuZGVybHlpbmcgaW5wdXQgc3RyZWFtICovDQpzdGF0aWMgb2J1 ZiByZWFsb3V0YnVmOwkJCS8qIHVuZGVybHlpbmcgb3V0cHV0IHN0cmVhbSAq Lw0KDQovKg0KICogVExTIHJlYWQgYW5kIHdyaXRlIGZ1bmN0aW9ucyBmb3Ig YmdsaWIsIHRvIGZha2Ugb3V0IHRoZSByZXN0IG9mDQogKiBtYWlsZnJvbnQN CiAqLw0KDQpzdGF0aWMgaW50IHRsc3JlYWQoaW50IG4sIHZvaWQgKnB0ciwg dW5zaWduZWQgbG9uZyBsZW4pDQp7DQogIHNzaXplX3QgcmV0Ow0KDQogIGZv cig7Oykgew0KICAgIHJldCA9IGdudXRsc19yZWNvcmRfcmVjdihnc2Vzc2lv biwgcHRyLCAoc2l6ZV90KWxlbik7DQogICAgaWYgKHJldCA+PSAwKSByZXR1 cm4gcmV0Ow0KICAgIGlmIChyZXQgPT0gR05VVExTX0VfQUdBSU4gfHwgcmV0 ID09IEdOVVRMU19FX0lOVEVSUlVQVEVEKSBjb250aW51ZTsNCiAgICBpZiAo cmV0ID09IEdOVVRMU19FX1BSRU1BVFVSRV9URVJNSU5BVElPTikgcmV0dXJu IDA7DQogICAgbXNnZigie1RMUyBlcnJvciB9ZCIsIHJldCk7DQogICAgcmV0 dXJuIDA7DQogIH0NCiAgKHZvaWQpbjsNCn0NCg0KLyogd3JpdGUgaW4gYXMg bWFueSBjaHVua3MgYXMgbmVlZGVkICovDQpzdGF0aWMgaW50IHRsc3dyaXRl KGludCBuLCB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgbGVuKQ0Kew0KICBz aXplX3QgcmV0Ow0KICBzaXplX3QgdHJldCA9IDA7DQoNCiAgZm9yKDs7KSB7 DQogICAgcmV0ID0gZ251dGxzX3JlY29yZF9zZW5kKGdzZXNzaW9uLCBwdHIs IChzaXplX3QpbGVuKTsNCiAgICBpZiAocmV0IDw9IDApDQogICAgICByZXR1 cm4gcmV0Ow0KICAgIHRyZXQgKz0gcmV0Ow0KICAgIGlmIChyZXQgPj0gbGVu KQ0KICAgICAgcmV0dXJuIHRyZXQ7DQogICAgbGVuIC09IHJldDsNCiAgICBw dHIgPSAoY2hhciAqKXB0ciArIHJldDsNCiAgfQ0KICAodm9pZCluOw0KfQ0K DQovKg0KICogbG93LWxldmVsIHJlYWQgYW5kIHdyaXRlIGZ1bmN0aW9ucyBm b3IgZ251dGxzDQogKiByZWFkIHJldHVybnMgYXQgbGVhc3Qgb25lIGNoYXIs IG1vcmUgaWYgdGhleSdyZSBpbiB0aGUgYnVmZmVyDQogKi8NCnN0YXRpYyBz c2l6ZV90IGxscmVhZChnbnV0bHNfdHJhbnNwb3J0X3B0cl90IHAsIHZvaWQq IGJ1Ziwgc2l6ZV90IHNpemUpDQp7DQogIGludCBuOw0KICBzaXplX3QgciA9 IDE7DQoNCiAgbiA9IGlidWZfZ2V0YygmcmVhbGluYnVmLCBidWYrKyk7DQog IGlmICghbikgcmV0dXJuIDA7DQogIHdoaWxlIChyIDwgc2l6ZSAmJiByZWFs aW5idWYuaW8uYnVmc3RhcnQgPCByZWFsaW5idWYuaW8uYnVmbGVuKSB7DQog ICAgbiA9IGlidWZfZ2V0YygmcmVhbGluYnVmLCBidWYrKyk7DQogICAgaWYg KCFuKSByZXR1cm4gMDsNCiAgICByKys7DQogIH0NCiAgcmV0dXJuIHI7DQog ICh2b2lkKXA7DQp9DQoNCnN0YXRpYyBzc2l6ZV90IGxsd3JpdGUoZ251dGxz X3RyYW5zcG9ydF9wdHJfdCBwLCB2b2lkKiBidWYsIHNpemVfdCBzaXplKQ0K ew0KICBpbnQgbjsNCg0KICBuID0gb2J1Zl93cml0ZSgmcmVhbG91dGJ1Ziwg YnVmLCBzaXplKTsNCiAgb2J1Zl9mbHVzaCgmcmVhbG91dGJ1Zik7DQogIGlm IChuKSByZXR1cm4gc2l6ZTsNCiAgcmV0dXJuIHJlYWxvdXRidWYuY291bnQ7 CS8qIGFjdHVhbCBhbW91bnQgd3JpdHRlbiAqLw0KICAodm9pZClwOw0KfQ0K DQovKg0KICogY2VydGRpcjogZGlyZWN0b3J5IGZvciBTTkkgY2VydHMNCiAq IGNlcnRmaWxlLCBrZXlmaWxlOiBkZWZhdWx0IGNlcnQgYW5kIGtleSBmaWxl cw0KICovDQpzdGF0aWMgY2hhciAqY2VydGRpciwgKmNlcnRmaWxlLCAqa2V5 ZmlsZTsNCg0KLyoNCiAqIGNhbGxlZCBkdXJpbmcgdGhlIGhhbmRzaGFrZSB0 byBzZWUgd2hhdCBjZXJ0IHRoZSBjbGllbnQgd2FudHMgaWYNCiAqIHRoZXJl IGlzIGEgY2VydCBsaWJyYXJ5DQogKi8NCnN0YXRpYyBpbnQgc3RhcnR0bHNf Y2VydF9jYWxsYmFjayhnbnV0bHNfc2Vzc2lvbl90IHNlc3Npb24sIGNvbnN0 IGdudXRsc19kYXR1bV90KiByZXFfY2FfZG4sDQoJCQkJICBpbnQgbnJlcXMs IGNvbnN0IGdudXRsc19wa19hbGdvcml0aG1fdCogcGtfYWxnb3MsDQoJCQkJ ICBpbnQgcGtfYWxnb3NfbGVuZ3RoLCBnbnV0bHNfcGNlcnRfc3QqKiBwY2Vy dCwgdW5zaWduZWQgaW50ICpwY2VydF9sZW5ndGgsDQoJCQkJICBnbnV0bHNf cHJpdmtleV90ICogcGtleSkNCnsNCiAgaW50IHJldDsNCiAgZ251dGxzX2Nl cnRpZmljYXRlX2NyZWRlbnRpYWxzX3QgeDUwOV9jcmVkOw0KICB1bnNpZ25l ZCBpbnQgc25pdHlwZTsNCiAgY2hhciBkbnNuYW1lWzI1Nl07CS8qIGNsaWVu dCdzIGRlc2lyZWQgbmFtZSAqLw0KICBzaXplX3QgZG5zbGVuID0gc2l6ZW9m KGRuc25hbWUpOw0KDQogIGdudXRsc19jZXJ0aWZpY2F0ZV9hbGxvY2F0ZV9j cmVkZW50aWFscygmeDUwOV9jcmVkKTsNCg0KICByZXQgPSBnbnV0bHNfc2Vy dmVyX25hbWVfZ2V0KHNlc3Npb24sIGRuc25hbWUsICZkbnNsZW4sICZzbml0 eXBlLCAwKTsNCiAgaWYocmV0ID09IEdOVVRMU19FX1JFUVVFU1RFRF9EQVRB X05PVF9BVkFJTEFCTEUpIHsgLyogbm8gU05JICovDQogICAgLyogbXNnMSgi Tm8gU05JIGluIHJlcXVlc3QsIHVzaW5nIGRlZmF1bHQgY2VydGlmaWNhdGUi KTsgKi8NCiAgICByZXQgPSBnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlf a2V5X2ZpbGUoeDUwOV9jcmVkLCBjZXJ0ZmlsZSwga2V5ZmlsZSwgR05VVExT X1g1MDlfRk1UX1BFTSk7DQogIH0gZWxzZSBpZiAocmV0ICE9IEdOVVRMU19F X1NVQ0NFU1MpIHsNCiAgICBtc2cyKCJUTFMgU05JIGNlcnRpZmljYXRlIGlu aXQgZmFpbGVkOiAiLCBnbnV0bHNfc3RyZXJyb3IocmV0KSk7DQogICAgcmV0 dXJuIDA7DQogIH0gZWxzZSB7DQogICAgc3RyIHNuaWNlcnRmaWxlID0gezB9 Ow0KICAgIHN0ciBzbmlrZXlmaWxlID0gezB9Ow0KICAgIHN0ciBzbmlkbnMg PSB7MH07DQoNCiAgICB3cmFwX3N0cihzdHJfY29weXMoJnNuaWRucywgZG5z bmFtZSkpOw0KICAgIHN0cl9sb3dlcigmc25pZG5zKTsJLyogbWFrZSBhbGwg bG93ZXIgY2FzZSAqLw0KDQogICAgd3JhcF9zdHIoc3RyX2NvcHlmKCZzbmlj ZXJ0ZmlsZSwgInN7L31Tey99U3suY3J0fSIsIGNlcnRkaXIsICZzbmlkbnMs ICZzbmlkbnMpKTsNCiAgICB3cmFwX3N0cihzdHJfY29weWYoJnNuaWtleWZp bGUsICJzey99U3svfVN7LmtleX0iLCBjZXJ0ZGlyLCAmc25pZG5zLCAmc25p ZG5zKSk7DQogICAgaWYoIWFjY2VzcyhzbmljZXJ0ZmlsZS5zLCBSX09LKSkg ew0KICAgICAgaWYoYWNjZXNzKHNuaWtleWZpbGUucywgUl9PSykpDQoJIHdy YXBfc3RyKHN0cl9jb3B5KCZzbmlrZXlmaWxlLCAmc25pY2VydGZpbGUpKTsJ LyogZGVmYXVsdCBpcyBzYW1lIGZpbGUgKi8NCg0KICAgICAgcmV0ID0gZ251 dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X2tleV9maWxlKHg1MDlfY3JlZCwg c25pY2VydGZpbGUucywgc25pa2V5ZmlsZS5zLCBHTlVUTFNfWDUwOV9GTVRf UEVNKTsNCiAgICAgIG1zZ2YoIntVc2luZyBTTkkgY2VydCBmaWxlIGZvciB9 UyIsICZzbmlkbnMpOw0KICAgICAgc2Vzc2lvbl9zZXRzdHIoInRsc19zbmki LCBzbmlkbnMucyk7DQogICAgfSBlbHNlIHsNCiAgICAgIG1zZ2YoIntObyBT TkkgY2VydCBmb3IgfVN7LCB1c2luZyBkZWZhdWx0fSIsICZzbmlkbnMpOw0K ICAgICAgcmV0ID0gZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X2tleV9m aWxlKHg1MDlfY3JlZCwgY2VydGZpbGUsIGtleWZpbGUsIEdOVVRMU19YNTA5 X0ZNVF9QRU0pOw0KICAgIH0NCiAgICBzdHJfZnJlZSgmc25pZG5zKTsNCiAg ICBzdHJfZnJlZSgmc25pY2VydGZpbGUpOw0KICAgIHN0cl9mcmVlKCZzbmlr ZXlmaWxlKTsNCiAgfQ0KDQogIGlmIChyZXQgIT0gR05VVExTX0VfU1VDQ0VT Uykgew0KICAgIG1zZzIoIlNOSSBUTFMgY2VydGlmaWNhdGUgaW5pdCBmYWls ZWQ6ICIsIGdudXRsc19zdHJlcnJvcihyZXQpKTsNCiAgICByZXR1cm4gMDsN CiAgfQ0KDQogIHJldCA9IGdudXRsc19jcmVkZW50aWFsc19zZXQoZ3Nlc3Np b24sIEdOVVRMU19DUkRfQ0VSVElGSUNBVEUsIHg1MDlfY3JlZCk7DQogIGlm KHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKQ0KICAgIG1zZzIoIlNOSSBUTFMg Y3JlZGVudGlhbHMgaW5pdCBmYWlsZWQ6ICIsIGdudXRsc19zdHJlcnJvcihy ZXQpKTsNCg0KICByZXR1cm4gMDsNCg0KICAodm9pZCkgcmVxX2NhX2RuOw0K ICAodm9pZCkgbnJlcXM7DQogICh2b2lkKSBwa19hbGdvczsNCiAgKHZvaWQp IHBrX2FsZ29zX2xlbmd0aDsNCiAgKHZvaWQpIHBjZXJ0Ow0KICAodm9pZCkg KnBjZXJ0X2xlbmd0aDsNCiAgKHZvaWQpIHBrZXk7DQogIHJldHVybiAwOw0K fQ0KDQpjb25zdCByZXNwb25zZSogc3RhcnR0bHNfaW5pdCh2b2lkKQ0Kew0K ICBpbnQgcmV0Ow0KICBnbnV0bHNfY2VydGlmaWNhdGVfY3JlZGVudGlhbHNf dCB4NTA5X2NyZWQ7DQogIGdudXRsc19kaF9wYXJhbXNfdCBkaF9wYXJhbXM7 DQogIGNvbnN0IGNoYXIgKm15X3ByaW9yaXR5ID0gZ2V0ZW52KCJUTFNfUFJJ T1JJVFkiKTsNCiAgY29uc3QgY2hhciogZGhmaWxlID0gZ2V0ZW52KCJUTFNf REhfUEFSQU1TIik7DQoNCiAgY2VydGZpbGUgPSBnZXRlbnYoIlRMU19DRVJU RklMRSIpOw0KICBrZXlmaWxlID0gZ2V0ZW52KCJUTFNfS0VZRklMRSIpOw0K ICBjZXJ0ZGlyID0gZ2V0ZW52KCJUTFNfQ0VSVERJUiIpOw0KDQogIGlmIChr ZXlmaWxlID09IE5VTEwpDQogICAga2V5ZmlsZSA9IGNlcnRmaWxlOw0KDQog IGlmIChjZXJ0ZmlsZSA9PSBOVUxMIHx8ICpjZXJ0ZmlsZSA9PSAwIHx8IGtl eWZpbGUgPT0gTlVMTCB8fCAqa2V5ZmlsZSA9PSAwKQ0KICAgIHJldHVybiBO VUxMOw0KDQogIGdudXRsc19nbG9iYWxfaW5pdCgpOw0KDQogIGdudXRsc19j ZXJ0aWZpY2F0ZV9hbGxvY2F0ZV9jcmVkZW50aWFscygmeDUwOV9jcmVkKTsN CiAgcmV0ID0gZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X2tleV9maWxl KHg1MDlfY3JlZCwgY2VydGZpbGUsIGtleWZpbGUsIEdOVVRMU19YNTA5X0ZN VF9QRU0pOw0KICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpIHsNCiAg ICBtc2cyKCJUTFMgY2VydGlmaWNhdGUgaW5pdCBmYWlsZWQ6ICIsIGdudXRs c19zdHJlcnJvcihyZXQpKTsNCiAgICByZXR1cm4gMDsNCiAgfQ0KDQogIHJl dCA9IGdudXRsc19pbml0KCZnc2Vzc2lvbiwgR05VVExTX1NFUlZFUik7DQog IGlmIChyZXQgIT0gR05VVExTX0VfU1VDQ0VTUykgew0KICAgIG1zZzIoIlRM UyBpbml0IGZhaWxlZDogIiwgZ251dGxzX3N0cmVycm9yKHJldCkpOw0KICAg IHJldHVybiAwOw0KICB9DQoNCiAgaWYgKCFteV9wcmlvcml0eSkNCiAgICBt eV9wcmlvcml0eSA9ICJOT1JNQUwiOw0KICByZXQgPSBnbnV0bHNfcHJpb3Jp dHlfc2V0X2RpcmVjdChnc2Vzc2lvbiwgbXlfcHJpb3JpdHksIE5VTEwpOw0K ICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpIHsNCiAgICBtc2cyKCJU TFMgcHJpb3JpdHkgZXJyb3I6ICIsIGdudXRsc19zdHJlcnJvcihyZXQpKTsN CiAgICByZXR1cm4gMDsNCiAgfQ0KDQogIGlmIChkaGZpbGUgIT0gTlVMTCkg ew0KICAgIHN0ciBkYXRhID0gezB9Ow0KICAgIGdudXRsc19kYXR1bV90IHBh cmFtczsNCiAgICBpZiAoIWlidWZfb3BlbnJlYWRjbG9zZShkaGZpbGUsICZk YXRhKSkgew0KICAgICAgbXNnMigiVExTIGVycm9yIHJlYWRpbmcgREggcGFy YW1zOiAiLCBzdHJlcnJvcihlcnJubykpOw0KICAgICAgcmV0dXJuIE5VTEw7 DQogICAgfQ0KICAgIHBhcmFtcy5kYXRhID0gKHVuc2lnbmVkIGNoYXIqKWRh dGEuczsNCiAgICBwYXJhbXMuc2l6ZSA9IGRhdGEubGVuOw0KICAgIGdudXRs c19kaF9wYXJhbXNfaW5pdCgmZGhfcGFyYW1zKTsNCiAgICBpZiAoKHJldCA9 IGdudXRsc19kaF9wYXJhbXNfaW1wb3J0X3BrY3MzKGRoX3BhcmFtcywgJnBh cmFtcywgR05VVExTX1g1MDlfRk1UX1BFTSkpIDwgMCkgew0KICAgICAgbXNn MigiVExTIGVycm9yIHBhcnNpbmcgREggcGFyYW1zOiAiLCBnbnV0bHNfc3Ry ZXJyb3IocmV0KSk7DQogICAgICByZXR1cm4gTlVMTDsNCiAgICB9DQogICAg Z251dGxzX2NlcnRpZmljYXRlX3NldF9kaF9wYXJhbXMoeDUwOV9jcmVkLCBk aF9wYXJhbXMpOw0KICAgIC8qIERvbid0IGRlaW5pdCB0aGUgZGhfcGFyYW1z LCBzaW5jZSB0aGUgYWJvdmUgb25seSBzdG9yZXMgYSBwb2ludGVyIHRvIHRo ZSBwYXJhbXMuICovDQogIH0NCg0KICBpZihjZXJ0ZGlyICYmICpjZXJ0ZGly KSB7DQogICAgZ251dGxzX2NlcnRpZmljYXRlX3NldF9yZXRyaWV2ZV9mdW5j dGlvbjIoeDUwOV9jcmVkLCAmc3RhcnR0bHNfY2VydF9jYWxsYmFjayk7DQog IH0NCg0KICByZXQgPSBnbnV0bHNfY3JlZGVudGlhbHNfc2V0KGdzZXNzaW9u LCBHTlVUTFNfQ1JEX0NFUlRJRklDQVRFLCB4NTA5X2NyZWQpOw0KICBpZiAo cmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpIHsNCiAgICBtc2cyKCJUTFMgY3Jl ZGVudGlhbHMgaW5pdCBmYWlsZWQ6ICIsIGdudXRsc19zdHJlcnJvcihyZXQp KTsNCiAgICByZXR1cm4gMDsNCiAgfQ0KDQogIGlmIChnZXRlbnYoIlRMU19D T01QQVQiKSAhPSBOVUxMKQ0KICAgIC8qIFNldCBtYXhpbXVtIGNvbXBhdGli aWxpdHkgbW9kZS4gKi8NCiAgICBnbnV0bHNfc2Vzc2lvbl9lbmFibGVfY29t cGF0aWJpbGl0eV9tb2RlKGdzZXNzaW9uKTsNCg0KICB0bHNfYXZhaWxhYmxl ID0gMTsNCg0KICBpZiAoZ2V0ZW52KCJUTFNfSU1NRURJQVRFIikpIHsNCiAg ICBpZiAoIXN0YXJ0dGxzX3N0YXJ0KCkpDQogICAgICBleGl0KDEpOwkJLyog bm90IG11Y2ggZWxzZSB0byBkbyAqLw0KICB9DQogIHJldHVybiBOVUxMOw0K fQ0KDQovKiBnZXQgbmVnb3RpYXRlZCBzZXNzaW9uIHBhcmFtZXRlcnMgYW5k IHNldCBzZXNzaW9uIHN0cmluZ3MgKi8NCnN0YXRpYyB2b2lkIHNldF90bHNw YXJhbXModm9pZCkNCnsNCiAgY29uc3QgY2hhciogcHJvdG9jb2wgPSBnbnV0 bHNfcHJvdG9jb2xfZ2V0X25hbWUoZ251dGxzX3Byb3RvY29sX2dldF92ZXJz aW9uKGdzZXNzaW9uKSk7DQogIGNvbnN0IGNoYXIqIGtleWV4ID0gZ251dGxz X2t4X2dldF9uYW1lKGdudXRsc19reF9nZXQoZ3Nlc3Npb24pKTsNCiAgY29u c3QgY2hhciogY2lwaGVyID0gZ251dGxzX2NpcGhlcl9nZXRfbmFtZShnbnV0 bHNfY2lwaGVyX2dldChnc2Vzc2lvbikpOw0KICBjb25zdCBjaGFyKiBtYWMg PSBnbnV0bHNfbWFjX2dldF9uYW1lKGdudXRsc19tYWNfZ2V0KGdzZXNzaW9u KSk7DQogIHN0ciB0bHNwYXJhbXMgPSB7MH07DQogIHdyYXBfc3RyKHN0cl9j b3B5ZigmdGxzcGFyYW1zLCAic3sgfXN7IH1zeyB9cyIsIHByb3RvY29sLCBr ZXlleCwgY2lwaGVyLCBtYWMpKTsNCiAgbXNnMigiVExTIGhhbmRzaGFrZTog IiwgdGxzcGFyYW1zLnMpOw0KICBzZXNzaW9uX3NldHN0cigidGxzX3BhcmFt cyIsIHRsc3BhcmFtcy5zKTsNCiAgc3RyX2ZyZWUoJnRsc3BhcmFtcyk7DQog IHNlc3Npb25fc2V0c3RyKCJ0bHNfcHJvdG9jb2wiLCBwcm90b2NvbCk7DQog IHNlc3Npb25fc2V0c3RyKCJ0bHNfa2V5ZXgiLCBrZXlleCk7DQogIHNlc3Np b25fc2V0c3RyKCJ0bHNfY2lwaGVyIiwgY2lwaGVyKTsNCiAgc2Vzc2lvbl9z ZXRzdHIoInRsc19tYWMiLCBtYWMpOw0KfQ0KDQppbnQgc3RhcnR0bHNfc3Rh cnQodm9pZCkNCnsNCiAgc3RhdGljIGludCBkaWRzdGFydHRscyA9IDA7DQog IGludCByZXQ7DQoNCiAgLyogU1RBUlRUTFMgbXVzdCBiZSB0aGUgbGFzdCBj b21tYW5kIGluIGEgcGlwZWxpbmUsIGJ1dCB0b28gYmFkLg0KICAgKiBJIGRv bid0IHRoaW5rIENWRS0yMDExLTA0MTEgYXBwbGllcyBzaW5jZSB0aGUgVExT IGhhbmRzaGFrZQ0KICAgKiBjb25zdW1lcyB3aHRhdGV2ZXIgZm9sbG93cyB0 aGUgU1RBUlRUTFMgY29tbWFuZCAgKi8NCg0KICBpZiAoZGlkc3RhcnR0bHMp IHsNCiAgICBtc2cyKCJhbHJlYWR5IGNhbGxlZCIsICJnbnV0bHMgZ2xvYmFs IGluaXQiKTsNCiAgICByZXR1cm4gMDsNCiAgfQ0KICBkaWRzdGFydHRscyA9 IDE7DQoNCiAgLyogc2F2ZSBpbnB1dCBhbmQgb3V0cHV0IHRvIGZlZWQgaW50 byBUTFMgZW5naW5lIHZpYSBsbHJlYWQgYW5kIGxsd3JpdGUgKi8NCiAgcmVh bGluYnVmID0gaW5idWY7DQogIHJlYWxvdXRidWYgPSBvdXRidWY7DQoNCiAg LyogUmUtaW5pdGlhbGl6ZSBpbnB1dCBhbmQgb3V0cHV0IHRvIHVzZSBvdXIg bG9jYWwgVExTLWl6ZWQgSS9PICovDQogIGlidWZfaW5pdCgmaW5idWYsIC0x LCAoaWJ1Zl9mbikqdGxzcmVhZCwgMCwgMCk7DQogIG9idWZfaW5pdCgmb3V0 YnVmLC0xLCAob2J1Zl9mbikqdGxzd3JpdGUsIDAsIDApOw0KDQogIGdudXRs c190cmFuc3BvcnRfc2V0X3B1bGxfZnVuY3Rpb24oZ3Nlc3Npb24sIChnbnV0 bHNfcHVsbF9mdW5jKWxscmVhZCk7DQogIGdudXRsc190cmFuc3BvcnRfc2V0 X3B1c2hfZnVuY3Rpb24oZ3Nlc3Npb24sIChnbnV0bHNfcHVzaF9mdW5jKWxs d3JpdGUpOw0KDQogIG1zZzEoIlN0YXJ0aW5nIFRMUyBoYW5kc2hha2UiKTsN Cg0KICByZXQgPSBnbnV0bHNfaGFuZHNoYWtlKGdzZXNzaW9uKTsNCiAgaWYg KHJldCA8IDApIHsNCiAgICBtc2cyKCJUTFMgaGFuZHNoYWtlIGZhaWxlZDog IiwgZ251dGxzX3N0cmVycm9yKHJldCkpOw0KICAgIGdudXRsc19kZWluaXQo Z3Nlc3Npb24pOw0KICAgIHJldHVybiAwOw0KICB9DQogIHNldF90bHNwYXJh bXMoKTsNCiAgcmV0dXJuIDE7DQp9DQoNCmludCBzdGFydHRsc19hdmFpbGFi bGUodm9pZCkNCnsNCiAgcmV0dXJuIHRsc19hdmFpbGFibGU7DQp9DQoNCnZv aWQgc3RhcnR0bHNfZGlzYWJsZSh2b2lkKQ0Kew0KICB0bHNfYXZhaWxhYmxl ID0gMDsNCn0NCg== --3168237118-2137887810-1548820989=:33877 Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] --3168237118-2137887810-1548820989=:33877--