From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28670 invoked by alias); 20 Jun 2018 13:18:30 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 28529 invoked by uid 89); 20 Jun 2018 13:18:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 spammy=arrived, H*c:HHHH X-HELO: conssluserg-04.nifty.com Received: from conssluserg-04.nifty.com (HELO conssluserg-04.nifty.com) (210.131.2.83) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 20 Jun 2018 13:18:26 +0000 Received: from Express5800-S70 (ntsitm315127.sitm.nt.ngn.ppp.infoweb.ne.jp [125.3.30.127]) (authenticated) by conssluserg-04.nifty.com with ESMTP id w5KDI2Go006442 for ; Wed, 20 Jun 2018 22:18:02 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-04.nifty.com w5KDI2Go006442 X-Nifty-SrcIP: [125.3.30.127] Date: Thu, 21 Jun 2018 01:35:00 -0000 From: Takashi Yano To: cygwin@cygwin.com Subject: Re: Problems of AF_INET domain socket regarding out-of-band data. Message-Id: <20180620221812.2e10f95ef5501758493560a2@nifty.ne.jp> In-Reply-To: <20180613224858.7822b08abb75d76b72920095@nifty.ne.jp> References: <20180613224858.7822b08abb75d76b72920095@nifty.ne.jp> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__20_Jun_2018_22_18_12_+0900_HL0SDKd8lT_6kdVv" X-IsSubscribed: yes X-SW-Source: 2018-06/txt/msg00231.txt.bz2 --Multipart=_Wed__20_Jun_2018_22_18_12_+0900_HL0SDKd8lT_6kdVv Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-length: 1833 Hi Corinna, On Wed, 13 Jun 2018 22:48:58 +0900 Takashi Yano wrote: > 1. recv() with MSG_OOB flag eats normal data if no OOB data > is sent yet. > > 2. Calling recv() with MSG_OOB flag is blocked if no OOB data > is sent yet. > > 3. Calling recv() without MSG_OOB flag after receiving OOB data > is blocked even if received data exist in buffer. I looked into these problems and found these are due to bug of cygwin1.dll. Problem 1: If recv() is called with MSG_OOB, in fhandler_socket_inet:: recv_internal(), wsamsg->dwFlags with MSG_OOB flag set is passed to WSARecv() and this fails because no OOB data exists. At this time, wsamsg-> dwFlags is modified by WSARecv() so that it does not have the MSG_OOB flag. Then, WSARecv() is called again without MSG_OOB flag in while loop. At this time, normal data is read and returned. Problem 2: In fhandler_socket_inet::recv_internal(), wait_for_events() is called. This blocks the call until OOB data arrives. Problem 3: If recv() is called with MSG_OOB flag set, fhandler_socket_inet:: recv_internal() calls wait_for_events() with both FD_OOB and FD_READ. If both OOB data and normal data already arrived, not only the event of FD_OOB but also the event of FD_READ are reset to non signaled state. I'm not sure where the signal is reset, though. Moreover, return value of ioctl command SIOCATMARK of winsock is not as expected. In winsock, SIOCATMARK returns TRUE if no OOB data exists, FALSE otherwise. This is almost opposite to expectation. Furthermore, inline mode (SO_OOBINLINE) of winsock is completely broken. If SO_OOBINLINE is set, SIOATMARK always returns TRUE. This means application cannot determine OOB data at all in inline mode. To solve these problems, I made a patch attached. Could you please have a look? -- Takashi Yano --Multipart=_Wed__20_Jun_2018_22_18_12_+0900_HL0SDKd8lT_6kdVv Content-Type: application/octet-stream; name="0001-Fix-the-handling-of-out-band-data-OOB-in-a-socket.patch" Content-Disposition: attachment; filename="0001-Fix-the-handling-of-out-band-data-OOB-in-a-socket.patch" Content-Transfer-Encoding: base64 Content-length: 17646 RnJvbSA2MzQ5N2FkMWQ1MDg5YmViMjFhNjNjNjJkZTNjNjYyZmFmNDI4ODFm IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8g PHRha2FzaGkueWFub0BuaWZ0eS5uZS5qcD4KRGF0ZTogV2VkLCAyMCBKdW4g MjAxOCAxNDo0NzoyNyArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIEZpeCB0aGUg aGFuZGxpbmcgb2Ygb3V0LWJhbmQtZGF0YSAoT09CKSBpbiBhIHNvY2tldC4K CiogZmhhbmRsZXIuaCAoY2xhc3MgZmhhbmRsZXJfc29ja2V0X3dzb2NrKTog QWRkIHZhcmlhYmxlIGJvb2wgb29iaW5saW5lLgoqIGZoYW5kbGVyX3NvY2tl dF9pbmV0LmNjIChmaGFuZGxlcl9zb2NrZXRfd3NvY2s6OmZoYW5kbGVyX3Nv Y2tldF93c29jayk6CiAgQWRkIGluaXNpYWxpemUgb2Ygb29iaW5saW5lLgoo ZmhhbmRsZXJfc29ja2V0X2luZXQ6OnJlY3ZfaW50ZXJuYWwpOiBNYWtlIHRo ZSBoYW5kbGluZyBvZiBPT0IgZGF0YQogIGFzIGNvbnNpc3RlbnQgd2l0aCBQ T1NJWCBhcyBwb3NzaWJsZS4gQWRkIHNpbXVsYXRpb24gb2YgaW5saW5lIG1v ZGUKICBmb3IgT09CIGRhdGEgYXMgYSB3b3JrYXJvdW5kIGZvciBicm9rZW4g d2luc29jayBiZWhhdmlvdXIuCihmaGFuZGxlcl9zb2NrZXRfaW5ldDo6c2V0 c29ja29wdCk6IERpdHRvLgooZmhhbmRsZXJfc29ja2V0X2luZXQ6OmdldHNv Y2tvcHQpOiBEaXR0by4KKGZoYW5kbGVyX3NvY2tldF93c29jazo6aW9jdGwp OiBGaXggcmV0dXJuIHZhbHVlIG9mIFNJT0NBVE1BUksgY29tbWFuZC4KICBU aGUgcmV0dXJuIHZhbHVlIG9mIFNJT0NBVE1BUksgb2Ygd2luc29jayBpcyBh bG1vc3Qgb3Bwb3NpdGUgdG8KICBleHBlY3RhdGlvbi4KKiBmaGFuZGxlcl9z b2NrZXRfbG9jYWwuY2MgKGZoYW5kbGVyX3NvY2tldF9sb2NhbDo6cmVjdl9p bnRlcm5hbCk6CiAgTWFrZSB0aGUgaGFuZGxpbmcgb2YgT09CIGRhdGEgYXMg Y29uc2lzdGVudCB3aXRoIFBPU0lYIGFzIHBvc3NpYmxlLgogIEFkZCBzaW11 bGF0aW9uIG9mIGlubGluZSBtb2RlIGZvciBPT0IgZGF0YSBhcyBhIHdvcmth cm91bmQgZm9yIGJyb2tlbgogIHdpbnNvY2sgYmVoYXZpb3VyLgooZmhhbmRs ZXJfc29ja2V0X2xvY2FsOjpzZXRzb2Nrb3B0KTogRGl0dG8uCihmaGFuZGxl cl9zb2NrZXRfbG9jYWw6OmdldHNvY2tvcHQpOiBEaXR0by4KClRoaXMgZml4 ZXMgdGhlIGlzc3VlIHJlcG9ydGVkIGluIGZvbGxvd2luZyBwb3N0LgpodHRw czovL2N5Z3dpbi5jb20vbWwvY3lnd2luLzIwMTgtMDYvbXNnMDAxNDMuaHRt bAotLS0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaCAgICAgICAgICAgICAg IHwgIDEgKwogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zb2NrZXRfaW5ldC5j YyAgfCA5MiArKysrKysrKysrKysrKysrKysrKysrKysrLQogd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9zb2NrZXRfbG9jYWwuY2MgfCA4MCArKysrKysrKysr KysrKysrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDE2NyBpbnNlcnRpb25z KCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3 aW4vZmhhbmRsZXIuaCBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaAppbmRl eCAyZWM0NjBhMzcuLjgyMjJmYjgzNSAxMDA2NDQKLS0tIGEvd2luc3VwL2N5 Z3dpbi9maGFuZGxlci5oCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIu aApAQCAtNjAxLDYgKzYwMSw3IEBAIGNsYXNzIGZoYW5kbGVyX3NvY2tldF93 c29jazogcHVibGljIGZoYW5kbGVyX3NvY2tldAogICB3c2FfZXZlbnQgKndz b2NrX2V2ZW50czsKICAgSEFORExFIHdzb2NrX210eDsKICAgSEFORExFIHdz b2NrX2V2dDsKKyAgYm9vbCBvb2JpbmxpbmU7IC8qIFRydWUgaWYgb3B0aW9u IFNPX09PQklOTElORSBpcyBzZXQgKi8KICAgYm9vbCBpbml0X2V2ZW50cyAo KTsKICAgaW50IHdhaXRfZm9yX2V2ZW50cyAoY29uc3QgbG9uZyBldmVudF9t YXNrLCBjb25zdCBEV09SRCBmbGFncyk7CiAgIHZvaWQgcmVsZWFzZV9ldmVu dHMgKCk7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3Nv Y2tldF9pbmV0LmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zb2NrZXRf aW5ldC5jYwppbmRleCBkYjMwMWYzNTQuLjI0YmFmOWM4OSAxMDA2NDQKLS0t IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zb2NrZXRfaW5ldC5jYworKysg Yi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3NvY2tldF9pbmV0LmNjCkBAIC0y MDEsNiArMjAxLDcgQEAgZmhhbmRsZXJfc29ja2V0X3dzb2NrOjpmaGFuZGxl cl9zb2NrZXRfd3NvY2sgKCkgOgogICB3c29ja19ldmVudHMgKE5VTEwpLAog ICB3c29ja19tdHggKE5VTEwpLAogICB3c29ja19ldnQgKE5VTEwpLAorICBv b2JpbmxpbmUgKGZhbHNlKSwKICAgc3RhdHVzICgpLAogICBwcm90X2luZm9f cHRyIChOVUxMKQogewpAQCAtMTA0NCwxMCArMTA0NSwxMSBAQCBmaGFuZGxl cl9zb2NrZXRfaW5ldDo6cmVjdl9pbnRlcm5hbCAoTFBXU0FNU0cgd3NhbXNn LCBib29sIHVzZV9yZWN2bXNnKQogewogICBzc2l6ZV90IHJlcyA9IDA7CiAg IERXT1JEIHJldCA9IDAsIHdyZXQ7Ci0gIGludCBldnRfbWFzayA9IEZEX1JF QUQgfCAoKHdzYW1zZy0+ZHdGbGFncyAmIE1TR19PT0IpID8gRkRfT09CIDog MCk7CisgIGludCBldnRfbWFzayA9ICh3c2Ftc2ctPmR3RmxhZ3MgJiBNU0df T09CKSA/IEZEX09PQiA6IEZEX1JFQUQ7CiAgIExQV1NBQlVGICZ3c2FidWYg PSB3c2Ftc2ctPmxwQnVmZmVyczsKICAgVUxPTkcgJndzYWNudCA9IHdzYW1z Zy0+ZHdCdWZmZXJDb3VudDsKICAgc3RhdGljIE5PX0NPUFkgTFBGTl9XU0FS RUNWTVNHIFdTQVJlY3ZNc2c7CisgIGJvb2wgcmVhZF9vb2IgPSBmYWxzZTsK IAogICAvKiBDViAyMDE0LTEwLTI2OiBEbyBub3QgY2hlY2sgZm9yIHRoZSBj b25uZWN0X3N0YXRlIGF0IHRoaXMgcG9pbnQuICBJbgogICAgICBjZXJ0YWlu IHNjZW5hcmlvcyB0aGVyZSdzIG5vIHdheSB0byBjaGVjayB0aGUgY29ubmVj dCBzdGF0ZSByZWxpYWJseS4KQEAgLTEwODYsMTIgKzEwODgsNjQgQEAgZmhh bmRsZXJfc29ja2V0X2luZXQ6OnJlY3ZfaW50ZXJuYWwgKExQV1NBTVNHIHdz YW1zZywgYm9vbCB1c2VfcmVjdm1zZykKIAl3YWl0YWxsID0gZmFsc2U7CiAg ICAgfQogCisgIC8qIHJlY3YoKSByZXR1cm5zIEVJTlZBTCBpZiBNU0dfT09C IGZsYWcgaXMgc2V0IGluIGlubGluZSBtb2RlLiAqLworICBpZiAob29iaW5s aW5lICYmICh3c2Ftc2ctPmR3RmxhZ3MgJiBNU0dfT09CKSkKKyAgICB7Cisg ICAgICBzZXRfZXJybm8gKEVJTlZBTCk7CisgICAgICByZXR1cm4gU09DS0VU X0VSUk9SOworICAgIH0KKworICAvKiBDaGVjayB3aGV0aGVyIE9PQiBkYXRh IGlzIHJlYWR5IG9yIG5vdCAqLworICBpZiAoZ2V0X3NvY2tldF90eXBlICgp ID09IFNPQ0tfU1RSRUFNKQorICAgIGlmICgod3NhbXNnLT5kd0ZsYWdzICYg TVNHX09PQikgfHwgb29iaW5saW5lKQorICAgICAgeworCXVfbG9uZyBhdG1h cmsgPSAwOworI2lmZGVmIF9feDg2XzY0X18KKwkvKiBTSU9DQVRNQVJLID0g X0lPUigncycsNyx1X2xvbmcpICovCisJaW50IGVyciA9IDo6aW9jdGxzb2Nr ZXQgKGdldF9zb2NrZXQgKCksIF9JT1IoJ3MnLDcsdV9sb25nKSwgJmF0bWFy ayk7CisjZWxzZQorCWludCBlcnIgPSA6OmlvY3Rsc29ja2V0IChnZXRfc29j a2V0ICgpLCBTSU9DQVRNQVJLLCAmYXRtYXJrKTsKKyNlbmRpZgorCWlmIChl cnIpCisJICB7CisJICAgIHNldF93aW5zb2NrX2Vycm5vICgpOworCSAgICBy ZXR1cm4gU09DS0VUX0VSUk9SOworCSAgfQorCS8qIElmIHRoZXJlIGlzIG5v IE9PQiBkYXRhLCByZWN2KCkgd2l0aCBNU0dfT09CIHJldHVybnMgRUlOVkFM LgorCSAgIE5vdGU6IFRoZSByZXR1cm4gdmFsdWUgb2YgU0lPQ0FUTUFSSyBp biBub24taW5saW5lIG1vZGUgb2YKKwkgICB3aW5zb2NrIGlzIEZBTFNFIGlm IE9PQiBkYXRhIGV4aXN0cywgVFJVRSBvdGhlcndpc2UuICovCisJaWYgKGF0 bWFyayAmJiAod3NhbXNnLT5kd0ZsYWdzICYgTVNHX09PQikpCisJICB7CisJ ICAgIC8qIE5vIE9PQiBkYXRhICovCisJICAgIHNldF9lcnJubyAoRUlOVkFM KTsKKwkgICAgcmV0dXJuIFNPQ0tFVF9FUlJPUjsKKwkgIH0KKwkvKiBJbmxp bmUgbW9kZSBmb3Igb3ViLW9mLWJhbmQgKE9PQikgZGF0YSBvZiB3aW5zb2Nr IGlzCisJICAgY29tcGxldGVseSBicm9rZW4uIFRoYXQgaXMsIFNJT0NBVE1B UksgYWx3YXlzIHJldHVybnMKKwkgICBUUlVFIGluIGlubGluZSBtb2RlLiBE dWUgdG8gdGhpcyBwcm9ibGVtLCBhcHBsaWNhdGlvbgorCSAgIGNhbm5vdCBk ZXRlcm1pbmUgT09CIGRhdGEgYXQgYWxsLiBUaGVyZWZvcmUgdGhlIGJlaGF2 aW9yCisJICAgb2YgYSBzb2NrZXQgd2l0aCBTT19PT0JJTkxJTkUgc2V0IGlz IHNpbXVsYXRlZCB1c2luZworCSAgIGEgc29ja2V0IHdpdGggU09fT09CSU5M SU5FIG5vdCBzZXQuIEluIHRoaXMgZmFrZSBpbmxpbmUKKwkgICBtb2RlLCB0 aGUgb3JkZXIgb2YgdGhlIE9PQiBhbmQgbm9uLU9PQiBkYXRhIGlzIG5vdAor CSAgIHByZXNlcnZlZC4gT09CIGRhdGEgaXMgcmVhZCBiZWZvcmUgbm9uLU9P QiBkYXRhIHNlbnQKKwkgICBwcmlvciB0byB0aGUgT09CIGRhdGEuICBIb3dl dmVyLCB0aGlzIGlzIG1vc3QgbGlrZWx5CisJICAgbm90IGEgcHJvYmxlbSBp biBtb3N0IGNhc2VzLiAqLworCS8qIElmIHRoZXJlIGlzIE9PQiBkYXRhLCBy ZWFkIE9PQiBkYXRhIHVzaW5nIE1TR19PT0IgaW4KKwkgICBmYWtlIGlubGlu ZSBtb2RlLiAqLworCWlmICghYXRtYXJrICYmIG9vYmlubGluZSkKKwkgIHsK KwkgICAgcmVhZF9vb2IgPSB0cnVlOworCSAgICBldnRfbWFzayA9IEZEX09P QjsKKwkgIH0KKyAgICAgIH0KKwogICAvKiBOb3RlOiBEb24ndCBjYWxsIFdT QVJlY3ZGcm9tKE1TR19QRUVLKSB3aXRob3V0IGFjdHVhbGx5IGhhdmluZyBk YXRhCiAgICAgIHdhaXRpbmcgaW4gdGhlIGJ1ZmZlcnMsIG90aGVyd2lzZSB0 aGUgZXZlbnQgaGFuZGxpbmcgZ2V0cyBtZXNzZWQgdXAKICAgICAgZm9yIHNv bWUgcmVhc29uLiAqLwogICB3aGlsZSAoIShyZXMgPSB3YWl0X2Zvcl9ldmVu dHMgKGV2dF9tYXNrIHwgRkRfQ0xPU0UsIHdhaXRfZmxhZ3MpKQogCSB8fCBz YXdfc2h1dGRvd25fcmVhZCAoKSkKICAgICB7CisgICAgICBEV09SRCBkd0Zs YWdzID0gd3NhbXNnLT5kd0ZsYWdzIHwgKHJlYWRfb29iID8gTVNHX09PQiA6 IDApOwogICAgICAgaWYgKHVzZV9yZWN2bXNnKQogCXJlcyA9IFdTQVJlY3ZN c2cgKGdldF9zb2NrZXQgKCksIHdzYW1zZywgJndyZXQsIE5VTEwsIE5VTEwp OwogICAgICAgLyogVGhpcyBpcyB3b3JraW5nIGFyb3VuZCBhIHJlYWxseSB3 ZWlyZCBwcm9ibGVtIGluIFdpblNvY2suCkBAIC0xMTEzLDExICsxMTY3LDEx IEBAIGZoYW5kbGVyX3NvY2tldF9pbmV0OjpyZWN2X2ludGVybmFsIChMUFdT QU1TRyB3c2Ftc2csIGJvb2wgdXNlX3JlY3Ztc2cpCiAJIG5hbWVsZW4gaXMg YSB2YWxpZCBwb2ludGVyIHdoaWxlIG5hbWUgaXMgTlVMTC4gIEJvdGggcGFy YW1ldGVycyBhcmUKIAkgaWdub3JlZCBmb3IgVENQIHNvY2tldHMsIHNvIHRo aXMgb25seSBvY2N1cnMgd2hlbiB1c2luZyBVRFAgc29ja2V0LiAqLwogICAg ICAgZWxzZSBpZiAoIXdzYW1zZy0+bmFtZSB8fCBnZXRfc29ja2V0X3R5cGUg KCkgPT0gU09DS19TVFJFQU0pCi0JcmVzID0gV1NBUmVjdiAoZ2V0X3NvY2tl dCAoKSwgd3NhYnVmLCB3c2FjbnQsICZ3cmV0LCAmd3NhbXNnLT5kd0ZsYWdz LAorCXJlcyA9IFdTQVJlY3YgKGdldF9zb2NrZXQgKCksIHdzYWJ1Ziwgd3Nh Y250LCAmd3JldCwgJmR3RmxhZ3MsCiAJCSAgICAgICBOVUxMLCBOVUxMKTsK ICAgICAgIGVsc2UKIAlyZXMgPSBXU0FSZWN2RnJvbSAoZ2V0X3NvY2tldCAo KSwgd3NhYnVmLCB3c2FjbnQsICZ3cmV0LAotCQkJICAgJndzYW1zZy0+ZHdG bGFncywgd3NhbXNnLT5uYW1lLCAmd3NhbXNnLT5uYW1lbGVuLAorCQkJICAg JmR3RmxhZ3MsIHdzYW1zZy0+bmFtZSwgJndzYW1zZy0+bmFtZWxlbiwKIAkJ CSAgIE5VTEwsIE5VTEwpOwogICAgICAgaWYgKCFyZXMpCiAJewpAQCAtMTU2 MSw2ICsxNjE1LDIzIEBAIGZoYW5kbGVyX3NvY2tldF9pbmV0OjpzZXRzb2Nr b3B0IChpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjb25zdCB2b2lkICpvcHR2 YWwsCiAJICAgIHNldF9lcnJubyAoRURPTSk7CiAJICByZXR1cm4gcmV0Owog CisJY2FzZSBTT19PT0JJTkxJTkU6CisJICAvKiBJbmxpbmUgbW9kZSBmb3Ig b3ViLW9mLWJhbmQgKE9PQikgZGF0YSBvZiB3aW5zb2NrIGlzCisJICAgICBj b21wbGV0ZWx5IGJyb2tlbi4gVGhhdCBpcywgU0lPQ0FUTUFSSyBhbHdheXMg cmV0dXJucworCSAgICAgVFJVRSBpbiBpbmxpbmUgbW9kZS4gRHVlIHRvIHRo aXMgcHJvYmxlbSwgYXBwbGljYXRpb24KKwkgICAgIGNhbm5vdCBkZXRlcm1p bmUgT09CIGRhdGEgYXQgYWxsLiBUaGVyZWZvcmUgdGhlIGJlaGF2aW9yCisJ ICAgICBvZiBhIHNvY2tldCB3aXRoIFNPX09PQklOTElORSBzZXQgaXMgc2lt dWxhdGVkIHVzaW5nCisJICAgICBhIHNvY2tldCB3aXRoIFNPX09PQklOTElO RSBub3Qgc2V0LiBJbiB0aGlzIGZha2UgaW5saW5lCisJICAgICBtb2RlLCB0 aGUgb3JkZXIgb2YgdGhlIE9PQiBhbmQgbm9uLU9PQiBkYXRhIGlzIG5vdAor CSAgICAgcHJlc2VydmVkLiBPT0IgZGF0YSBpcyByZWFkIGJlZm9yZSBub24t T09CIGRhdGEgc2VudAorCSAgICAgcHJpb3IgdG8gdGhlIE9PQiBkYXRhLiAg SG93ZXZlciwgdGhpcyBpcyBtb3N0IGxpa2VseQorCSAgICAgbm90IGEgcHJv YmxlbSBpbiBtb3N0IGNhc2VzLiAqLworCSAgLyogSGVyZSwgaW5zdGVhZCBv ZiBhY3R1YWxseSBzZXR0aW5nIGlubGluZSBtb2RlLCBzaW1wbHkKKwkgICAg IHNldCB0aGUgdmFyaWFibGUgb29iaW5saW5lLiAqLworCSAgb29iaW5saW5l ID0gKihpbnQgKikgb3B0dmFsID8gdHJ1ZSA6IGZhbHNlOworCSAgaWdub3Jl ID0gdHJ1ZTsKKwkgIGJyZWFrOworCiAJZGVmYXVsdDoKIAkgIGJyZWFrOwog CX0KQEAgLTE3MTMsNiArMTc4NCwxMCBAQCBmaGFuZGxlcl9zb2NrZXRfaW5l dDo6Z2V0c29ja29wdCAoaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgY29uc3Qg dm9pZCAqb3B0dmFsLAogCSAgICByZXR1cm4gMDsKIAkgIH0KIAorCWNhc2Ug U09fT09CSU5MSU5FOgorCSAgKihpbnQgKikgb3B0dmFsID0gb29iaW5saW5l ID8gMSA6IDA7CisJICByZXR1cm4gMDsKKwogCWRlZmF1bHQ6CiAJICBicmVh azsKIAl9CkBAIC0xODUwLDYgKzE5MjUsMTcgQEAgZmhhbmRsZXJfc29ja2V0 X3dzb2NrOjppb2N0bCAodW5zaWduZWQgaW50IGNtZCwgdm9pZCAqcCkKIAl9 CiAgICAgICBlbHNlCiAJcmVzID0gOjppb2N0bHNvY2tldCAoZ2V0X3NvY2tl dCAoKSwgY21kLCAodV9sb25nICopIHApOworICAgICAgLyogSW4gd2luc29j aywgdGhlIHJldHVybiB2YWx1ZSBvZiBTSU9DQVRNQVJLIGlzIEZBTFNFIGlm CisJIE9PQiBkYXRhIGV4aXN0cywgVFJVRSBvdGhlcndpc2UuIFRoaXMgaXMg YWxtb3N0IG9wcG9zaXRlCisJIHRvIGV4cGVjdGF0aW9uLiAqLworI2lmZGVm IF9feDg2XzY0X18KKyAgICAgIC8qIFNJT0NBVE1BUksgPSBfSU9SKCdzJyw3 LHVfbG9uZykgKi8KKyAgICAgIGlmIChjbWQgPT0gX0lPUigncycsNyx1X2xv bmcpICYmICFyZXMpCisJKih1X2xvbmcgKilwID0gISoodV9sb25nICopcDsK KyNlbHNlCisgICAgICBpZiAoY21kID09IFNJT0NBVE1BUksgJiYgIXJlcykK KwkqKHVfbG9uZyAqKXAgPSAhKih1X2xvbmcgKilwOworI2VuZGlmCiAgICAg ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgcmVzID0gZmhhbmRsZXJf c29ja2V0Ojppb2N0bCAoY21kLCBwKTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9j eWd3aW4vZmhhbmRsZXJfc29ja2V0X2xvY2FsLmNjIGIvd2luc3VwL2N5Z3dp bi9maGFuZGxlcl9zb2NrZXRfbG9jYWwuY2MKaW5kZXggOTBkOGQ1YWE1Li43 Zjc3NjE2N2EgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJf c29ja2V0X2xvY2FsLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJf c29ja2V0X2xvY2FsLmNjCkBAIC0xMDY1LDExICsxMDY1LDEyIEBAIGZoYW5k bGVyX3NvY2tldF9sb2NhbDo6cmVjdl9pbnRlcm5hbCAoTFBXU0FNU0cgd3Nh bXNnLCBib29sIHVzZV9yZWN2bXNnKQogewogICBzc2l6ZV90IHJlcyA9IDA7 CiAgIERXT1JEIHJldCA9IDAsIHdyZXQ7Ci0gIGludCBldnRfbWFzayA9IEZE X1JFQUQgfCAoKHdzYW1zZy0+ZHdGbGFncyAmIE1TR19PT0IpID8gRkRfT09C IDogMCk7CisgIGludCBldnRfbWFzayA9ICh3c2Ftc2ctPmR3RmxhZ3MgJiBN U0dfT09CKSA/IEZEX09PQiA6IEZEX1JFQUQ7CiAgIExQV1NBQlVGICZ3c2Fi dWYgPSB3c2Ftc2ctPmxwQnVmZmVyczsKICAgVUxPTkcgJndzYWNudCA9IHdz YW1zZy0+ZHdCdWZmZXJDb3VudDsKICAgc3RhdGljIE5PX0NPUFkgTFBGTl9X U0FSRUNWTVNHIFdTQVJlY3ZNc2c7CiAgIGludCBvcmlnX25hbWVsZW4gPSB3 c2Ftc2ctPm5hbWVsZW47CisgIGJvb2wgcmVhZF9vb2IgPSBmYWxzZTsKIAog ICAvKiBDViAyMDE0LTEwLTI2OiBEbyBub3QgY2hlY2sgZm9yIHRoZSBjb25u ZWN0X3N0YXRlIGF0IHRoaXMgcG9pbnQuICBJbgogICAgICBjZXJ0YWluIHNj ZW5hcmlvcyB0aGVyZSdzIG5vIHdheSB0byBjaGVjayB0aGUgY29ubmVjdCBz dGF0ZSByZWxpYWJseS4KQEAgLTExMDgsMTIgKzExMDksNjUgQEAgZmhhbmRs ZXJfc29ja2V0X2xvY2FsOjpyZWN2X2ludGVybmFsIChMUFdTQU1TRyB3c2Ft c2csIGJvb2wgdXNlX3JlY3Ztc2cpCiAJd2FpdGFsbCA9IGZhbHNlOwogICAg IH0KIAorICAvKiByZWN2KCkgcmV0dXJucyBFSU5WQUwgaWYgTVNHX09PQiBm bGFnIGlzIHNldCBpbiBpbmxpbmUgbW9kZS4gKi8KKyAgaWYgKG9vYmlubGlu ZSAmJiAod3NhbXNnLT5kd0ZsYWdzICYgTVNHX09PQikpCisgICAgeworICAg ICAgc2V0X2Vycm5vIChFSU5WQUwpOworICAgICAgcmV0dXJuIFNPQ0tFVF9F UlJPUjsKKyAgICB9CisKKyAgLyogQ2hlY2sgd2hldGhlciBPT0IgZGF0YSBp cyByZWFkeSBvciBub3QgKi8KKyAgaWYgKGdldF9zb2NrZXRfdHlwZSAoKSA9 PSBTT0NLX1NUUkVBTSkKKyAgICBpZiAoKHdzYW1zZy0+ZHdGbGFncyAmIE1T R19PT0IpIHx8IG9vYmlubGluZSkKKyAgICAgIHsKKwl1X2xvbmcgYXRtYXJr ID0gMDsKKwkvKiBTSU9DQVRNQVJLID0gX0lPUigncycsNyx1X2xvbmcpICov CisjaWZkZWYgX194ODZfNjRfXworCS8qIFNJT0NBVE1BUksgPSBfSU9SKCdz Jyw3LHVfbG9uZykgKi8KKwlpbnQgZXJyID0gOjppb2N0bHNvY2tldCAoZ2V0 X3NvY2tldCAoKSwgX0lPUigncycsNyx1X2xvbmcpLCAmYXRtYXJrKTsKKyNl bHNlCisJaW50IGVyciA9IDo6aW9jdGxzb2NrZXQgKGdldF9zb2NrZXQgKCks IFNJT0NBVE1BUkssICZhdG1hcmspOworI2VuZGlmCisJaWYgKGVycikKKwkg IHsKKwkgICAgc2V0X3dpbnNvY2tfZXJybm8gKCk7CisJICAgIHJldHVybiBT T0NLRVRfRVJST1I7CisJICB9CisJLyogSWYgdGhlcmUgaXMgbm8gT09CIGRh dGEsIHJlY3YoKSB3aXRoIE1TR19PT0IgcmV0dXJucyBFSU5WQUwuCisJICAg Tm90ZTogVGhlIHJldHVybiB2YWx1ZSBvZiBTSU9DQVRNQVJLIGluIG5vbi1p bmxpbmUgbW9kZSBvZgorCSAgIHdpbnNvY2sgaXMgRkFMU0UgaWYgT09CIGRh dGEgZXhpc3RzLCBUUlVFIG90aGVyd2lzZS4gKi8KKwlpZiAoYXRtYXJrICYm ICh3c2Ftc2ctPmR3RmxhZ3MgJiBNU0dfT09CKSkKKwkgIHsKKwkgICAgLyog Tm8gT09CIGRhdGEgKi8KKwkgICAgc2V0X2Vycm5vIChFSU5WQUwpOworCSAg ICByZXR1cm4gU09DS0VUX0VSUk9SOworCSAgfQorCS8qIElubGluZSBtb2Rl IGZvciBvdWItb2YtYmFuZCAoT09CKSBkYXRhIG9mIHdpbnNvY2sgaXMKKwkg ICBjb21wbGV0ZWx5IGJyb2tlbi4gVGhhdCBpcywgU0lPQ0FUTUFSSyBhbHdh eXMgcmV0dXJucworCSAgIFRSVUUgaW4gaW5saW5lIG1vZGUuIER1ZSB0byB0 aGlzIHByb2JsZW0sIGFwcGxpY2F0aW9uCisJICAgY2Fubm90IGRldGVybWlu ZSBPT0IgZGF0YSBhdCBhbGwuIFRoZXJlZm9yZSB0aGUgYmVoYXZpb3IKKwkg ICBvZiBhIHNvY2tldCB3aXRoIFNPX09PQklOTElORSBzZXQgaXMgc2ltdWxh dGVkIHVzaW5nCisJICAgYSBzb2NrZXQgd2l0aCBTT19PT0JJTkxJTkUgbm90 IHNldC4gSW4gdGhpcyBmYWtlIGlubGluZQorCSAgIG1vZGUsIHRoZSBvcmRl ciBvZiB0aGUgT09CIGFuZCBub24tT09CIGRhdGEgaXMgbm90CisJICAgcHJl c2VydmVkLiBPT0IgZGF0YSBpcyByZWFkIGJlZm9yZSBub24tT09CIGRhdGEg c2VudAorCSAgIHByaW9yIHRvIHRoZSBPT0IgZGF0YS4gIEhvd2V2ZXIsIHRo aXMgaXMgbW9zdCBsaWtlbHkKKwkgICBub3QgYSBwcm9ibGVtIGluIG1vc3Qg Y2FzZXMuICovCisJLyogSWYgdGhlcmUgaXMgT09CIGRhdGEsIHJlYWQgT09C IGRhdGEgdXNpbmcgTVNHX09PQiBpbgorCSAgIGZha2UgaW5saW5lIG1vZGUu ICovCisJaWYgKCFhdG1hcmsgJiYgb29iaW5saW5lKQorCSAgeworCSAgICBy ZWFkX29vYiA9IHRydWU7CisJICAgIGV2dF9tYXNrID0gRkRfT09COworCSAg fQorICAgICAgfQorCiAgIC8qIE5vdGU6IERvbid0IGNhbGwgV1NBUmVjdkZy b20oTVNHX1BFRUspIHdpdGhvdXQgYWN0dWFsbHkgaGF2aW5nIGRhdGEKICAg ICAgd2FpdGluZyBpbiB0aGUgYnVmZmVycywgb3RoZXJ3aXNlIHRoZSBldmVu dCBoYW5kbGluZyBnZXRzIG1lc3NlZCB1cAogICAgICBmb3Igc29tZSByZWFz b24uICovCiAgIHdoaWxlICghKHJlcyA9IHdhaXRfZm9yX2V2ZW50cyAoZXZ0 X21hc2sgfCBGRF9DTE9TRSwgd2FpdF9mbGFncykpCiAJIHx8IHNhd19zaHV0 ZG93bl9yZWFkICgpKQogICAgIHsKKyAgICAgIERXT1JEIGR3RmxhZ3MgPSB3 c2Ftc2ctPmR3RmxhZ3MgfCAocmVhZF9vb2IgPyBNU0dfT09CIDogMCk7CiAg ICAgICBpZiAodXNlX3JlY3Ztc2cpCiAJcmVzID0gV1NBUmVjdk1zZyAoZ2V0 X3NvY2tldCAoKSwgd3NhbXNnLCAmd3JldCwgTlVMTCwgTlVMTCk7CiAgICAg ICAvKiBUaGlzIGlzIHdvcmtpbmcgYXJvdW5kIGEgcmVhbGx5IHdlaXJkIHBy b2JsZW0gaW4gV2luU29jay4KQEAgLTExMzUsMTEgKzExODksMTEgQEAgZmhh bmRsZXJfc29ja2V0X2xvY2FsOjpyZWN2X2ludGVybmFsIChMUFdTQU1TRyB3 c2Ftc2csIGJvb2wgdXNlX3JlY3Ztc2cpCiAJIG5hbWVsZW4gaXMgYSB2YWxp ZCBwb2ludGVyIHdoaWxlIG5hbWUgaXMgTlVMTC4gIEJvdGggcGFyYW1ldGVy cyBhcmUKIAkgaWdub3JlZCBmb3IgVENQIHNvY2tldHMsIHNvIHRoaXMgb25s eSBvY2N1cnMgd2hlbiB1c2luZyBVRFAgc29ja2V0LiAqLwogICAgICAgZWxz ZSBpZiAoIXdzYW1zZy0+bmFtZSB8fCBnZXRfc29ja2V0X3R5cGUgKCkgPT0g U09DS19TVFJFQU0pCi0JcmVzID0gV1NBUmVjdiAoZ2V0X3NvY2tldCAoKSwg d3NhYnVmLCB3c2FjbnQsICZ3cmV0LCAmd3NhbXNnLT5kd0ZsYWdzLAorCXJl cyA9IFdTQVJlY3YgKGdldF9zb2NrZXQgKCksIHdzYWJ1Ziwgd3NhY250LCAm d3JldCwgJmR3RmxhZ3MsCiAJCSAgICAgICBOVUxMLCBOVUxMKTsKICAgICAg IGVsc2UKIAlyZXMgPSBXU0FSZWN2RnJvbSAoZ2V0X3NvY2tldCAoKSwgd3Nh YnVmLCB3c2FjbnQsICZ3cmV0LAotCQkJICAgJndzYW1zZy0+ZHdGbGFncywg d3NhbXNnLT5uYW1lLCAmd3NhbXNnLT5uYW1lbGVuLAorCQkJICAgJmR3Rmxh Z3MsIHdzYW1zZy0+bmFtZSwgJndzYW1zZy0+bmFtZWxlbiwKIAkJCSAgIE5V TEwsIE5VTEwpOwogICAgICAgaWYgKCFyZXMpCiAJewpAQCAtMTM5Niw2ICsx NDUwLDIyIEBAIGZoYW5kbGVyX3NvY2tldF9sb2NhbDo6c2V0c29ja29wdCAo aW50IGxldmVsLCBpbnQgb3B0bmFtZSwgY29uc3Qgdm9pZCAqb3B0dmFsLAog CWNhc2UgU09fU05ETE9XQVQ6CiAJICBicmVhazsKIAorCWNhc2UgU09fT09C SU5MSU5FOgorCSAgLyogSW5saW5lIG1vZGUgZm9yIG91Yi1vZi1iYW5kIChP T0IpIGRhdGEgb2Ygd2luc29jayBpcworCSAgICAgY29tcGxldGVseSBicm9r ZW4uIFRoYXQgaXMsIFNJT0NBVE1BUksgYWx3YXlzIHJldHVybnMKKwkgICAg IFRSVUUgaW4gaW5saW5lIG1vZGUuIER1ZSB0byB0aGlzIHByb2JsZW0sIGFw cGxpY2F0aW9uCisJICAgICBjYW5ub3QgZGV0ZXJtaW5lIE9PQiBkYXRhIGF0 IGFsbC4gVGhlcmVmb3JlIHRoZSBiZWhhdmlvcgorCSAgICAgb2YgYSBzb2Nr ZXQgd2l0aCBTT19PT0JJTkxJTkUgc2V0IGlzIHNpbXVsYXRlZCB1c2luZwor CSAgICAgYSBzb2NrZXQgd2l0aCBTT19PT0JJTkxJTkUgbm90IHNldC4gSW4g dGhpcyBmYWtlIGlubGluZQorCSAgICAgbW9kZSwgdGhlIG9yZGVyIG9mIHRo ZSBPT0IgYW5kIG5vbi1PT0IgZGF0YSBpcyBub3QKKwkgICAgIHByZXNlcnZl ZC4gT09CIGRhdGEgaXMgcmVhZCBiZWZvcmUgbm9uLU9PQiBkYXRhIHNlbnQK KwkgICAgIHByaW9yIHRvIHRoZSBPT0IgZGF0YS4gIEhvd2V2ZXIsIHRoaXMg aXMgbW9zdCBsaWtlbHkKKwkgICAgIG5vdCBhIHByb2JsZW0gaW4gbW9zdCBj YXNlcy4gKi8KKwkgIC8qIEhlcmUsIGluc3RlYWQgb2YgYWN0dWFsbHkgc2V0 dGluZyBpbmxpbmUgbW9kZSwgc2ltcGx5CisJICAgICBzZXQgdGhlIHZhcmlh YmxlIG9vYmlubGluZS4gKi8KKwkgIG9vYmlubGluZSA9ICooaW50ICopIG9w dHZhbCA/IHRydWUgOiBmYWxzZTsKKwkgIHJldHVybiAwOworCiAJZGVmYXVs dDoKIAkgIC8qIEFGX0xPQ0FMIHNvY2tldHMgc2ltcGx5IGlnbm9yZSBhbGwg b3RoZXIgU09MX1NPQ0tFVCBvcHRpb25zLiAqLwogCSAgcmV0dXJuIDA7CkBA IC0xNTM4LDYgKzE2MDgsMTAgQEAgZmhhbmRsZXJfc29ja2V0X2xvY2FsOjpn ZXRzb2Nrb3B0IChpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjb25zdCB2b2lk ICpvcHR2YWwsCiAJICAgIHJldHVybiAwOwogCSAgfQogCisJY2FzZSBTT19P T0JJTkxJTkU6CisJICAqKGludCAqKSBvcHR2YWwgPSBvb2JpbmxpbmUgPyAx IDogMDsKKwkgIHJldHVybiAwOworCiAJZGVmYXVsdDoKIAkgIHsKIAkgICAg dW5zaWduZWQgaW50ICp2YWwgPSAodW5zaWduZWQgaW50ICopIG9wdHZhbDsK LS0gCjIuMTcuMAoK --Multipart=_Wed__20_Jun_2018_22_18_12_+0900_HL0SDKd8lT_6kdVv Content-Type: text/plain; charset=us-ascii Content-length: 219 -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --Multipart=_Wed__20_Jun_2018_22_18_12_+0900_HL0SDKd8lT_6kdVv--