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--