From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id C764D3864859 for ; Wed, 28 Jul 2021 16:23:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C764D3864859 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-61-UduOYAxEOj249onEFXoO0Q-1; Wed, 28 Jul 2021 12:23:28 -0400 X-MC-Unique: UduOYAxEOj249onEFXoO0Q-1 Received: by mail-wr1-f69.google.com with SMTP id c5-20020adfed850000b02901537ecbecc6so1122899wro.19 for ; Wed, 28 Jul 2021 09:23:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=aTO8HYVQNvhfM9Y7t1x40W0ujyiZXiG4q8CBhwlC8Vw=; b=LnIpmBME9ud/wFjZXtuSCn0XQQzMVWxV4cDEkDsAMTgW/ABx+89/8aOJEeFW6JOdwY jh+gN/mwNLQ5hndgafA8cUjzKcjm7WJyBeRaq0cRsNGeA7oZ2kSESDnrZBi7CQsnvjHH O2qyZYMaiTcHinn107hrn1APJaFinA5CbQ6oqCYeCVw0O6imZVBp4W7xAGInI4WFlUzT as4UQIVyex7Tmvn73mGp5z1js2XYBWzYEX6Rlra9iH6yL4RV58xAHXjpo6HSWVuONFUJ 2+cCABn8V/d9vYCiKlgYC9go/mAbY68Ti9n6LLGihd32GO3FF1evaFnq41F1X8fphixo gILw== X-Gm-Message-State: AOAM532DSAh/sA8RuMO9ePWC5PSYBXON1XZUcCBs/Ex7kbHvOFUZtd4b mnYHPNprPGjtiRwGs7K92NzOMH1F1NfXNSovt2AlpgT2KVsDATl3gn8rcRMbTuvZj/hK6OELYEl geQcoQKtuM8V6JoEnO2fMJHJ+8DzyOqvFBk/sOOA2/g== X-Received: by 2002:a5d:59ae:: with SMTP id p14mr245453wrr.148.1627489407065; Wed, 28 Jul 2021 09:23:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyI9TlZhYPbgON3rEffV+hkM9VrAyTgGf68q7XTwLdz08cOgsttY+ZTbIU254VXsBu570th6dLNTkFirj3iJds= X-Received: by 2002:a5d:59ae:: with SMTP id p14mr245436wrr.148.1627489406929; Wed, 28 Jul 2021 09:23:26 -0700 (PDT) MIME-Version: 1.0 References: <7b021d11929e451d77961ab183cd97f3329a6dce.camel@klomp.org> <308d7b3305efae40152abbf3b4c9c06b3d6a22fa.camel@klomp.org> In-Reply-To: <308d7b3305efae40152abbf3b4c9c06b3d6a22fa.camel@klomp.org> From: Noah Sanci Date: Wed, 28 Jul 2021 12:23:15 -0400 Message-ID: Subject: Re: [Bug debuginfod/27983] ignore duplicate urls To: elfutils-devel@sourceware.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000fa01ff05c831675f" X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_BADIPHTTP, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2021 16:23:33 -0000 --000000000000fa01ff05c831675f Content-Type: text/plain; charset="UTF-8" Hello This patch fixes a memory leak and slightly alters the PR27983 test, isolating where its DEBUGINFO_URLS's duplicates are accessible, which fixes a case of test failure on some systems. Noah On Wed, Jul 28, 2021 at 10:55 AM Mark Wielaard wrote: > > Hi Noah, > > On Mon, 2021-07-26 at 12:29 -0400, Noah Sanci via Elfutils-devel wrote: > > The realloc returning NULL issue has been resolved and the patch > > successfully rebased onto master. Please find these improvements > > attached. > > This looks really good, but I found some small issues. > > First it turns out reallocarray isn't available on some older systems. > This is easy to workaround though since it is a fairly simple function > we could provide ourselves if it isn't there. The attached patch does > that. I'll push it if it looks good. > > Second there is a small memory leak found by valgrind. We only clean up > the server_url_list on failure, but we should also clean it up when we > are done on success: > > diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod- > client.c > index 9d049d33..0f65f115 100644 > --- a/debuginfod/debuginfod-client.c > +++ b/debuginfod/debuginfod-client.c > @@ -1191,6 +1191,9 @@ debuginfod_query_server (debuginfod_client *c, > } > > free (data); > + for (int i = 0; i < num_urls; ++i) > + free(server_url_list[i]); > + free(server_url_list); > free (server_urls); > > /* don't close fd - we're returning it */ > > Finally on some systems, but not all, one of the tests in run- > debuginfod-find.sh failed. In particular this one: > > # check out the debuginfod logs for the new style status lines > # cat vlog$PORT2 > grep -q 'UA:.*XFF:.*GET /buildid/.* 200 ' vlog$PORT2 > grep -q 'UA:.*XFF:.*GET /metrics 200 ' vlog$PORT2 > grep -q 'UA:.*XFF:.*GET /badapi 503 ' vlog$PORT2 > grep -q 'UA:.*XFF:.*GET /buildid/deadbeef.* 404 ' vlog$PORT2 > > That last one changed error message from 404 to 503. This seems related > to the setting of DEBUGINFOD_URLS earlier by the new test you added. If > I change that to: > > diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh > index c2c3b9c3..ec639a38 100755 > --- a/tests/run-debuginfod-find.sh > +++ b/tests/run-debuginfod-find.sh > @@ -367,8 +367,7 @@ wait_ready $PORT1 'found_sourcerefs_total{source=".rpm archive"}' $sourcefiles > ######################################################################## > # PR27983 ensure no duplicate urls are used in when querying servers for files > rm -rf $DEBUGINFOD_CACHE_PATH # clean it from previous tests > -export DEBUGINFOD_URLS="http://127.0.0.1:$PORT1 http://127.0.0.1:$PORT1 http://127.0.0.1:$PORT1 http:127.0.0.1:7999" > -env LD_LIBRARY_PATH=$ldpath ${abs_top_builddir}/debuginfod/debuginfod-find -v executable $BUILDID2 > vlog4 2>&1 || true > +env DEBUGINFOD_URLS="http://127.0.0.1:$PORT1 http://127.0.0.1:$PORT1 http://127.0.0.1:$PORT1 http:127.0.0.1:7999" LD_LIBRARY_PATH=$ldpath ${abs_top_builddir}/debuginfod/debuginfod-find -v executable $BUILDID2 > vlog4 2>&1 || true > tempfiles vlog4 > if [ $( grep -c 'duplicate url: http://127.0.0.1:'$PORT1'.*' vlog4 ) -ne 2 ]; then > echo "Duplicated servers remain"; > > Everything seems to pass everywhere. > > run-debuginfod-find.sh is really convoluted and we really shouldn't add > more and more interacting tests to it. But if we do maybe we should use > the env DEBUGINFOD_URLS=... trick to minimize changing other tests in > the same file. > > If you agree with the above two changes, could you resubmit the patch > with those? > > Thanks, > > Mark --000000000000fa01ff05c831675f Content-Type: text/x-patch; charset="US-ASCII"; name="0001-debuginfod-PR27983-ignore-duplicate-urls.patch" Content-Disposition: attachment; filename="0001-debuginfod-PR27983-ignore-duplicate-urls.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_krnp5t570 RnJvbSBiOWQzNjg1N2I2YjdjZjRmMjg4OTI4MDExOWJhMDE2MjhhZmUyNDIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIFNhbmNpIDxuc2FuY2lAcmVkaGF0LmNvbT4KRGF0ZTog RnJpLCA5IEp1bCAyMDIxIDE0OjUzOjEwIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gZGVidWdpbmZv ZDogUFIyNzk4MyAtIGlnbm9yZSBkdXBsaWNhdGUgdXJscwoKR2F6aW5nIGF0IHNlcnZlciBsb2dz LCBvbmUgc2VlcyBhIG1pbm9yaXR5IG9mIGNsaWVudHMgd2hvIGFwcGVhciB0byBoYXZlCmR1cGxp Y2F0ZSBxdWVyeSB0cmFmZmljIGNvbWluZyBpbjogdGhlIHNhbWUgVVJMLCBtaWxsaXNlY29uZHMg YXBhcnQuCkNoYW5jZXMgYXJlIHRoZSB1c2VyIGFjY2lkZW50YWxseSBkb3VibGVkIGhlciAkREVC VUdJTkZPRF9VUkxTIHNvbWVob3csCmFuZCB0aGUgY2xpZW50IGxpYnJhcnkgaXMgZHV0aWZ1bGx5 IGFza2luZyB0aGUgc2VydmVycyBUV0lDRS4gQnVnICMyNzg2MwpyZWR1Y2VzIHRoZSBwYWluIG9u IHRoZSBzZXJ2ZXJzJyBDUFUsIGJ1dCBkdXBlIG5ldHdvcmsgdHJhZmZpYyBpcyBzdGlsbApiZWlu ZyBwYWlkLiAgV2Ugc2hvdWxkIHJlamVjdCBzZW5kaW5nIG91dHJpZ2h0IGR1cGxpY2F0ZSBjb25j dXJyZW50CnRyYWZmaWMuClRoZSB1cmxzIGFyZSBub3cgc2ltcGx5IHJlbW92ZWQgdXBvbiBmaW5k aW5nIGEgZHVwbGljYXRlIGFmdGVyIHVybApjb25zdHJ1Y3Rpb24uCgpodHRwczovL3NvdXJjZXdh cmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNzk4MwoKU2lnbmVkLW9mZi1ieTogTm9h aCBTYW5jaSA8bnNhbmNpQHJlZGhhdC5jb20+Ci0tLQogZGVidWdpbmZvZC9DaGFuZ2VMb2cgICAg ICAgICAgIHwgICA5ICsrKwogZGVidWdpbmZvZC9kZWJ1Z2luZm9kLWNsaWVudC5jIHwgMTA0ICsr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogdGVzdHMvQ2hhbmdlTG9nICAgICAgICAg ICAgICAgIHwgICA2ICsrCiB0ZXN0cy9ydW4tZGVidWdpbmZvZC1maW5kLnNoICAgfCAgMTEgKysr KwogNCBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kZWJ1Z2luZm9kL0NoYW5nZUxvZyBiL2RlYnVnaW5mb2QvQ2hhbmdlTG9nCmlu ZGV4IDc3MDljMjRkLi44MWViNTZmOSAxMDA2NDQKLS0tIGEvZGVidWdpbmZvZC9DaGFuZ2VMb2cK KysrIGIvZGVidWdpbmZvZC9DaGFuZ2VMb2cKQEAgLTM0LDYgKzM0LDE1IEBACiAJKHBhcnNlX29w dCk6IEhhbmRsZSAncicgb3B0aW9uIGJ5IHNldHRpbmcgcmVnZXhfZ3Jvb20gdG8gdHJ1ZS4KIAko Z3Jvb20pOiBJbnRyb2R1Y2UgYW5kIHVzZSByZWdfaW5jbHVkZSBhbmQgcmVnX2V4Y2x1ZGUuCiAK KzIwMjEtMDctMDkgIE5vYWggU2FuY2kgIDxuc2FuY2lAcmVkaGF0LmNvbT4KKworCVBSMjc5ODMK KwkqIGRlYnVnaW5mb2QtY2xpZW50LmMgKGRlYnVnaW5mb2RfcXVlcnlfc2VydmVyKTogQXMgZnVs bC1sZW5ndGgKKwl1cmxzIGFyZSBnZW5lcmF0ZWQgd2l0aCBzdGFuZGFyZGl6ZWQgZm9ybWF0cywg aWdub3JlIGR1cGxpY2F0ZXMuCisJQ3JlYXRlZCBvdXQxIGFuZCBjaGFuZ2VkIG91dDIgZXJyb3Ig Z290b3MuIFVwZGF0ZWQgdXJsIGNyZWF0aW9uIHByaW50CisJc3RhdGVtZW50cy4KKwkoZ2xvYmFs cyk6IFJlbW92ZWQgdXJsX2RlbGltX2NoYXIsIGFzIGl0IHdhcyBubyBsb25nZXIgdXNlZC4KKwog MjAyMS0wNi0xOCAgTWFyayBXaWVsYWFyZCAgPG1hcmtAa2xvbXAub3JnPgogCiAJKiBkZWJ1Z2lu Zm9kLWNsaWVudC5jIChkZWJ1Z2luZm9kX2JlZ2luKTogRG9uJ3QgdXNlIGNsaWVudCBpZgpkaWZm IC0tZ2l0IGEvZGVidWdpbmZvZC9kZWJ1Z2luZm9kLWNsaWVudC5jIGIvZGVidWdpbmZvZC9kZWJ1 Z2luZm9kLWNsaWVudC5jCmluZGV4IDI2YmExODkxLi41YWZlZmJmYSAxMDA2NDQKLS0tIGEvZGVi dWdpbmZvZC9kZWJ1Z2luZm9kLWNsaWVudC5jCisrKyBiL2RlYnVnaW5mb2QvZGVidWdpbmZvZC1j bGllbnQuYwpAQCAtMTUyLDcgKzE1Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjYWNoZV94ZGdf bmFtZSA9ICJkZWJ1Z2luZm9kX2NsaWVudCI7CiAKIC8qIFVSTHMgb2YgZGVidWdpbmZvZHMsIHNl cGFyYXRlZCBieSB1cmxfZGVsaW0uICovCiBzdGF0aWMgY29uc3QgY2hhciAqdXJsX2RlbGltID0g ICIgIjsKLXN0YXRpYyBjb25zdCBjaGFyIHVybF9kZWxpbV9jaGFyID0gJyAnOwogCiAvKiBUaW1l b3V0IGZvciBkZWJ1Z2luZm9kcywgaW4gc2Vjb25kcyAodG8gZ2V0IGF0IGxlYXN0IDEwMEspLiAq Lwogc3RhdGljIGNvbnN0IGxvbmcgZGVmYXVsdF90aW1lb3V0ID0gOTA7CkBAIC03NjUsMTMgKzc2 NCw2MCBAQCBkZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlciAoZGVidWdpbmZvZF9jbGllbnQgKmMsCiAg ICAgICBnb3RvIG91dDA7CiAgICAgfQogCisgIC8qIEluaXRpYWxpemUgdGhlIG1lbW9yeSB0byB6 ZXJvICovCisgIGNoYXIgKnN0cnRva19zYXZlcHRyOworICBjaGFyICoqc2VydmVyX3VybF9saXN0 ID0gTlVMTDsKKyAgY2hhciAqc2VydmVyX3VybCA9IHN0cnRva19yKHNlcnZlcl91cmxzLCB1cmxf ZGVsaW0sICZzdHJ0b2tfc2F2ZXB0cik7CiAgIC8qIENvdW50IG51bWJlciBvZiBVUkxzLiAgKi8K ICAgaW50IG51bV91cmxzID0gMDsKLSAgZm9yIChpbnQgaSA9IDA7IHNlcnZlcl91cmxzW2ldICE9 ICdcMCc7IGkrKykKLSAgICBpZiAoc2VydmVyX3VybHNbaV0gIT0gdXJsX2RlbGltX2NoYXIKLSAg ICAgICAgJiYgKGkgPT0gMCB8fCBzZXJ2ZXJfdXJsc1tpIC0gMV0gPT0gdXJsX2RlbGltX2NoYXIp KQotICAgICAgbnVtX3VybHMrKzsKLSAgCisKKyAgd2hpbGUgKHNlcnZlcl91cmwgIT0gTlVMTCkK KyAgICB7CisgICAgICAvKiBQUiAyNzk4MzogSWYgdGhlIHVybCBpcyBhbHJlYWR5IHNldCB0byBi ZSB1c2VkIHVzZSwgc2tpcCBpdCAqLworICAgICAgY2hhciAqc2xhc2hidWlsZGlkOworICAgICAg aWYgKHN0cmxlbihzZXJ2ZXJfdXJsKSA+IDEgJiYgc2VydmVyX3VybFtzdHJsZW4oc2VydmVyX3Vy bCktMV0gPT0gJy8nKQorICAgICAgICBzbGFzaGJ1aWxkaWQgPSAiYnVpbGRpZCI7CisgICAgICBl bHNlCisgICAgICAgIHNsYXNoYnVpbGRpZCA9ICIvYnVpbGRpZCI7CisKKyAgICAgIGNoYXIgKnRt cF91cmw7CisgICAgICBpZiAoYXNwcmludGYoJnRtcF91cmwsICIlcyVzIiwgc2VydmVyX3VybCwg c2xhc2hidWlsZGlkKSA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgIHJjID0gLUVOT01FTTsK KyAgICAgICAgICBnb3RvIG91dDE7CisgICAgICAgIH0KKyAgICAgIGludCB1cmxfaW5kZXg7Cisg ICAgICBmb3IgKHVybF9pbmRleCA9IDA7IHVybF9pbmRleCA8IG51bV91cmxzOyArK3VybF9pbmRl eCkKKyAgICAgICAgeworICAgICAgICAgIGlmKHN0cmNtcCh0bXBfdXJsLCBzZXJ2ZXJfdXJsX2xp c3RbdXJsX2luZGV4XSkgPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgdXJsX2lu ZGV4ID0gLTE7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgICBpZiAodXJsX2luZGV4ID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgaWYgKHZm ZCA+PSAwKQorICAgICAgICAgICAgZHByaW50Zih2ZmQsICJkdXBsaWNhdGUgdXJsOiAlcywgc2tp cHBpbmdcbiIsIHRtcF91cmwpOworICAgICAgICAgIGZyZWUodG1wX3VybCk7CisgICAgICAgIH0K KyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIG51bV91cmxzKys7CisgICAgICAgICAg Y2hhciAqKiByZWFsbG9jX3B0cjsKKyAgICAgICAgICByZWFsbG9jX3B0ciA9IHJlYWxsb2NhcnJh eShzZXJ2ZXJfdXJsX2xpc3QsIG51bV91cmxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YoY2hhciopKTsKKyAgICAgICAgICBpZiAocmVhbGxvY19wdHIg PT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcmMgPSAtRU5PTUVNOworICAg ICAgICAgICAgICBnb3RvIG91dDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgc2VydmVyX3Vy bF9saXN0ID0gcmVhbGxvY19wdHI7CisgICAgICAgICAgc2VydmVyX3VybF9saXN0W251bV91cmxz LTFdID0gdG1wX3VybDsKKyAgICAgICAgfQorICAgICAgc2VydmVyX3VybCA9IHN0cnRva19yKE5V TEwsIHVybF9kZWxpbSwgJnN0cnRva19zYXZlcHRyKTsKKyAgICB9CisKICAgaW50IHJldHJ5X2xp bWl0ID0gZGVmYXVsdF9yZXRyeV9saW1pdDsKICAgY29uc3QgY2hhciogcmV0cnlfbGltaXRfZW52 dmFyID0gZ2V0ZW52KERFQlVHSU5GT0RfUkVUUllfTElNSVRfRU5WX1ZBUik7CiAgIGlmIChyZXRy eV9saW1pdF9lbnZ2YXIgIT0gTlVMTCkKQEAgLTgwNCwxMiArODUwLDExIEBAIGRlYnVnaW5mb2Rf cXVlcnlfc2VydmVyIChkZWJ1Z2luZm9kX2NsaWVudCAqYywKICAgICAgIGRhdGFbaV0uZXJyYnVm WzBdID0gJ1wwJzsKICAgICB9CiAKLSAgY2hhciAqc3RydG9rX3NhdmVwdHI7Ci0gIGNoYXIgKnNl cnZlcl91cmwgPSBzdHJ0b2tfcihzZXJ2ZXJfdXJscywgdXJsX2RlbGltLCAmc3RydG9rX3NhdmVw dHIpOwotCiAgIC8qIEluaXRpYWxpemUgZWFjaCBoYW5kbGUuICAqLwotICBmb3IgKGludCBpID0g MDsgaSA8IG51bV91cmxzICYmIHNlcnZlcl91cmwgIT0gTlVMTDsgaSsrKQorICBmb3IgKGludCBp ID0gMDsgaSA8IG51bV91cmxzOyBpKyspCiAgICAgeworICAgICAgaWYgKChzZXJ2ZXJfdXJsID0g c2VydmVyX3VybF9saXN0W2ldKSA9PSBOVUxMKQorICAgICAgICBicmVhazsKICAgICAgIGlmICh2 ZmQgPj0gMCkKIAlkcHJpbnRmICh2ZmQsICJpbml0IHNlcnZlciAlZCAlc1xuIiwgaSwgc2VydmVy X3VybCk7CiAKQEAgLTgxOSwxOCArODY0LDEwIEBAIGRlYnVnaW5mb2RfcXVlcnlfc2VydmVyIChk ZWJ1Z2luZm9kX2NsaWVudCAqYywKICAgICAgIGlmIChkYXRhW2ldLmhhbmRsZSA9PSBOVUxMKQog ICAgICAgICB7CiAgICAgICAgICAgcmMgPSAtRU5FVFVOUkVBQ0g7Ci0gICAgICAgICAgZ290byBv dXQxOworICAgICAgICAgIGdvdG8gb3V0MjsKICAgICAgICAgfQogICAgICAgZGF0YVtpXS5jbGll bnQgPSBjOwogCi0gICAgICAvKiBCdWlsZCBoYW5kbGUgdXJsLiBUb2xlcmF0ZSBib3RoICBodHRw Oi8vZm9vOjk5OSAgYW5kCi0gICAgICAgICBodHRwOi8vZm9vOjk5OS8gIGZvcm1zICovCi0gICAg ICBjaGFyICpzbGFzaGJ1aWxkaWQ7Ci0gICAgICBpZiAoc3RybGVuKHNlcnZlcl91cmwpID4gMSAm JiBzZXJ2ZXJfdXJsW3N0cmxlbihzZXJ2ZXJfdXJsKS0xXSA9PSAnLycpCi0gICAgICAgIHNsYXNo YnVpbGRpZCA9ICJidWlsZGlkIjsKLSAgICAgIGVsc2UKLSAgICAgICAgc2xhc2hidWlsZGlkID0g Ii9idWlsZGlkIjsKLQogICAgICAgaWYgKGZpbGVuYW1lKSAvKiBtdXN0IHN0YXJ0IHdpdGggLyAq LwogICAgICAgICB7CiAgICAgICAgICAgLyogUFIyODAzNCBlc2NhcGUgY2hhcmFjdGVycyBpbiBj b21wbGV0ZWQgdXJsIHRvICVoaCBmb3JtYXQuICovCkBAIC04NDEsMTQgKzg3OCwxMiBAQCBkZWJ1 Z2luZm9kX3F1ZXJ5X3NlcnZlciAoZGVidWdpbmZvZF9jbGllbnQgKmMsCiAgICAgICAgICAgICAg IHJjID0gLUVOT01FTTsKICAgICAgICAgICAgICAgZ290byBvdXQxOwogICAgICAgICAgICAgfQot ICAgICAgICAgIHNucHJpbnRmKGRhdGFbaV0udXJsLCBQQVRIX01BWCwgIiVzJXMvJXMvJXMlcyIs IHNlcnZlcl91cmwsCi0gICAgICAgICAgICAgICAgICAgc2xhc2hidWlsZGlkLCBidWlsZF9pZF9i eXRlcywgdHlwZSwgZXNjYXBlZF9zdHJpbmcpOworICAgICAgICAgIHNucHJpbnRmKGRhdGFbaV0u dXJsLCBQQVRIX01BWCwgIiVzLyVzLyVzLyVzIiwgc2VydmVyX3VybCwKKyAgICAgICAgICAgICAg ICAgICBidWlsZF9pZF9ieXRlcywgdHlwZSwgZXNjYXBlZF9zdHJpbmcpOwogICAgICAgICAgIGN1 cmxfZnJlZShlc2NhcGVkX3N0cmluZyk7CiAgICAgICAgIH0KICAgICAgIGVsc2UKLSAgICAgICAg c25wcmludGYoZGF0YVtpXS51cmwsIFBBVEhfTUFYLCAiJXMlcy8lcy8lcyIsIHNlcnZlcl91cmws Ci0gICAgICAgICAgICAgICAgIHNsYXNoYnVpbGRpZCwgYnVpbGRfaWRfYnl0ZXMsIHR5cGUpOwot CisgICAgICAgIHNucHJpbnRmKGRhdGFbaV0udXJsLCBQQVRIX01BWCwgIiVzLyVzLyVzIiwgc2Vy dmVyX3VybCwgYnVpbGRfaWRfYnl0ZXMsIHR5cGUpOwogICAgICAgaWYgKHZmZCA+PSAwKQogCWRw cmludGYgKHZmZCwgInVybCAlZCAlc1xuIiwgaSwgZGF0YVtpXS51cmwpOwogCkBAIC04ODMsNyAr OTE4LDYgQEAgZGVidWdpbmZvZF9xdWVyeV9zZXJ2ZXIgKGRlYnVnaW5mb2RfY2xpZW50ICpjLAog ICAgICAgY3VybF9lYXN5X3NldG9wdChkYXRhW2ldLmhhbmRsZSwgQ1VSTE9QVF9IVFRQSEVBREVS LCBjLT5oZWFkZXJzKTsKIAogICAgICAgY3VybF9tdWx0aV9hZGRfaGFuZGxlKGN1cmxtLCBkYXRh W2ldLmhhbmRsZSk7Ci0gICAgICBzZXJ2ZXJfdXJsID0gc3RydG9rX3IoTlVMTCwgdXJsX2RlbGlt LCAmc3RydG9rX3NhdmVwdHIpOwogICAgIH0KIAogICAvKiBRdWVyeSBzZXJ2ZXJzIGluIHBhcmFs bGVsLiAgKi8KQEAgLTkyNyw3ICs5NjEsNyBAQCBkZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlciAoZGVi dWdpbmZvZF9jbGllbnQgKmMsCiAgICAgICAgICAgICBjYXNlIENVUkxNX09VVF9PRl9NRU1PUlk6 IHJjID0gLUVOT01FTTsgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OiByYyA9IC1FTkVUVU5S RUFDSDsgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgZ290byBvdXQxOworICAgICAg ICAgIGdvdG8gb3V0MjsKICAgICAgICAgfQogCiAgICAgICBpZiAoYy0+cHJvZ3Jlc3NmbikgLyog aW5mb3JtL2NoZWNrIHByb2dyZXNzIGNhbGxiYWNrICovCkBAIC0xMTE1LDcgKzExNDksNyBAQCBk ZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlciAoZGVidWdpbmZvZF9jbGllbnQgKmMsCiAJICAgIGdvdG8g cXVlcnlfaW5fcGFyYWxsZWw7CiAJfQogICAgICAgZWxzZQotCWdvdG8gb3V0MTsKKwlnb3RvIG91 dDI7CiAgICAgfQogCiAgIGlmICh2ZmQgPj0gMCkKQEAgLTExNDUsNyArMTE3OSw3IEBAIGRlYnVn aW5mb2RfcXVlcnlfc2VydmVyIChkZWJ1Z2luZm9kX2NsaWVudCAqYywKICAgaWYgKHJjIDwgMCkK ICAgICB7CiAgICAgICByYyA9IC1lcnJubzsKLSAgICAgIGdvdG8gb3V0MTsKKyAgICAgIGdvdG8g b3V0MjsKICAgICAgIC8qIFBlcmhhcHMgd2UgbmVlZCBub3QgZ2l2ZSB1cCByaWdodCBhd2F5OyBj b3VsZCByZXRyeSBvciBzb21ldGhpbmcgLi4uICovCiAgICAgfQogCkBAIC0xMTU1LDcgKzExODks MTAgQEAgZGVidWdpbmZvZF9xdWVyeV9zZXJ2ZXIgKGRlYnVnaW5mb2RfY2xpZW50ICpjLAogICAg ICAgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKGN1cmxtLCBkYXRhW2ldLmhhbmRsZSk7IC8qIG9r IHRvIHJlcGVhdCAqLwogICAgICAgY3VybF9lYXN5X2NsZWFudXAgKGRhdGFbaV0uaGFuZGxlKTsK ICAgICB9Ci0KKyAgCisgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3VybHM7ICsraSkKKyAgICBm cmVlKHNlcnZlcl91cmxfbGlzdFtpXSk7CisgIGZyZWUoc2VydmVyX3VybF9saXN0KTsKICAgZnJl ZSAoZGF0YSk7CiAgIGZyZWUgKHNlcnZlcl91cmxzKTsKIApAQCAtMTE2OCw3ICsxMjA1LDcgQEAg ZGVidWdpbmZvZF9xdWVyeV9zZXJ2ZXIgKGRlYnVnaW5mb2RfY2xpZW50ICpjLAogICBnb3RvIG91 dDsKIAogLyogZXJyb3IgZXhpdHMgKi8KLSBvdXQxOgorIG91dDI6CiAgIC8qIHJlbW92ZSBhbGwg aGFuZGxlcyBmcm9tIG11bHRpICovCiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3VybHM7IGkr KykKICAgICB7CkBAIC0xMTgxLDYgKzEyMTgsMTEgQEAgZGVidWdpbmZvZF9xdWVyeV9zZXJ2ZXIg KGRlYnVnaW5mb2RfY2xpZW50ICpjLAogICAodm9pZCkgcm1kaXIgKHRhcmdldF9jYWNoZV9kaXIp OyAvKiBub3AgaWYgbm90IGVtcHR5ICovCiAgIGZyZWUoZGF0YSk7CiAKKyBvdXQxOgorICBmb3Ig KGludCBpID0gMDsgaSA8IG51bV91cmxzOyArK2kpCisgICAgZnJlZShzZXJ2ZXJfdXJsX2xpc3Rb aV0pOworICBmcmVlKHNlcnZlcl91cmxfbGlzdCk7CisKICBvdXQwOgogICBmcmVlIChzZXJ2ZXJf dXJscyk7CiAKQEAgLTEyMTMsNyArMTI1NSw3IEBAIGRlYnVnaW5mb2RfcXVlcnlfc2VydmVyIChk ZWJ1Z2luZm9kX2NsaWVudCAqYywKICAgZnJlZSAodGFyZ2V0X2NhY2hlX2Rpcik7CiAgIGZyZWUg KHRhcmdldF9jYWNoZV9wYXRoKTsKICAgZnJlZSAodGFyZ2V0X2NhY2hlX3RtcHBhdGgpOwotICBy ZXR1cm4gcmM7CisgICAgcmV0dXJuIHJjOwogfQogCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL0NoYW5n ZUxvZyBiL3Rlc3RzL0NoYW5nZUxvZwppbmRleCAzYmU5ZWU0OC4uZGJhNzUwZTQgMTAwNjQ0Ci0t LSBhL3Rlc3RzL0NoYW5nZUxvZworKysgYi90ZXN0cy9DaGFuZ2VMb2cKQEAgLTMwLDYgKzMwLDEy IEBACiAJKiBydW4tZGVidWdpbmZvZC1maW5kLnNoOiBBZGRlZCB0ZXN0IGNhc2UgZm9yIGdyb29t aW5nIHRoZSBkYXRhYmFzZQogCXVzaW5nIHJlZ2V4ZXMuIAogCisyMDIxLTA3LTA5ICBOb2FoIFNh bmNpICA8bnNhbmNpQHJlZGhhdC5jb20+CisKKwlQUjI3OTgzCisJKiBydW4tZGVidWdpbmZvZC1m aW5kLnNoOiBXcm90ZSB0ZXN0IHRvIGVuc3VyZSBkdXBsaWNhdGUgdXJscyBhcmUgaW4KKwlmYWN0 IG5vdCBjaGVja2VkLgorCiAyMDIxLTA3LTA4ICBNYXJrIFdpZWxhYXJkICA8bWFya0BrbG9tcC5v cmc+CiAKIAkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogRml4IHR5cG8gdGVzdGZpbGUtbGFy Z2VhbGlnbi5iejIgd2FzCmRpZmYgLS1naXQgYS90ZXN0cy9ydW4tZGVidWdpbmZvZC1maW5kLnNo IGIvdGVzdHMvcnVuLWRlYnVnaW5mb2QtZmluZC5zaAppbmRleCA5NDdjMTI2MS4uNDRlMTYyNDIg MTAwNzU1Ci0tLSBhL3Rlc3RzL3J1bi1kZWJ1Z2luZm9kLWZpbmQuc2gKKysrIGIvdGVzdHMvcnVu LWRlYnVnaW5mb2QtZmluZC5zaApAQCAtMzY0LDYgKzM2NCwxNyBAQCBybSAtcmYgZXh0cmFjdGVk CiAKIHdhaXRfcmVhZHkgJFBPUlQxICdmb3VuZF9zb3VyY2VyZWZzX3RvdGFse3NvdXJjZT0iLnJw bSBhcmNoaXZlIn0nICRzb3VyY2VmaWxlcwogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUFIyNzk4MyBl bnN1cmUgbm8gZHVwbGljYXRlIHVybHMgYXJlIHVzZWQgaW4gd2hlbiBxdWVyeWluZyBzZXJ2ZXJz IGZvciBmaWxlcworcm0gLXJmICRERUJVR0lORk9EX0NBQ0hFX1BBVEggIyBjbGVhbiBpdCBmcm9t IHByZXZpb3VzIHRlc3RzCitlbnYgREVCVUdJTkZPRF9VUkxTPSJodHRwOi8vMTI3LjAuMC4xOiRQ T1JUMSBodHRwOi8vMTI3LjAuMC4xOiRQT1JUMSBodHRwOi8vMTI3LjAuMC4xOiRQT1JUMSBodHRw OjEyNy4wLjAuMTo3OTk5IiBcCisgTERfTElCUkFSWV9QQVRIPSRsZHBhdGggJHthYnNfdG9wX2J1 aWxkZGlyfS9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QtZmluZCAtdiBleGVjdXRhYmxlICRCVUlMRElE MiA+IHZsb2c0IDI+JjEgfHwgdHJ1ZQordGVtcGZpbGVzIHZsb2c0CitpZiBbICQoIGdyZXAgLWMg J2R1cGxpY2F0ZSB1cmw6IGh0dHA6Ly8xMjcuMC4wLjE6JyRQT1JUMScuKicgdmxvZzQgKSAtbmUg MiBdOyB0aGVuCisgIGVjaG8gIkR1cGxpY2F0ZWQgc2VydmVycyByZW1haW4iOworICBlcnIKK2Zp CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKICMgUnVuIGEgYmFuayBvZiBxdWVyaWVzIGFnYWluc3QgdGhlIGRl YnVnaW5mb2QtcnBtcyAvIGRlYnVnaW5mb2QtZGVicyB0ZXN0IGNhc2VzCiAKIGFyY2hpdmVfdGVz dCgpIHsKLS0gCjIuMzEuMQoK --000000000000fa01ff05c831675f--