From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3280 invoked by alias); 7 Apr 2010 06:39:27 -0000 Received: (qmail 3271 invoked by uid 22791); 7 Apr 2010 06:39:26 -0000 X-SWARE-Spam-Status: No, hits=-1.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SARE_MSGID_LONG45,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-ew0-f216.google.com (HELO mail-ew0-f216.google.com) (209.85.219.216) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 07 Apr 2010 06:39:20 +0000 Received: by ewy8 with SMTP id 8so326459ewy.28 for ; Tue, 06 Apr 2010 23:39:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.213.31.211 with HTTP; Tue, 6 Apr 2010 23:39:17 -0700 (PDT) Date: Wed, 07 Apr 2010 06:39:00 -0000 Received: by 10.213.39.144 with SMTP id g16mr4926171ebe.37.1270622357545; Tue, 06 Apr 2010 23:39:17 -0700 (PDT) Message-ID: Subject: PING: [PATCH] properly check error return from socket() and accept() calls From: Ozkan Sezer To: gdb-patches@sources.redhat.com Content-Type: multipart/mixed; boundary=00148530a31643e73a04839fd2fb Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-04/txt/msg00122.txt.bz2 --00148530a31643e73a04839fd2fb Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1117 PING. On Sat, Apr 3, 2010 at 10:37 AM, Ozkan Sezer wrote: > On Fri, Apr 2, 2010 at 11:46 AM, Ozkan Sezer wrote: >> Hi: >> >> socket() and accept() calls do not return "some negative value" on error, >> they specifically return "-1". Therefore, the error return checks from >> those calls must be done by checking equality to -1 not by being negative. >> This is important for Win32 where the SOCKET type is actually unsigned >> and the operating system has every right to return a value > INT_MAX and >> < UINT_MAX and since gdb is using a signed int type for socket fd (which >> is broken for Win64 where SOCKET type is uintptr_t, but that's for another >> time), the negativity check may evaluate to true even if the socket() or >> accept() call actually succeeded. The attached trivial patch fixes this as >> described. For uniformity's sake, I also touched the files under sim/. >> Please consider for applying. (The patch file has the ChangeLog. I don't >> have write access.) >> > > I seem to have missed a couple of places. Attached the updated patch. > > -- > Ozkan > --00148530a31643e73a04839fd2fb Content-Type: application/octet-stream; name="gdb_socket_err_checks.patch" Content-Disposition: attachment; filename="gdb_socket_err_checks.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g7k3zmi31 Content-length: 11041 MjAxMC0wNC0wMyAgT3prYW4gU2V6ZXIgIDxzZXplcm96QGdtYWlsLmNvbT4K CmdkYi8KCSogc2VyLXRjcC5jIChuZXRfb3Blbik6IENoZWNrIGVycm9yIHJl dHVybiBmcm9tIHNvY2tldCgpIGNhbGwgYnkgaXRzCgllcXVhbGl0eSB0byAt MSBub3QgYnkgaXQgYmVpbmcgbmVnYXRpdmUuCgkobmV0X2Nsb3NlKTogTGlr ZXdpc2UuCgpnZGIvZ2Ric2VydmVyLwoJKiBnZGJyZXBsYXkuYyAocmVtb3Rl X29wZW4pOiBDaGVjayBlcnJvciByZXR1cm4gZnJvbSBzb2NrZXQoKSBjYWxs IGJ5CglpdHMgZXF1YWxpdHkgdG8gLTEgbm90IGJ5IGl0IGJlaW5nIG5lZ2F0 aXZlLgoJKiByZW1vdGUtdXRpbHMuYyAocmVtb3RlX29wZW4pOiBMaWtld2lz ZS4KCnNpbS9hcm0vCgkqIGNvbW11bmljYXRlLmMgKE1ZcmVhZF9jaGFyKTog Q2hlY2sgZXJyb3IgcmV0dXJuIGZyb20gYWNjZXB0KCkgY2FsbAoJYnkgaXRz IGVxdWFsaXR5IHRvIC0xIG5vdCBieSBpdCBiZWluZyBuZWdhdGl2ZS4KCShN WXJlYWRfY2hhcndhaXQpOiBMaWtld2lzZS4KCSogbWFpbi5jIChtYWluKTog TGlrZXdpc2UgZm9yIGJvdGggc29ja2V0KCkgYW5kIGFjY2VwdCgpIGNhbGxz LgoKc2ltL2NvbW1vbi8KCSogZHYtc29ja3Nlci5jIChkdl9zb2Nrc2VyX2lu aXQpOiBDaGVjayBlcnJvciByZXR1cm4gZnJvbSBzb2NrZXQoKQoJY2FsbCBi eSBpdHMgZXF1YWxpdHkgdG8gLTEgbm90IGJ5IGl0IGJlaW5nIG5lZ2F0aXZl LgoJKGNvbm5lY3RlZF9wKTogTGlrZXdpc2UgZm9yIGFjY2VwdCgpIGNhbGwu CgpzaW0vY3Jpcy8KCSogZHYtcnYuYyAoaHdfcnZfaW5pdF9zb2NrZXQpOiBD aGVjayBlcnJvciByZXR1cm4gZnJvbSBzb2NrZXQoKSBjYWxsCglieSBpdHMg ZXF1YWxpdHkgdG8gLTEgbm90IGJ5IGl0IGJlaW5nIG5lZ2F0aXZlLgoJKGh3 X3J2X3dyaXRlKTogTGlrZXdpc2UuCgkoaHdfcnZfaGFuZGxlX2luY29taW5n KTogTGlrZXdpc2UuCgkoaHdfcnZfcG9sbF9vbmNlKTogTGlrZXdpc2UuCgkq IHJ2ZHVtbXkuYyAoc2V0dXBzb2NrZXQpOiBMaWtld2lzZS4KCShtYWluKTog TGlrZXdpc2UgZm9yIGFjY2VwdCgpIGNhbGwgYXMgcmV0dXJuZWQgZnJvbSBz ZXR1cHNvY2tldCgpLgoKc2ltL20zMmMvCgkqIG1haW4uYyAoc2V0dXBfdGNw X2NvbnNvbGUpOiBDaGVjayBlcnJvciByZXR1cm4gZnJvbSBzb2NrZXQoKSBj YWxsCglieSBpdHMgZXF1YWxpdHkgdG8gLTEgbm90IGJ5IGl0IGJlaW5nIG5l Z2F0aXZlLgoKSW5kZXg6IGdkYi9zZXItdGNwLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9zZXItdGNwLmMs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzMKZGlmZiAtdSAtcCAtcjEuMzMg c2VyLXRjcC5jCi0tLSBnZGIvc2VyLXRjcC5jCTEgSmFuIDIwMTAgMDc6MzE6 NDEgLTAwMDAJMS4zMworKysgZ2RiL3Nlci10Y3AuYwkzIEFwciAyMDEwIDA3 OjMwOjIzIC0wMDAwCkBAIC0yMDgsNyArMjA4LDcgQEAgbmV0X29wZW4gKHN0 cnVjdCBzZXJpYWwgKnNjYiwgY29uc3QgY2hhcgogICBlbHNlCiAgICAgc2Ni LT5mZCA9IHNvY2tldCAoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOwogCi0g IGlmIChzY2ItPmZkIDwgMCkKKyAgaWYgKHNjYi0+ZmQgPT0gLTEpCiAgICAg cmV0dXJuIC0xOwogICAKICAgLyogc2V0IHNvY2tldCBub25ibG9ja2luZyAq LwpAQCAtMzIzLDcgKzMyMyw3IEBAIG5ldF9vcGVuIChzdHJ1Y3Qgc2VyaWFs ICpzY2IsIGNvbnN0IGNoYXIKIHZvaWQKIG5ldF9jbG9zZSAoc3RydWN0IHNl cmlhbCAqc2NiKQogewotICBpZiAoc2NiLT5mZCA8IDApCisgIGlmIChzY2It PmZkID09IC0xKQogICAgIHJldHVybjsKIAogICBjbG9zZSAoc2NiLT5mZCk7 CkluZGV4OiBnZGIvZ2Ric2VydmVyL2dkYnJlcGxheS5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2Ric2Vy dmVyL2dkYnJlcGxheS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI0CmRp ZmYgLXUgLXAgLXIxLjI0IGdkYnJlcGxheS5jCi0tLSBnZGIvZ2Ric2VydmVy L2dkYnJlcGxheS5jCTEgSmFuIDIwMTAgMDc6MzE6NDkgLTAwMDAJMS4yNAor KysgZ2RiL2dkYnNlcnZlci9nZGJyZXBsYXkuYwkzIEFwciAyMDEwIDA3OjMw OjI0IC0wMDAwCkBAIC0yMTAsNyArMjEwLDcgQEAgcmVtb3RlX29wZW4gKGNo YXIgKm5hbWUpCiAjZW5kaWYKIAogICAgICAgdG1wX2Rlc2MgPSBzb2NrZXQg KFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKLSAgICAgIGlmICh0bXBfZGVz YyA8IDApCisgICAgICBpZiAodG1wX2Rlc2MgPT0gLTEpCiAJcGVycm9yX3dp dGhfbmFtZSAoIkNhbid0IG9wZW4gc29ja2V0Iik7CiAKICAgICAgIC8qIEFs bG93IHJhcGlkIHJldXNlIG9mIHRoaXMgcG9ydC4gKi8KSW5kZXg6IGdkYi9n ZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9nZGJzZXJ2ZXIvcmVtb3Rl LXV0aWxzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNzEKZGlmZiAtdSAt cCAtcjEuNzEgcmVtb3RlLXV0aWxzLmMKLS0tIGdkYi9nZGJzZXJ2ZXIvcmVt b3RlLXV0aWxzLmMJMjAgSmFuIDIwMTAgMjI6NTU6MzggLTAwMDAJMS43MQor KysgZ2RiL2dkYnNlcnZlci9yZW1vdGUtdXRpbHMuYwkzIEFwciAyMDEwIDA3 OjMwOjI0IC0wMDAwCkBAIC0yMTMsNyArMjEzLDcgQEAgcmVtb3RlX29wZW4g KGNoYXIgKm5hbWUpCiAjZW5kaWYKIAogICAgICAgdG1wX2Rlc2MgPSBzb2Nr ZXQgKFBGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCk7Ci0gICAg ICBpZiAodG1wX2Rlc2MgPCAwKQorICAgICAgaWYgKHRtcF9kZXNjID09IC0x KQogCXBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBvcGVuIHNvY2tldCIpOwog CiAgICAgICAvKiBBbGxvdyByYXBpZCByZXVzZSBvZiB0aGlzIHBvcnQuICov CgpJbmRleDogc2ltL2FybS9jb21tdW5pY2F0ZS5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9zaW0vYXJtL2NvbW11 bmljYXRlLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC11IC1w IC1yMS4yIGNvbW11bmljYXRlLmMKLS0tIHNpbS9hcm0vY29tbXVuaWNhdGUu YwkxMiBNYXkgMjAwNSAwNzozNjo1OSAtMDAwMAkxLjIKKysrIHNpbS9hcm0v Y29tbXVuaWNhdGUuYwkzIEFwciAyMDEwIDA3OjMwOjI2IC0wMDAwCkBAIC04 Myw3ICs4Myw3IEBAIHJldHJ5OgogCSAgcmV0dXJuIC0xOwogCSAgZnByaW50 ZiAoc3RkZXJyLCAiV2FpdGluZyBmb3IgY29ubmVjdGlvbiBmcm9tIGRlYnVn Z2VyLi4uIik7CiAJICBkZWJ1Z3NvY2sgPSBhY2NlcHQgKHNvY2tldGhhbmRs ZSwgJmlzYSwgJmkpOwotCSAgaWYgKGRlYnVnc29jayA8IDApCisJICBpZiAo ZGVidWdzb2NrID09IC0xKQogCSAgICB7CQkJLyogTm93IHdlIGFyZSBpbiBz ZXJpb3VzIHRyb3VibGUuLi4gKi8KIAkgICAgICBwZXJyb3IgKCJhY2NlcHQi KTsKIAkgICAgICByZXR1cm4gLTE7CkBAIC0xMzgsNyArMTM4LDcgQEAgcmV0 cnk6CiAJICByZXR1cm4gLTE7CiAJICBmcHJpbnRmIChzdGRlcnIsICJXYWl0 aW5nIGZvciBjb25uZWN0aW9uIGZyb20gZGVidWdnZXIuLi4iKTsKIAkgIGRl YnVnc29jayA9IGFjY2VwdCAoc29ja2V0aGFuZGxlLCAmaXNhLCAmaSk7Ci0J ICBpZiAoZGVidWdzb2NrIDwgMCkKKwkgIGlmIChkZWJ1Z3NvY2sgPT0gLTEp CiAJICAgIHsJCQkvKiBOb3cgd2UgYXJlIGluIHNlcmlvdXMgdHJvdWJsZS4u LiAqLwogCSAgICAgIHBlcnJvciAoImFjY2VwdCIpOwogCSAgICAgIHJldHVy biAtMTsKSW5kZXg6IHNpbS9hcm0vbWFpbi5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9zaW0vYXJtL21haW4uYyx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXUgLXAgLXIxLjIgbWFp bi5jCi0tLSBzaW0vYXJtL21haW4uYwkxMiBNYXkgMjAwNSAwNzozNjo1OSAt MDAwMAkxLjIKKysrIHNpbS9hcm0vbWFpbi5jCTMgQXByIDIwMTAgMDc6MzA6 MjYgLTAwMDAKQEAgLTExNyw3ICsxMTcsNyBAQCBtYWluIChpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCiAgIC8qIE9wZW4gYSBzb2NrZXQgKi8KICAgc29j a2V0aGFuZGxlID0gc29ja2V0IChocC0+aF9hZGRydHlwZSwgU09DS19TVFJF QU0sIDApOwotICBpZiAoc29ja2V0aGFuZGxlIDwgMCkKKyAgaWYgKHNvY2tl dGhhbmRsZSA9PSAtMSkKICAgICB7CiAgICAgICBwZXJyb3IgKCJzb2NrZXQi KTsKICAgICAgIHJldHVybiAxOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIG1haW4g KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgIGZwcmludGYgKHN0ZGVyciwg IldhaXRpbmcgZm9yIGNvbm5lY3Rpb24gZnJvbSBkZWJ1Z2dlci4uLiIpOwog CiAgIGRlYnVnc29jayA9IGFjY2VwdCAoc29ja2V0aGFuZGxlLCAmaXNhLCAm aSk7Ci0gIGlmIChkZWJ1Z3NvY2sgPCAwKQorICBpZiAoZGVidWdzb2NrID09 IC0xKQogICAgIHsKICAgICAgIHBlcnJvciAoImFjY2VwdCIpOwogICAgICAg cmV0dXJuIDE7CkluZGV4OiBzaW0vY29tbW9uL2R2LXNvY2tzZXIuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvc2lt L2NvbW1vbi9kdi1zb2Nrc2VyLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu OApkaWZmIC11IC1wIC1yMS44IGR2LXNvY2tzZXIuYwotLS0gc2ltL2NvbW1v bi9kdi1zb2Nrc2VyLmMJMzAgTWFyIDIwMTAgMjM6MDk6NDggLTAwMDAJMS44 CisrKyBzaW0vY29tbW9uL2R2LXNvY2tzZXIuYwkzIEFwciAyMDEwIDA3OjMw OjI2IC0wMDAwCkBAIC0xNjYsNyArMTY2LDcgQEAgZHZfc29ja3Nlcl9pbml0 IChTSU1fREVTQyBzZCkKICAgICB9CiAKICAgc29ja3Nlcl9saXN0ZW5fZmQg PSBzb2NrZXQgKFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKLSAgaWYgKHNv Y2tzZXJfbGlzdGVuX2ZkIDwgMCkKKyAgaWYgKHNvY2tzZXJfbGlzdGVuX2Zk ID09IC0xKQogICAgIHsKICAgICAgIHNpbV9pb19lcHJpbnRmIChzZCwgInNv Y2tzZXIgaW5pdDogdW5hYmxlIHRvIGdldCBzb2NrZXQ6ICVzXG4iLAogCQkg ICAgICBzdHJlcnJvciAoZXJybm8pKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBj b25uZWN0ZWRfcCAoU0lNX0RFU0Mgc2QpCiAKICAgYWRkcmxlbiA9IHNpemVv ZiAoc29ja2FkZHIpOwogICBzb2Nrc2VyX2ZkID0gYWNjZXB0IChzb2Nrc2Vy X2xpc3Rlbl9mZCwgJnNvY2thZGRyLCAmYWRkcmxlbik7Ci0gIGlmIChzb2Nr c2VyX2ZkIDwgMCkKKyAgaWYgKHNvY2tzZXJfZmQgPT0gLTEpCiAgICAgcmV0 dXJuIDA7CiAKICAgLyogU2V0IG5vbi1ibG9ja2luZyBpL28uICAqLwpJbmRl eDogc2ltL2NyaXMvZHYtcnYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvc2ltL2NyaXMvZHYtcnYuYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXUgLXAgLXIxLjYgZHYtcnYuYwot LS0gc2ltL2NyaXMvZHYtcnYuYwkxIEphbiAyMDEwIDEwOjAzOjI4IC0wMDAw CTEuNgorKysgc2ltL2NyaXMvZHYtcnYuYwkzIEFwciAyMDEwIDA3OjMwOjI3 IC0wMDAwCkBAIC00MDQsNyArNDA0LDcgQEAgaHdfcnZfd3JpdGUgKHN0cnVj dCBodyAqbWUsCiAKICAgLyogSWYgd2UgZG9uJ3QgaGF2ZSBhIHZhbGlkIGZk IGhlcmUsIGl0J3MgYmVjYXVzZSB3ZSBnb3QgYW4gZXJyb3IKICAgICAgaW5p dGlhbGx5LCBhbmQgd2Ugc3VwcHJlc3NlZCB0aGF0IGVycm9yLiAgKi8KLSAg aWYgKHJ2LT5mZCA8IDApCisgIGlmIChydi0+ZmQgPT0gLTEpCiAgICAgaHdf YWJvcnQgKG1lLCAiY291bGRuJ3Qgb3BlbiBhIGNvbm5lY3Rpb24gdG8gJXM6 JWQgYmVjYXVzZTogJXMiLAogCSAgICAgIHJ2LT5ob3N0LCBydi0+cG9ydCwg c3RyZXJyb3IgKHJ2LT5zYXZlZF9lcnJubykpOwogCkBAIC02MzcsNyArNjM3 LDcgQEAgaHdfcnZfaGFuZGxlX2luY29taW5nIChzdHJ1Y3QgaHcgKm1lLAog ICAgIHsKICAgICAgIGh3X3J2X3JlYWQgKG1lLCBjYnVmLCAzKTsKIAotICAg ICAgaWYgKHJ2LT5mZCA8IDApCisgICAgICBpZiAocnYtPmZkID09IC0xKQog CXJldHVybjsKIAogICAgICAgbGVuID0gY2J1ZlswXSArIGNidWZbMV0gKiAy NTYgLSAzOwpAQCAtNzIzLDcgKzcyMyw3IEBAIGh3X3J2X3BvbGxfb25jZSAo c3RydWN0IGh3ICptZSkKICAgaW50IHJldDsKICAgc3RydWN0IHRpbWV2YWwg dHY7CiAKLSAgaWYgKHJ2LT5mZCA8IDApCisgIGlmIChydi0+ZmQgPT0gLTEp CiAgICAgLyogQ29ubmVjdGlvbiBoYXMgZGllZCBvciB3YXMgbmV2ZXIgaW5p dGlhdGVkLiAgKi8KICAgICByZXR1cm47CiAKQEAgLTg4Nyw3ICs4ODcsNyBA QCBod19ydl9pbml0X3NvY2tldCAoc3RydWN0IGh3ICptZSkKICAgc2VydmVy LnNpbl9wb3J0ID0gaHRvbnMgKHJ2LT5wb3J0KTsKICAgc29jayA9IHNvY2tl dCAoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApOwogCi0gIGlmIChzb2NrIDwg MCkKKyAgaWYgKHNvY2sgPT0gLTEpCiAgICAgaHdfYWJvcnQgKG1lLCAiY2Fu J3QgZ2V0IGEgc29ja2V0IGZvciAlczolZCBjb25uZWN0aW9uIiwKIAkgICAg ICBydi0+aG9zdCwgcnYtPnBvcnQpOwogCkluZGV4OiBzaW0vY3Jpcy9ydmR1 bW15LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL3NpbS9jcmlzL3J2ZHVtbXkuYyx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS42CmRpZmYgLXUgLXAgLXIxLjYgcnZkdW1teS5jCi0tLSBzaW0vY3Jp cy9ydmR1bW15LmMJMSBKYW4gMjAxMCAxMDowMzoyOCAtMDAwMAkxLjYKKysr IHNpbS9jcmlzL3J2ZHVtbXkuYwkzIEFwciAyMDEwIDA3OjMwOjI3IC0wMDAw CkBAIC0xMTgsNyArMTE4LDcgQEAgaW50IHNldHVwc29ja2V0ICh2b2lkKQog ICBtZW1zZXQgKCZzYV9pbiwgMCwgc2l6ZW9mIChzYV9pbikpOwogCiAgIHMg PSBzb2NrZXQgKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKLSAgaWYgKHMg PCAwKQorICBpZiAocyA9PSAtMSkKICAgICByZXR1cm4gLTE7CiAKICAgaWYg KHNldHNvY2tvcHQgKHMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgJnJl dXNlLCBzaXplb2YgcmV1c2UpICE9IDApCkBAIC01MTcsNyArNTE3LDcgQEAg bWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgIH0KIAogICBm ZCA9IHNldHVwc29ja2V0ICgpOwotICBpZiAoZmQgPCAwKQorICBpZiAoZmQg PT0gLTEpCiAgICAgewogICAgICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6IHBy b2JsZW0gc2V0dGluZyB1cCB0aGUgY29ubmVjdGlvbjogJXNcbiIsCiAJICAg ICAgIHByb2duYW1lLCBzdHJlcnJvciAoZXJybm8pKTsKSW5kZXg6IHNpbS9t MzJjL21haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv Y3ZzL3NyYy9zcmMvc2ltL20zMmMvbWFpbi5jLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjkKZGlmZiAtdSAtcCAtcjEuOSBtYWluLmMKLS0tIHNpbS9tMzJj L21haW4uYwkxIEphbiAyMDEwIDEwOjAzOjMxIC0wMDAwCTEuOQorKysgc2lt L20zMmMvbWFpbi5jCTMgQXByIDIwMTAgMDc6MzA6MjcgLTAwMDAKQEAgLTk4 LDcgKzk4LDcgQEAgc2V0dXBfdGNwX2NvbnNvbGUgKGNoYXIgKnBvcnRuYW1l KQogICBhZGRyZXNzLnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOwogCiAgIGlz b2NrZXQgPSBzb2NrZXQgKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKLSAg aWYgKGlzb2NrZXQgPCAwKQorICBpZiAoaXNvY2tldCA9PSAtMSkKICAgICB7 CiAgICAgICBwZXJyb3IgKCJzb2NrZXQiKTsKICAgICAgIGV4aXQgKDEpOwo= --00148530a31643e73a04839fd2fb--