From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/14426 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: James Y Knight Newsgroups: gmane.linux.lib.musl.general Subject: [PATCH] In glob(), do not require that the target of a symlink exists. Date: Mon, 22 Jul 2019 20:37:38 -0400 Message-ID: Reply-To: musl@lists.openwall.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000fb17d5058e4e6703" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="158932"; mail-complaints-to="usenet@blaine.gmane.org" To: musl@lists.openwall.com Original-X-From: musl-return-14442-gllmg-musl=m.gmane.org@lists.openwall.com Tue Jul 23 02:38:23 2019 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.89) (envelope-from ) id 1hpiow-000fGX-Pz for gllmg-musl@m.gmane.org; Tue, 23 Jul 2019 02:38:23 +0200 Original-Received: (qmail 21521 invoked by uid 550); 23 Jul 2019 00:38:20 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 20463 invoked from network); 23 Jul 2019 00:38:19 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=4vcboJ13xIYYqgeswQUTRGNFH2GD7K1IDj7sZvP7ZlA=; b=uqYvOaK261CcDE3CJ6PJokwYkXUEakawY/m4vDoYoz9+ekHUo60RmmVZanePbsgi6Z O5u0A7Kfpmqee1z3WVAYP9ZG+i8i5PgCqU3GHEisuVCGzICnPmcrMjO9gwhlE/CMgdeR 8AbQK+SFmXNxfeJCWuLmKUFln8eVe4ipSTlIuHZbODpv885p4hL6GmrI1u7rThrQzzDt Ii3M8Gfv0bgbuAvI+seKFf0kRKKrzZG4CsfqF3G8q8vxE9kgnaAgOB+BIcpVBqMkhR/M ScWOy8wt3X4iGaRqRekww8QOuB0Y4gP4YPOHms3TD+rAmFGW/cd7Ig/qlhD60nXgjgPw o8cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=4vcboJ13xIYYqgeswQUTRGNFH2GD7K1IDj7sZvP7ZlA=; b=GOoDVOCubAN9gzglrTUKMjiuwPiw2sTTQCtrRqRtkuvxGkXgMb0Tn41K/dvrCqhQmC HFtVJegOu0z+OTwAzHWxy42PFhAWZMo51yFSwleMwFCkIkC9VLmeDin/cNyoyV5hJYG6 9JpEKTnjEhhp298bMaxjec0H6MtC7Rk3KLsKyn5pY+MUzKXnjeX1Fa7SeYPDPIM6ytxW 7XUnpMBwNfrOUt8Mey9AJbA8deXmnnUYbUg8GoGSUxYR3thh6G64v+bsfbkjRXECMgCs /RzbffC43A4+EYOY0sUDZRtJtuBzDmpHrO7mXXGkPs8XsuvdxEM17AcAZvsZgW6Zinb0 NT9w== X-Gm-Message-State: APjAAAUfmiG4Nc5XC6XCRTQJjDsMfW4gk4725Y5Y5WXACVsDPfmf+j2m +fsM1nQuzGYRI3oCgAVRZCsj4itY0rEDUojdxj4wWBqQaqw= X-Google-Smtp-Source: APXvYqw13G7qLRxMm6BDsKVU6y566QnLq3ojB6NVr2eC1m3H7uszuXFMuGMjQoNYewOX2s9HY7OwnYHecUOu/lSTOpM= X-Received: by 2002:ab0:66:: with SMTP id 93mr20499809uai.135.1563842286449; Mon, 22 Jul 2019 17:38:06 -0700 (PDT) Xref: news.gmane.org gmane.linux.lib.musl.general:14426 Archived-At: --000000000000fb17d5058e4e6703 Content-Type: text/plain; charset="UTF-8" Previously, when given a trailing path component with no metacharacters, glob would call stat to check if the provided filename existed, which would fail on a broken symlink. When expanding a pattern however, glob would trust the list of files returned by readdir, and thus would return broken symlinks. Now, be consistent and allow broken symlinks in both cases, by using lstat to determine file existence. If GLOB_MARK is specified, stat must still be used to determine whether a given name refers to a directory or file. But if that fails, a symlink is simply considered to be a file for marking purposes. --000000000000fb17d5058e4e6703 Content-Type: application/octet-stream; name="0001-In-glob-do-not-require-that-the-target-of-a-symlink-.patch" Content-Disposition: attachment; filename="0001-In-glob-do-not-require-that-the-target-of-a-symlink-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jyf3934h0 RnJvbSA3ZWYwZmFiZjE3M2Y0ZDI5NDYxYjAxY2NmYjA1YzFmMTk5NzdiYTM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYW1lcyBZIEtuaWdodCA8anlrbmlnaHRAZ29vZ2xlLmNvbT4K RGF0ZTogVGh1LCAxMSBKdWwgMjAxOSAxNjo1NToxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIElu IGdsb2IoKSwgZG8gbm90IHJlcXVpcmUgdGhhdCB0aGUgdGFyZ2V0IG9mIGEgc3ltbGluawogZXhp c3RzLgoKUHJldmlvdXNseSwgd2hlbiBnaXZlbiBhIHRyYWlsaW5nIHBhdGggY29tcG9uZW50IHdp dGggbm8KbWV0YWNoYXJhY3RlcnMsIGdsb2Igd291bGQgY2FsbCBzdGF0IHRvIGNoZWNrIGlmIHRo ZSBwcm92aWRlZCBmaWxlbmFtZQpleGlzdGVkLCB3aGljaCB3b3VsZCBmYWlsIG9uIGEgYnJva2Vu IHN5bWxpbmsuIFdoZW4gZXhwYW5kaW5nIGEKcGF0dGVybiBob3dldmVyLCBnbG9iIHdvdWxkIHRy dXN0IHRoZSBsaXN0IG9mIGZpbGVzIHJldHVybmVkIGJ5CnJlYWRkaXIsIGFuZCB0aHVzIHdvdWxk IHJldHVybiBicm9rZW4gc3ltbGlua3MuCgpOb3csIGJlIGNvbnNpc3RlbnQgYW5kIGFsbG93IGJy b2tlbiBzeW1saW5rcyBpbiBib3RoIGNhc2VzLCBieSB1c2luZwpsc3RhdCB0byBkZXRlcm1pbmUg ZmlsZSBleGlzdGVuY2UuCgpJZiBHTE9CX01BUksgaXMgc3BlY2lmaWVkLCBzdGF0IG11c3Qgc3Rp bGwgYmUgdXNlZCB0byBkZXRlcm1pbmUKd2hldGhlciBhIGdpdmVuIG5hbWUgcmVmZXJzIHRvIGEg ZGlyZWN0b3J5IG9yIGZpbGUuIEJ1dCBpZiB0aGF0IGZhaWxzLAphIHN5bWxpbmsgaXMgc2ltcGx5 IGNvbnNpZGVyZWQgdG8gYmUgYSBmaWxlIGZvciBtYXJraW5nIHB1cnBvc2VzLgotLS0KIHNyYy9y ZWdleC9nbG9iLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9yZWdleC9nbG9iLmMgYi9zcmMvcmVnZXgvZ2xvYi5jCmluZGV4IGFhMWM2YTQ0Li4w MWIxNzhkYyAxMDA2NDQKLS0tIGEvc3JjL3JlZ2V4L2dsb2IuYworKysgYi9zcmMvcmVnZXgvZ2xv Yi5jCkBAIC04OCwxOCArODgsMzMgQEAgc3RhdGljIGludCBkb19nbG9iKGNoYXIgKmJ1Ziwgc2l6 ZV90IHBvcywgaW50IHR5cGUsIGNoYXIgKnBhdCwgaW50IGZsYWdzLCBpbnQgKCoKIAl9CiAJYnVm W3Bvc10gPSAwOwogCWlmICghKnBhdCkgewotCQkvKiBJZiB3ZSBjb25zdW1lZCBhbnkgY29tcG9u ZW50cyBhYm92ZSwgb3IgaWYgR0xPQl9NQVJLIGlzCi0JCSAqIHJlcXVlc3RlZCBhbmQgd2UgZG9u J3QgeWV0IGtub3cgaWYgdGhlIG1hdGNoIGlzIGEgZGlyLAotCQkgKiB3ZSBtdXN0IGNhbGwgc3Rh dCB0byBjb25maXJtIHRoZSBmaWxlIGV4aXN0cyBhbmQvb3IKLQkJICogZGV0ZXJtaW5lIGl0cyB0 eXBlLiAqLworCQkvKiBJZiB3ZSdyZSBpbiBhdCB0aGUgZW5kIG9mIHRoZSBwYXR0ZXJuLCBjaGVj ayBpZiB0aGUgZmlsZQorCQkgKiBleGlzdHMuIEFuZCwgaWYgR0xPQl9NQVJLIGlzIHJlcXVlc3Rl ZCwgZGV0ZXJtaW5lIGlmIGl0J3MgYQorCQkgKiBkaXJlY3RvcnkuICovCiAJCXN0cnVjdCBzdGF0 IHN0OwotCQlpZiAoKGZsYWdzICYgR0xPQl9NQVJLKSAmJiB0eXBlPT1EVF9MTkspIHR5cGUgPSAw OwotCQlpZiAoIXR5cGUgJiYgc3RhdChidWYsICZzdCkpIHsKLQkJCWlmIChlcnJubyE9RU5PRU5U ICYmIChlcnJmdW5jKGJ1ZiwgZXJybm8pIHx8IChmbGFncyAmIEdMT0JfRVJSKSkpCi0JCQkJcmV0 dXJuIEdMT0JfQUJPUlRFRDsKLQkJCXJldHVybiAwOworCQlpZiAoZmxhZ3MgJiBHTE9CX01BUksp IHsKKwkJCS8qIFdlIG5lZWQgdG8ga25vdyBpZiB0aGUgbmFtZSByZWZlcnMgdG8gYSBkaXJlY3Rv cnkKKwkJCSAqIChhZnRlciByZXNvbHZpbmcgc3ltbGlua3MpLgorCQkJICoKKwkJCSAqIEhvd2V2 ZXIsIGJyb2tlbiBzeW1saW5rcyBzaG91bGQgYmUgY29uc2lkZXJlZCB0byBiZSBhCisJCQkgKiBm aWxlLCByYXRoZXIgdGhhbiBub24tZXhpc3RlbnQgb3IgYW4gZXJyb3IsIHNvIGlmCisJCQkgKiBz dGF0IGZhaWxzLCB3ZSBqdXN0IGRvbid0IG1vZGlmeSB0eXBlLiAoQW5kIGxzdGF0CisJCQkgKiB3 aWxsIGJlIGNhbGxlZCBiZWxvdyBpZiByZXF1aXJlZC4pCisJCQkgKi8KKwkJCWlmICgoIXR5cGUg fHwgdHlwZT09RFRfTE5LKSAmJiBzdGF0KGJ1ZiwgJnN0KSA9PSAwKSB7CisJCQkJaWYoU19JU0RJ UihzdC5zdF9tb2RlKSkgdHlwZSA9IERUX0RJUjsKKwkJCQllbHNlIHR5cGUgPSBEVF9SRUc7CisJ CQl9CisJCX0KKwkJaWYgKCF0eXBlKSB7CisJCQkvKiBJZiB3ZSdyZSBkb24ndCBhbHJlYWR5IGtu b3cgdGhhdCB0aGUgZmlsZSBleGlzdHMsCisJCQkgKiBjb25maXJtIGl0cyBwcmVzZW5jZS4gKi8K KwkJCWlmIChsc3RhdChidWYsICZzdCkpIHsKKwkJCQlpZiAoZXJybm8hPUVOT0VOVCAmJiAoZXJy ZnVuYyhidWYsIGVycm5vKSB8fCAoZmxhZ3MgJiBHTE9CX0VSUikpKQorCQkJCQlyZXR1cm4gR0xP Ql9BQk9SVEVEOworCQkJCXJldHVybiAwOworCQkJfQogCQl9Ci0JCWlmICghdHlwZSAmJiBTX0lT RElSKHN0LnN0X21vZGUpKSB0eXBlID0gRFRfRElSOwogCQlpZiAoYXBwZW5kKHRhaWwsIGJ1Ziwg cG9zLCAoZmxhZ3MgJiBHTE9CX01BUkspICYmIHR5cGU9PURUX0RJUikpCiAJCQlyZXR1cm4gR0xP Ql9OT1NQQUNFOwogCQlyZXR1cm4gMDsKLS0gCjIuMjIuMC42NTcuZzk2MGU5MmQyNGYtZ29vZwoK --000000000000fb17d5058e4e6703 Content-Type: application/octet-stream; name="0001-Add-some-basic-tests-for-glob.patch" Content-Disposition: attachment; filename="0001-Add-some-basic-tests-for-glob.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jyf399kn1 RnJvbSA0ZTgyOGI3MjMwZDJkOGRmZWJlYzg3YWE5ZDI2MmVlMTBiOGU0NWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYW1lcyBZIEtuaWdodCA8anlrbmlnaHRAZ29vZ2xlLmNvbT4K RGF0ZTogTW9uLCAyMiBKdWwgMjAxOSAyMDoyNTozOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEFk ZCBzb21lIGJhc2ljIHRlc3RzIGZvciBnbG9iLgoKLS0tCiBzcmMvZnVuY3Rpb25hbC9nbG9iLmMg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxMzUgKysrKysrKysrKysrKysrKysrCiBzcmMvZnVu Y3Rpb25hbC9nbG9iLmRhdGEvYmFzaWMvZGlyL2ZpbGUgICAgICAgfCAgIDAKIHNyYy9mdW5jdGlv bmFsL2dsb2IuZGF0YS9iYXNpYy9maWxlICAgICAgICAgICB8ICAgMAogc3JjL2Z1bmN0aW9uYWwv Z2xvYi5kYXRhL2Jhc2ljL3N5bWxpbmstZGlyICAgIHwgICAxICsKIHNyYy9mdW5jdGlvbmFsL2ds b2IuZGF0YS9iYXNpYy9zeW1saW5rLWZpbGUgICB8ICAgMSArCiAuLi4vZ2xvYi5kYXRhL2Jyb2tl bi1saW5rcy9icm9rZW4tc3ltbGluayAgICAgfCAgIDEgKwogc3JjL2Z1bmN0aW9uYWwvZ2xvYi5k YXRhL3dlaXJkLWNoYXJzL2Zvby1bYV0gIHwgICAwCiBzcmMvZnVuY3Rpb25hbC9nbG9iLmRhdGEv d2VpcmQtY2hhcnMvZm9vLWEgICAgfCAgIDAKIDggZmlsZXMgY2hhbmdlZCwgMTM4IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZnVuY3Rpb25hbC9nbG9iLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvZnVuY3Rpb25hbC9nbG9iLmRhdGEvYmFzaWMvZGlyL2ZpbGUKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvZnVuY3Rpb25hbC9nbG9iLmRhdGEvYmFzaWMvZmlsZQogY3JlYXRl IG1vZGUgMTIwMDAwIHNyYy9mdW5jdGlvbmFsL2dsb2IuZGF0YS9iYXNpYy9zeW1saW5rLWRpcgog Y3JlYXRlIG1vZGUgMTIwMDAwIHNyYy9mdW5jdGlvbmFsL2dsb2IuZGF0YS9iYXNpYy9zeW1saW5r LWZpbGUKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmMvZnVuY3Rpb25hbC9nbG9iLmRhdGEvYnJva2Vu LWxpbmtzL2Jyb2tlbi1zeW1saW5rCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Z1bmN0aW9uYWwv Z2xvYi5kYXRhL3dlaXJkLWNoYXJzL2Zvby1bYV0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZnVu Y3Rpb25hbC9nbG9iLmRhdGEvd2VpcmQtY2hhcnMvZm9vLWEKCmRpZmYgLS1naXQgYS9zcmMvZnVu Y3Rpb25hbC9nbG9iLmMgYi9zcmMvZnVuY3Rpb25hbC9nbG9iLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNjlmZmVhNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9mdW5jdGlv bmFsL2dsb2IuYwpAQCAtMCwwICsxLDEzNSBAQAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1 ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGdsb2IuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisj aW5jbHVkZSAidGVzdC5oIgorCitnbG9iX3QgZ2xvYmJ1ZjsKKworaW50IHBhdGhzX21hdGNoKGlu dCBleHBlY3RlZF9udW0sIGNvbnN0IGNoYXIgKipleHBlY3RlZCkgeworCWlmIChnbG9iYnVmLmds X3BhdGhjICsgZ2xvYmJ1Zi5nbF9vZmZzICE9IGV4cGVjdGVkX251bSkKKwkJcmV0dXJuIDA7CisJ Zm9yIChpbnQgaSA9IDA7IGkgPCBleHBlY3RlZF9udW07ICsraSkgeworCQlpZiAoKGdsb2JidWYu Z2xfcGF0aHZbaV0gPT0gTlVMTCkgIT0gKGV4cGVjdGVkW2ldID09IE5VTEwpKQorCQkJcmV0dXJu IDA7CisJCWlmIChleHBlY3RlZFtpXSAmJiBzdHJjbXAoZ2xvYmJ1Zi5nbF9wYXRodltpXSwgZXhw ZWN0ZWRbaV0pICE9IDApCisJCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIDE7Cit9CisKK3ZvaWQg cHJpbnRfbWlzbWF0Y2goaW50IGV4cGVjdGVkX251bSwgY29uc3QgY2hhciAqKmV4cGVjdGVkKSB7 CisJdF9wcmludGYoIkV4cGVjdGVkIHBhdGhzICglZCk6XG4iLCBleHBlY3RlZF9udW0pOworCWZv ciAoaW50IGkgPSAwOyBpIDwgZXhwZWN0ZWRfbnVtOyArK2kpCisJCXRfcHJpbnRmKCIgICVzXG4i LCBleHBlY3RlZFtpXSA/IGV4cGVjdGVkW2ldIDogIk5VTEwiKTsKKwl0X3ByaW50ZigiR290IHBh dGhzICglZCk6XG4iLCBnbG9iYnVmLmdsX3BhdGhjICsgZ2xvYmJ1Zi5nbF9vZmZzKTsKKwlmb3Ig KGludCBpID0gMDsgaSA8IGdsb2JidWYuZ2xfcGF0aGMgKyBnbG9iYnVmLmdsX29mZnM7ICsraSkK KwkJdF9wcmludGYoIiAgJXNcbiIsIGdsb2JidWYuZ2xfcGF0aHYgPyBnbG9iYnVmLmdsX3BhdGh2 W2ldIDogIk5VTEwiKTsKK30KKworI2RlZmluZSBURVNUX05PRlJFRShwYXQsIGZsYWdzLCBleHBl Y3RlZF9yZXQsIC4uLikgZG8gewkJCVwKKwlpbnQgdGZsYWdzID0gZmxhZ3N8ZXh0cmFmbGFnczsJ CQkJCVwKKwlpbnQgcmV0ID0gZ2xvYihwYXQsIHRmbGFncywgTlVMTCwgJmdsb2JidWYpOwkJCVwK Kwljb25zdCBjaGFyICplW10gPSBfX1ZBX0FSR1NfXzsJCQkJCVwKKwlpZiAocmV0ICE9IGV4cGVj dGVkX3JldCkJCQkJCVwKKwkJdF9lcnJvcigiZ2xvYihcIiVzXCIsICVkKSBmYWlsZWQgKHJldHVy biAlZCwgZXhwZWN0ZWQgJWQpXG4iLCBcCisJCQlwYXQsIHRmbGFncywgcmV0LCBleHBlY3RlZF9y ZXQpOwkJXAorCWlmICghcGF0aHNfbWF0Y2goc2l6ZW9mKGUpL3NpemVvZigqZSksIGUpKSB7CQkJ XAorCQl0X2Vycm9yKCJnbG9iKFwiJXNcIiwgJWQpIHJldHVybmVkIHVuZXhwZWN0ZWQgcGF0aHMu XG4iLCBcCisJCQlwYXQsIHRmbGFncyk7CQkJCQlcCisJCXByaW50X21pc21hdGNoKHNpemVvZihl KS9zaXplb2YoKmUpLCBlKTsJCVwKKwl9CQkJCQkJCQlcCit9IHdoaWxlKDApCisKKyNkZWZpbmUg VEVTVChwYXQsIGZsYWdzLCBleHBlY3RlZF9yZXQsIC4uLikgZG8gewkJXAorCVRFU1RfTk9GUkVF KHBhdCwgZmxhZ3MsIGV4cGVjdGVkX3JldCwgX19WQV9BUkdTX18pOwlcCisJZ2xvYmZyZWUoJmds b2JidWYpOwkJCQkJXAorfSB3aGlsZSgwKQorCisjZGVmaW5lIFRFU1RfVU5NQVRDSChwYXQpIGRv IHsJCQkJCVwKKwlpZiAoZXh0cmFmbGFncyAmIEdMT0JfTk9DSEVDSykJCQkJXAorCQlURVNUKHBh dCwgZXh0cmFmbGFncywgMCwge3BhdH0pOwkJXAorCWVsc2UJCQkJCQkJXAorCQlURVNUKHBhdCwg ZXh0cmFmbGFncywgR0xPQl9OT01BVENILCB7fSk7CVwKK30gd2hpbGUoMCkKKworI2RlZmluZSBN QVJLKHN0cikgKChleHRyYWZsYWdzICYgR0xPQl9NQVJLKSA/IHN0ciAiLyIgOiBzdHIpCisKK3N0 YXRpYyB2b2lkIGRvX3Rlc3RzKGludCBleHRyYWZsYWdzKSB7CisJLy8gQ2hlY2sgYmFzaWMgZnVu Y3Rpb25pbmcgb2YgcGF0aHMKKwlURVNUKCJiYXNpYy9maWxlIiwgMCwKKwkgICAgIDAsIHsiYmFz aWMvZmlsZSJ9KTsKKwlURVNUKCJiYXNpYy9zeW1saW5rLWZpbGUiLCAwLAorCSAgICAgMCwgeyJi YXNpYy9zeW1saW5rLWZpbGUifSk7CisJVEVTVCgiYmFzaWMvZGlyIiwgMCwKKwkgICAgIDAsIHtN QVJLKCJiYXNpYy9kaXIiKX0pOworCVRFU1QoImJhc2ljL3N5bWxpbmstZGlyIiwgMCwKKwkgICAg IDAsIHtNQVJLKCJiYXNpYy9zeW1saW5rLWRpciIpfSk7CisJLy8gV2l0aCB0cmFpbGluZyBzbGFz aCBpbnB1dCwgYWx3YXlzIHJldHVybnMgYSB0cmFpbGluZyBzbGFzaAorCVRFU1QoImJhc2ljL2Rp ci8iLCAwLAorCSAgICAgMCwgeyJiYXNpYy9kaXIvIn0pOworCisJLy8gQW5kIHBhdHRlcm5zLi4u CisJVEVTVCgiYmFzaWMvKiIsIDAsCisJICAgICAwLCB7TUFSSygiYmFzaWMvZGlyIiksICJiYXNp Yy9maWxlIiwgTUFSSygiYmFzaWMvc3ltbGluay1kaXIiKSwgImJhc2ljL3N5bWxpbmstZmlsZSJ9 KTsKKwlURVNUKCJiYXNpYy9kP3IiLCAwLAorCSAgICAgMCwge01BUksoImJhc2ljL2RpciIpfSk7 CisJVEVTVCgiYmFzaWMvW2RmXT8/IiwgMCwKKwkgICAgIDAsIHtNQVJLKCJiYXNpYy9kaXIiKX0p OworCVRFU1QoImJhc2ljL2ZpW2xdZSIsIDAsCisJICAgICAwLCB7ImJhc2ljL2ZpbGUifSk7CisJ VEVTVCgiYmFzaWMvKi8iLCAwLAorCSAgICAgMCwgeyJiYXNpYy9kaXIvIiwgImJhc2ljL3N5bWxp bmstZGlyLyJ9KTsKKwlURVNUKCJiYXNpYy8qLyoiLCAwLAorCSAgICAgMCwgeyJiYXNpYy9kaXIv ZmlsZSIsICJiYXNpYy9zeW1saW5rLWRpci9maWxlIn0pOworCisJVEVTVCgid2VpcmQtY2hhcnMv Zm9vLVthXSIsIDAsCisJICAgICAwLCB7IndlaXJkLWNoYXJzL2Zvby1hIn0pOworCVRFU1QoIndl aXJkLWNoYXJzL2Zvby1cXFthXFxdIiwgMCwKKwkgICAgIDAsIHsid2VpcmQtY2hhcnMvZm9vLVth XSJ9KTsKKworCS8vIE5vbi1tYXRjaGluZyBwYXR0ZXJucworCVRFU1RfVU5NQVRDSCgiYmFzaWMv bm90LXRoZXJlIik7CisJVEVTVF9VTk1BVENIKCJiYXNpYy9ub3QtdGhlcmUqIik7CisJVEVTVF9V Tk1BVENIKCJiYXNpYy9ub3QtdGhlcmUvKiIpOworCS8vIEEgZmlsZSBjYW4ndCBiZSBzcGVjaWZp ZWQgd2l0aCBhIHRyYWlsaW5nIHNsYXNoCisJVEVTVF9VTk1BVENIKCJiYXNpYy9maWxlLyIpOwor CisJLy8gQ2hlY2sgR0xPQl9BUFBFTkQsIEdMT0JfRE9PRkZTLCBhbmQgYm90aCB0b2dldGhlcgor CWdsb2JidWYuZ2xfb2ZmcyA9IDI7IC8vIHNob3VsZCBiZSBpZ25vcmVkIHdpdGhvdXQgR0xPQl9E T09GRlMKKwlURVNUX05PRlJFRSgiYmFzaWMvZmlsZSIsIDAsCisJCSAgICAwLCB7ImJhc2ljL2Zp bGUifSk7CisJVEVTVCgiYmFzaWMvZGlyIiwgR0xPQl9BUFBFTkQsCisJICAgICAwLCB7ImJhc2lj L2ZpbGUiLCBNQVJLKCJiYXNpYy9kaXIiKX0pOworCisJZ2xvYmJ1Zi5nbF9vZmZzID0gMjsKKwlU RVNUX05PRlJFRSgiYmFzaWMvZmlsZSIsIEdMT0JfRE9PRkZTLAorCQkgICAgMCwge05VTEwsIE5V TEwsICJiYXNpYy9maWxlIn0pOworCVRFU1QoImJhc2ljL2RpciIsIEdMT0JfQVBQRU5EfEdMT0Jf RE9PRkZTLAorCSAgICAgMCwge05VTEwsIE5VTEwsICJiYXNpYy9maWxlIiwgTUFSSygiYmFzaWMv ZGlyIil9KTsKKworCS8vIENoZWNrIHByb3BlciBzdXBwb3J0IGZvciBicm9rZW4gc3ltbGlua3Mu IEJvdGggY29tcGxldGVseS1zcGVjaWZpZWQsCisJLy8gYW5kIHBhdHRlcm4gbWF0Y2hlZC4KKwlU RVNUKCJicm9rZW4tbGlua3MvYnJva2VuLXN5bWxpbmsiLCAwLAorCSAgICAgMCwgeyJicm9rZW4t bGlua3MvYnJva2VuLXN5bWxpbmsifSk7CisKKwlURVNUKCJicm9rZW4tbGlua3MvKiIsIDAsCisJ ICAgICAwLCB7ImJyb2tlbi1saW5rcy9icm9rZW4tc3ltbGluayJ9KTsKK30KKworCitpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJY2hhciBidWZbNTEyXTsKKwlpZiAoIXRfcGF0 aHJlbChidWYsIHNpemVvZiBidWYsIGFyZ3ZbMF0sICJnbG9iLmRhdGEiKSkgeworCQl0X2Vycm9y KCJmYWlsZWQgdG8gb2J0YWluIHJlbGF0aXZlIHBhdGggdG8gZ2xvYiBkYXRhXG4iKTsKKwkJcmV0 dXJuIDE7CisJfQorCWNoZGlyKGJ1Zik7CisKKwlkb190ZXN0cygwKTsKKwlkb190ZXN0cyhHTE9C X01BUkspOworCWRvX3Rlc3RzKEdMT0JfTk9DSEVDSyk7CisJcmV0dXJuIHRfc3RhdHVzOworfQpk aWZmIC0tZ2l0IGEvc3JjL2Z1bmN0aW9uYWwvZ2xvYi5kYXRhL2Jhc2ljL2Rpci9maWxlIGIvc3Jj L2Z1bmN0aW9uYWwvZ2xvYi5kYXRhL2Jhc2ljL2Rpci9maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKZGlmZiAtLWdpdCBhL3NyYy9mdW5jdGlvbmFsL2dsb2Iu ZGF0YS9iYXNpYy9maWxlIGIvc3JjL2Z1bmN0aW9uYWwvZ2xvYi5kYXRhL2Jhc2ljL2ZpbGUKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvc3Jj L2Z1bmN0aW9uYWwvZ2xvYi5kYXRhL2Jhc2ljL3N5bWxpbmstZGlyIGIvc3JjL2Z1bmN0aW9uYWwv Z2xvYi5kYXRhL2Jhc2ljL3N5bWxpbmstZGlyCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAw MDAwMDAuLjg3MjQ1MTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZnVuY3Rpb25hbC9nbG9iLmRh dGEvYmFzaWMvc3ltbGluay1kaXIKQEAgLTAsMCArMSBAQAorZGlyClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2Z1bmN0aW9uYWwvZ2xvYi5kYXRhL2Jhc2ljL3N5 bWxpbmstZmlsZSBiL3NyYy9mdW5jdGlvbmFsL2dsb2IuZGF0YS9iYXNpYy9zeW1saW5rLWZpbGUK bmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMC4uMWEwMTBiMQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9mdW5jdGlvbmFsL2dsb2IuZGF0YS9iYXNpYy9zeW1saW5rLWZpbGUKQEAgLTAs MCArMSBAQAorZmlsZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Yy9mdW5jdGlvbmFsL2dsb2IuZGF0YS9icm9rZW4tbGlua3MvYnJva2VuLXN5bWxpbmsgYi9zcmMv ZnVuY3Rpb25hbC9nbG9iLmRhdGEvYnJva2VuLWxpbmtzL2Jyb2tlbi1zeW1saW5rCm5ldyBmaWxl IG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAuLjQ1Njc5NGUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvZnVuY3Rpb25hbC9nbG9iLmRhdGEvYnJva2VuLWxpbmtzL2Jyb2tlbi1zeW1saW5rCkBAIC0w LDAgKzEgQEAKK25vLXN1Y2gtZmlsZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyYy9mdW5jdGlvbmFsL2dsb2IuZGF0YS93ZWlyZC1jaGFycy9mb28tW2FdIGIvc3Jj L2Z1bmN0aW9uYWwvZ2xvYi5kYXRhL3dlaXJkLWNoYXJzL2Zvby1bYV0KbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvc3JjL2Z1bmN0aW9uYWwv Z2xvYi5kYXRhL3dlaXJkLWNoYXJzL2Zvby1hIGIvc3JjL2Z1bmN0aW9uYWwvZ2xvYi5kYXRhL3dl aXJkLWNoYXJzL2Zvby1hCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRl MjkKLS0gCjIuMjIuMC42NTcuZzk2MGU5MmQyNGYtZ29vZwoK --000000000000fb17d5058e4e6703--