Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Feb 2000 11:00:39 -0500 (EST)
From:      Mike Heffner <mheffner@mailandnews.com>
To:        FreeBSD-audit <FreeBSD-audit@freebsd.org>
Subject:   hylafax patch #2 (fwd)
Message-ID:  <XFMail.20000226110039.mheffner@mailandnews.com>

next in thread | raw e-mail | index | archive | help
This message is in MIME format
--_=XFMail.1.4.4.FreeBSD:20000226110039:9639=_
Content-Type: text/plain; charset=us-ascii

Here's a new patch for hylafax that Sean Winn sent me. Just forwarding it
along incase someone has time to review.

--

-----FW: <Pine.BSF.4.21.0002261941430.37894-100000@vampire.gothic.net.au>-----

Date: Sat, 26 Feb 2000 19:53:29 +1100 (EST)
From: Sean Winn <sean@gothic.net.au>
To: Mike Heffner <spock@techfour.net>
Subject: RE: hylafax patch (fwd)
Cc: Kris Kennaway <kris@FreeBSD.org>, Alexander Langer <alex@big.endian.de>

On Thu, 24 Feb 2000, Mike Heffner wrote:

[snip]

Here is the same patch with the magic numbers replaced with sizeof, and
typos fixed ... it applies, compiles and installs. It still needs review of
course, to make sure it's covered all the bases on strcpy/snprintf.

What I've noticed is that it doesn't address any potential file races in the
slightest.

Whatever else is wrong with hylafax is still there; based on the number of
potential problems in it already just on the strcpy/sprintf front, I'd be
sure there are more.



-- 
Sean Winn
email: sean@gothic.net.au
All opinions valued at $0.02, and not subject to inflation.

--------------End of forwarded message-------------------------



-----FW: <Pine.BSF.4.21.0002261954070.42724-200000@vampire.gothic.net.au>-----

Date: Sat, 26 Feb 2000 19:55:24 +1100 (EST)
From: Sean Winn <sean@gothic.net.au>
To: Mike Heffner <spock@techfour.net>
Subject: RE: hylafax patch (fwd) - with patch this time.
Cc: Kris Kennaway <kris@FreeBSD.org>, Alexander Langer <alex@big.endian.de>

On Thu, 24 Feb 2000, Mike Heffner wrote:

Patch attached this time :)

-- 
Sean Winn
email: sean@gothic.net.au
All opinions valued at $0.02, and not subject to inflation.

--------------End of forwarded message-------------------------



/****************************************
 * Mike Heffner <spock@techfour.net>    *
 * Fredericksburg, VA -- ICQ# 882073    *
 * Sent at: 26-Feb-2000 -- 10:53:20 EST *
 * http://my.ispchannel.com/~mheffner   *
 ****************************************/

--_=XFMail.1.4.4.FreeBSD:20000226110039:9639=_
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-ah
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.21.0002261955100.42724@vampire.gothic.net.au>
Content-Description: 
Content-Disposition: attachment; filename=patch-ah

ZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs
Mi9mYXhhbHRlci9mYXhhbHRlci5jKysgLi9mYXhhbHRlci9mYXhhbHRlci5j
KysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwy
L2ZheGFsdGVyL2ZheGFsdGVyLmMrKwlTYXQgRmViIDE0IDExOjQ4OjM4IDE5
OTgNCisrKyAuL2ZheGFsdGVyL2ZheGFsdGVyLmMrKwlTdW4gRmViIDIwIDIy
OjE5OjI3IDIwMDANCkBAIC0xODUsNyArMTg1LDcgQEANCiAgICAgdmFfbGlz
dCBhcDsNCiAgICAgdmFfc3RhcnQoYXAsIGZtdDApOw0KICAgICBjaGFyIGZt
dFsxMDI0XTsNCi0gICAgc3ByaW50ZihmbXQsICIlcyAlc1xuIiwgZ3JvdXBz
ID8gIkpHUEFSTSIgOiAiSlBBUk0iLCBmbXQwKTsNCisgICAgc25wcmludGYo
Zm10LCBzaXplb2YgZm10LCAiJXMgJXNcbiIsIGdyb3VwcyA/ICJKR1BBUk0i
IDogIkpQQVJNIiwgZm10MCk7DQogICAgIHNjcmlwdC5hcHBlbmQoZnhTdHI6
OnZmb3JtYXQoZm10LCBhcCkpOw0KICAgICB2YV9lbmQoYXApOw0KIH0NCmRp
ZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIv
ZmF4ZC9DbGFzc01vZGVtLmMrKyAuL2ZheGQvQ2xhc3NNb2RlbS5jKysNCi0t
LSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQv
Q2xhc3NNb2RlbS5jKysJU2F0IEZlYiAxNCAxMTo0OToxNiAxOTk4DQorKysg
Li9mYXhkL0NsYXNzTW9kZW0uYysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAw
MA0KQEAgLTE2OSw3ICsxNjksNyBAQA0KIHsNCiAgICAgcHJvdG9UcmFjZSgi
RElBTCAlcyIsIG51bWJlcik7DQogICAgIGNoYXIgYnVmWzI1Nl07DQotICAg
IHNwcmludGYoYnVmLCAoY29uc3QgY2hhciopIGNvbmYuZGlhbENtZCwgbnVt
YmVyKTsNCisgICAgc25wcmludGYoYnVmLCBzaXplb2YgYnVmLCAoY29uc3Qg
Y2hhciopIGNvbmYuZGlhbENtZCwgbnVtYmVyKTsNCiAgICAgZW1zZyA9ICIi
Ow0KICAgICBDYWxsU3RhdHVzIGNzID0gKGF0Q21kKGJ1ZiwgQVRfTk9USElO
RykgPyBkaWFsUmVzcG9uc2UoZW1zZykgOiBGQUlMVVJFKTsNCiAgICAgaWYg
KGNzICE9IE9LICYmIGVtc2cgPT0gIiIpDQpkaWZmIC1ydSAvdG1wL29sZC9o
eWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQvRmF4TWFjaGluZUxv
Zy5jKysgLi9mYXhkL0ZheE1hY2hpbmVMb2cuYysrDQotLS0gL3RtcC9vbGQv
aHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9mYXhkL0ZheE1hY2hpbmVM
b2cuYysrCVNhdCBGZWIgMTQgMTE6NDk6MjEgMTk5OA0KKysrIC4vZmF4ZC9G
YXhNYWNoaW5lTG9nLmMrKwlTdW4gRmViIDIwIDIyOjE5OjI3IDIwMDANCkBA
IC03Nyw3ICs3Nyw3IEBADQogICAgIHRpbWV2YWwgdHY7DQogICAgICh2b2lk
KSBnZXR0aW1lb2ZkYXkoJnR2LCAwKTsNCiAgICAgc3RyZnRpbWUoYnVmLCBz
aXplb2YgKGJ1ZiksICIlaCAlZCAlVCIsIGxvY2FsdGltZSgodGltZV90Kikg
JnR2LnR2X3NlYykpOw0KLSAgICBzcHJpbnRmKGJ1ZitzdHJsZW4oYnVmKSwg
Ii4lMDJ1OiBbJTVkXTogIiwgdHYudHZfdXNlYyAvIDEwMDAwLCBwaWQpOw0K
KyAgICBzbnByaW50ZihidWYrc3RybGVuKGJ1ZiksIHNpemVvZiBidWYgLSAo
c3RybGVuKGJ1ZikrMSksIi4lMDJ1OiBbJTVkXTogIiwgdHYudHZfdXNlYyAv
IDEwMDAwLCBwaWQpOw0KICAgICAvKg0KICAgICAgKiBDb3B5IGZvcm1hdCBz
dHJpbmcgaW50byBhIGxvY2FsIGJ1ZmZlciBzbw0KICAgICAgKiB0aGF0IHdl
IGNhbiBzdWJzdGl0dXRlIGZvciAlbSwgYSBsYSBzeXNsb2cuDQpAQCAtOTYs
NiArOTYsNiBAQA0KIAlmbXQucHV0KGZwWzBdKTsNCiAgICAgfQ0KICAgICBm
bXQucHV0KCdcbicpOyBmbXQucHV0KCdcMCcpOw0KLSAgICB2c3ByaW50Zihi
dWYrc3RybGVuKGJ1ZiksIChjb25zdCBjaGFyKikgZm10LCBhcCk7DQorICAg
IHZzbnByaW50ZihidWYrc3RybGVuKGJ1ZiksIHNpemVvZiBidWYgLSAoc3Ry
bGVuKGJ1ZikrMSksIChjb25zdCBjaGFyKikgZm10LCBhcCk7DQogICAgICh2
b2lkKSBTeXM6OndyaXRlKGZkLCBidWYsIHN0cmxlbihidWYpKTsNCiB9DQpk
aWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwy
L2ZheGQvRmF4UmVjdi5jKysgLi9mYXhkL0ZheFJlY3YuYysrDQotLS0gL3Rt
cC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9mYXhkL0ZheFJl
Y3YuYysrCVNhdCBGZWIgMTQgMTE6NDk6MjMgMTk5OA0KKysrIC4vZmF4ZC9G
YXhSZWN2LmMrKwlTdW4gRmViIDIwIDIyOjE5OjI3IDIwMDANCkBAIC0xMzks
NyArMTM5LDcgQEANCiAJICogbnVtYmVyIGZpbGUgdG8gcmVmbGVjdCB0aGUg
YWxsb2NhdGlvbi4NCiAJICovDQogCSh2b2lkKSBmbG9jayhmdG1wLCBMT0NL
X0VYfExPQ0tfTkIpOw0KLQlzcHJpbnRmKGxpbmUsICIldSIsIHNlcW51bSk7
DQorCXNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJXUiLCBzZXFudW0p
Ow0KIAkodm9pZCkgbHNlZWsoZnNlcWYsIDAsIFNFRUtfU0VUKTsNCiAJaWYg
KFN5czo6d3JpdGUoZnNlcWYsIGxpbmUsIHN0cmxlbihsaW5lKSkgIT0gc3Ry
bGVuKGxpbmUpIHx8DQogCQlmdHJ1bmNhdGUoZnNlcWYsc3RybGVuKGxpbmUp
KSkgew0KZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgt
djQuMHBsMi9mYXhkL0ZheFJlcXVlc3QuYysrIC4vZmF4ZC9GYXhSZXF1ZXN0
LmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBw
bDIvZmF4ZC9GYXhSZXF1ZXN0LmMrKwlTYXQgRmViIDE0IDExOjQ5OjI0IDE5
OTgNCisrKyAuL2ZheGQvRmF4UmVxdWVzdC5jKysJU3VuIEZlYiAyMCAyMjox
OToyNyAyMDAwDQpAQCAtNjc5LDcgKzY3OSw3IEBADQogRmF4UmVxdWVzdDo6
ZXJyb3IoY29uc3QgY2hhciogZm10MCAuLi4pDQogew0KICAgICBjaGFyIGZt
dFsxMjhdOw0KLSAgICBzcHJpbnRmKGZtdCwgIiVzOiBsaW5lICV1OiAlcyIs
IChjb25zdCBjaGFyKikgcWZpbGUsICh1X2ludCkgbGluZW5vLCBmbXQwKTsN
CisgICAgc25wcmludGYoZm10LCBzaXplb2YgZm10LCAiJXM6IGxpbmUgJXU6
ICVzIiwgKGNvbnN0IGNoYXIqKSBxZmlsZSwgKHVfaW50KSBsaW5lbm8sIGZt
dDApOw0KICAgICB2YV9saXN0IGFwOw0KICAgICB2YV9zdGFydChhcCwgZm10
MCk7DQogICAgIHZsb2dFcnJvcihmbXQsIGFwKTsNCmRpZmYgLXJ1IC90bXAv
b2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvZmF4ZC9Kb2IuYysr
IC4vZmF4ZC9Kb2IuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5
bGFmYXgtdjQuMHBsMi9mYXhkL0pvYi5jKysJU2F0IEZlYiAxNCAxMTo0OToz
MiAxOTk4DQorKysgLi9mYXhkL0pvYi5jKysJU3VuIEZlYiAyMCAyMjoxOToy
NyAyMDAwDQpAQCAtMTcxLDcgKzE3MSw3IEBADQogI2RlZmluZQlOKGEpCShz
aXplb2YgKGEpIC8gc2l6ZW9mIChhWzBdKSkNCiAgICAgaWYgKCh1X2ludCkg
c3RhdHVzID49IE4obmFtZXMpKSB7DQogCXN0YXRpYyBjaGFyIHNbMzBdOw0K
LQlzcHJpbnRmKHMsICJzdGF0dXNfJXUiLCAodV9pbnQpIHN0YXR1cyk7DQor
CXNucHJpbnRmKHMsIHNpemVvZiBzLCAic3RhdHVzXyV1IiwgKHVfaW50KSBz
dGF0dXMpOw0KIAlyZXR1cm4gKHMpOw0KICAgICB9IGVsc2UNCiAJcmV0dXJu
IChuYW1lc1tzdGF0dXNdKTsNCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgv
d29yay9oeWxhZmF4LXY0LjBwbDIvZmF4ZC9Nb2RlbVNlcnZlci5jKysgLi9m
YXhkL01vZGVtU2VydmVyLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29y
ay9oeWxhZmF4LXY0LjBwbDIvZmF4ZC9Nb2RlbVNlcnZlci5jKysJU2F0IEZl
YiAxNCAxMTo0OTozNCAxOTk4DQorKysgLi9mYXhkL01vZGVtU2VydmVyLmMr
KwlTdW4gRmViIDIwIDIyOjE5OjI3IDIwMDANCkBAIC02MDQsNyArNjA0LDcg
QEANCiAJfSB3aGlsZSAoZnRtcCA8IDAgJiYgZXJybm8gPT0gRUVYSVNUICYm
IC0tbnRyeSA+PSAwKTsNCiAJdW1hc2sob21hc2spOw0KIAlpZiAoZnRtcCA+
PSAwKSB7DQotCSAgICBzcHJpbnRmKGxpbmUsICIldSIsIHNlcW51bSk7DQor
CSAgICBzbnByaW50ZihsaW5lLCBzaXplb2YgbGluZSwgIiV1Iiwgc2VxbnVt
KTsNCiAJICAgICh2b2lkKSBsc2Vlayhmc2VxZiwgMCwgU0VFS19TRVQpOw0K
IAkgICAgaWYgKFN5czo6d3JpdGUoZnNlcWYsIGxpbmUsIHN0cmxlbihsaW5l
KSkgIT0gc3RybGVuKGxpbmUpIHx8DQogCQlmdHJ1bmNhdGUoZnNlcWYsc3Ry
bGVuKGxpbmUpKSkNCkBAIC04MDYsNyArODA2LDcgQEANCiAgICAgdmFfbGlz
dCBhcDsNCiAgICAgdmFfc3RhcnQoYXAsIGZtdDApOw0KICAgICBjaGFyIGZt
dFsyNTZdOw0KLSAgICBzcHJpbnRmKGZtdCwgIk1PREVNICVzIiwgZm10MCk7
DQorICAgIHNucHJpbnRmKGZtdCwgc2l6ZW9mIGZtdCwgIk1PREVNICVzIiwg
Zm10MCk7DQogICAgIHZ0cmFjZVN0YXR1cyhGQVhUUkFDRV9NT0RFTU9QUywg
Zm10LCBhcCk7DQogICAgIHZhX2VuZChhcCk7DQogfQ0KZGlmZiAtcnUgL3Rt
cC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9mYXhkL1NlcnZl
ckNvbmZpZy5jKysgLi9mYXhkL1NlcnZlckNvbmZpZy5jKysNCi0tLSAvdG1w
L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQvU2VydmVy
Q29uZmlnLmMrKwlTYXQgRmViIDE0IDExOjQ5OjM2IDE5OTgNCisrKyAuL2Zh
eGQvU2VydmVyQ29uZmlnLmMrKwlTdW4gRmViIDIwIDIyOjE5OjI3IDIwMDAN
CkBAIC0zNzMsOSArMzczLDkgQEANCiB7DQogICAgIGNoYXIgZm10WzEyOF07
DQogICAgIGlmIChtb2R1bGUgIT0gTlVMTCkNCi0Jc3ByaW50ZihmbXQsICIl
czogV2FybmluZywgJXMuIiwgbW9kdWxlLCBmbXQwKTsNCisJc25wcmludGYo
Zm10LCBzaXplb2YgZm10LCAiJXM6IFdhcm5pbmcsICVzLiIsIG1vZHVsZSwg
Zm10MCk7DQogICAgIGVsc2UNCi0Jc3ByaW50ZihmbXQsICJXYXJuaW5nLCAl
cy4iLCBmbXQwKTsNCisJc25wcmludGYoZm10LCBzaXplb2YgZm10LCAiV2Fy
bmluZywgJXMuIiwgZm10MCk7DQogICAgIHZsb2dFcnJvcihmbXQsIGFwKTsN
CiB9DQogDQpAQCAtMzg0LDkgKzM4NCw5IEBADQogew0KICAgICBjaGFyIGZt
dFsxMjhdOw0KICAgICBpZiAobW9kdWxlICE9IE5VTEwpDQotCXNwcmludGYo
Zm10LCAiJXM6IFdhcm5pbmcsICVzLiIsIG1vZHVsZSwgZm10MCk7DQorCXNu
cHJpbnRmKGZtdCwgc2l6ZW9mIGZtdCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBt
b2R1bGUsIGZtdDApOw0KICAgICBlbHNlDQotCXNwcmludGYoZm10LCAiV2Fy
bmluZywgJXMuIiwgZm10MCk7DQorCXNucHJpbnRmKGZtdCwgc2l6ZW9mIGZt
dCwgIldhcm5pbmcsICVzLiIsIGZtdDApOw0KICAgICB2bG9nV2FybmluZyhm
bXQsIGFwKTsNCiB9DQogDQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dv
cmsvaHlsYWZheC12NC4wcGwyL2ZheGQvVVVDUExvY2suYysrIC4vZmF4ZC9V
VUNQTG9jay5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZh
eC12NC4wcGwyL2ZheGQvVVVDUExvY2suYysrCU1vbiBGZWIgMjEgMTU6MTk6
NDQgMjAwMA0KKysrIC4vZmF4ZC9VVUNQTG9jay5jKysJTW9uIEZlYiAyMSAx
NDo1NjoyOSAyMDAwDQpAQCAtMzEzLDcgKzMxMyw3IEBADQogQXNjaWlVVUNQ
TG9jazo6c2V0UElEKHBpZF90IHBpZCkNCiB7DQogICAgIC8vIFhYWCBzaG91
bGQgdGhpcyBiZSAlZCBvciAlbGQ/IGRlcGVuZHMgb24gcGlkX3QNCi0gICAg
c3ByaW50ZigoY2hhciopIGRhdGEsICIlKmRcbiIsIFVVQ1BfUElERElHSVRT
LCBwaWQpOw0KKyAgICBzbnByaW50ZigoY2hhciopIGRhdGEsIFVVQ1BfUElE
RElHSVRTKzIsICIlKmRcbiIsIFVVQ1BfUElERElHSVRTLCBwaWQpOw0KIH0N
CiANCiBmeEJvb2wNCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9o
eWxhZmF4LXY0LjBwbDIvZmF4ZC9mYXhBcHAuYysrIC4vZmF4ZC9mYXhBcHAu
YysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs
Mi9mYXhkL2ZheEFwcC5jKysJU2F0IEZlYiAxNCAxMTo0OTozOSAxOTk4DQor
KysgLi9mYXhkL2ZheEFwcC5jKysJU3VuIEZlYiAyMCAyMjoxOToyNyAyMDAw
DQpAQCAtMjMxLDcgKzIzMSw3IEBADQogCSAgICBsb2dFcnJvcigiZmNudGw6
ICVtIik7DQogICAgIH0NCiAgICAgY2hhciBtc2dbNDA5Nl07DQotICAgIHZz
cHJpbnRmKG1zZywgZm10LCBhcCk7DQorICAgIHZzbnByaW50Zihtc2csIHNp
emVvZiBtc2csIGZtdCwgYXApOw0KICAgICB1X2ludCBsZW4gPSBzdHJsZW4o
bXNnKSsxOw0KICAgICBpZiAoU3lzOjp3cml0ZShmYXhxZmlmbywgbXNnLCBs
ZW4pICE9IGxlbikgew0KIAlpZiAoZXJybm8gPT0gRUJBREYgfHwgZXJybm8g
PT0gRVBJUEUpCQkvLyByZWFkZXIgZXhwaXJlZA0KQEAgLTI2Myw3ICsyNjMs
NyBAQA0KIGZheEFwcDo6c2VuZE1vZGVtU3RhdHVzKGNvbnN0IGNoYXIqIGRl
dmlkLCBjb25zdCBjaGFyKiBmbXQwIC4uLikNCiB7DQogICAgIGNoYXIgZm10
WzIqMTAyNF07DQotICAgIHNwcmludGYoZm10LCAiKyVzOiVzIiwgZGV2aWQs
IGZtdDApOw0KKyAgICBzbnByaW50ZihmbXQsIHNpemVvZiBmbXQsICIrJXM6
JXMiLCBkZXZpZCwgZm10MCk7DQogICAgIHZhX2xpc3QgYXA7DQogICAgIHZh
X3N0YXJ0KGFwLCBmbXQwKTsNCiAgICAgZnhCb29sIG9rID0gdnNlbmRRdWV1
ZXIoZm10LCBhcCk7DQpAQCAtMjc4LDcgKzI3OCw3IEBADQogZmF4QXBwOjpz
ZW5kSm9iU3RhdHVzKGNvbnN0IGNoYXIqIGpvYmlkLCBjb25zdCBjaGFyKiBm
bXQwIC4uLikNCiB7DQogICAgIGNoYXIgZm10WzIqMTAyNF07DQotICAgIHNw
cmludGYoZm10LCAiKiVzOiVzIiwgam9iaWQsIGZtdDApOw0KKyAgICBzbnBy
aW50ZihmbXQsIHNpemVvZiBmbXQsICIqJXM6JXMiLCBqb2JpZCwgZm10MCk7
DQogICAgIHZhX2xpc3QgYXA7DQogICAgIHZhX3N0YXJ0KGFwLCBmbXQwKTsN
CiAgICAgZnhCb29sIG9rID0gdnNlbmRRdWV1ZXIoZm10LCBhcCk7DQpAQCAt
MjkzLDcgKzI5Myw3IEBADQogZmF4QXBwOjpzZW5kUmVjdlN0YXR1cyhjb25z
dCBjaGFyKiBkZXZpZCwgY29uc3QgY2hhciogZm10MCAuLi4pDQogew0KICAg
ICBjaGFyIGZtdFsyKjEwMjRdOw0KLSAgICBzcHJpbnRmKGZtdCwgIkAlczol
cyIsIGRldmlkLCBmbXQwKTsNCisgICAgc25wcmludGYoZm10LCBzaXplb2Yg
Zm10LCAiQCVzOiVzIiwgZGV2aWQsIGZtdDApOw0KICAgICB2YV9saXN0IGFw
Ow0KICAgICB2YV9zdGFydChhcCwgZm10MCk7DQogICAgIGZ4Qm9vbCBvayA9
IHZzZW5kUXVldWVyKGZtdCwgYXApOw0KZGlmZiAtcnUgL3RtcC9vbGQvaHls
YWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9mYXhkL2ZheFF1ZXVlQXBwLmMr
KyAuL2ZheGQvZmF4UXVldWVBcHAuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZh
eC93b3JrL2h5bGFmYXgtdjQuMHBsMi9mYXhkL2ZheFF1ZXVlQXBwLmMrKwlT
YXQgRmViIDE0IDExOjQ5OjQyIDE5OTgNCisrKyAuL2ZheGQvZmF4UXVldWVB
cHAuYysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAgLTk3MSwxMCAr
OTcxLDEwIEBADQogCSAqICAgLW0gPG1heHBhZ2VzPgltYXggcGFnZXMgdG8g
Z2VuZXJhdGUNCiAJICogICAtMXwtMgkJMWQgb3IgMmQgZW5jb2RpbmcNCiAJ
ICovDQotCWNoYXIgcmJ1ZlsyMF07IHNwcmludGYocmJ1ZiwgIiV1IiwgcGFy
YW1zLnZlcnRpY2FsUmVzKCkpOw0KLQljaGFyIHdidWZbMjBdOyBzcHJpbnRm
KHdidWYsICIldSIsIHBhcmFtcy5wYWdlV2lkdGgoKSk7DQotCWNoYXIgbGJ1
ZlsyMF07IHNwcmludGYobGJ1ZiwgIiVkIiwgcGFyYW1zLnBhZ2VMZW5ndGgo
KSk7DQotCWNoYXIgbWJ1ZlsyMF07IHNwcmludGYobWJ1ZiwgIiV1IiwgZGNp
LmdldE1heFNlbmRQYWdlcygpKTsNCisJY2hhciByYnVmWzIwXTsgc25wcmlu
dGYocmJ1Ziwgc2l6ZW9mIHJidWYsICIldSIsIHBhcmFtcy52ZXJ0aWNhbFJl
cygpKTsNCisJY2hhciB3YnVmWzIwXTsgc25wcmludGYod2J1Ziwgc2l6ZW9m
IHdidWYsICIldSIsIHBhcmFtcy5wYWdlV2lkdGgoKSk7DQorCWNoYXIgbGJ1
ZlsyMF07IHNucHJpbnRmKGxidWYsIHNpemVvZiBsYnVmLCAiJWQiLCBwYXJh
bXMucGFnZUxlbmd0aCgpKTsNCisJY2hhciBtYnVmWzIwXTsgc25wcmludGYo
bWJ1Ziwgc2l6ZW9mIG1idWYsICIldSIsIGRjaS5nZXRNYXhTZW5kUGFnZXMo
KSk7DQogCWNvbnN0IGNoYXIqIGFyZ3ZbMzBdOw0KIAlpbnQgYWMgPSAwOw0K
IAlzd2l0Y2ggKHJlcS5vcCkgew0KQEAgLTI3MjYsOSArMjcyNiw5IEBADQog
ew0KICAgICBjaGFyIGZtdFsxMjhdOw0KICAgICBpZiAobW9kdWxlICE9IE5V
TEwpDQotCXNwcmludGYoZm10LCAiJXM6IFdhcm5pbmcsICVzLiIsIG1vZHVs
ZSwgZm10MCk7DQorCXNucHJpbnRmKGZtdCwgc2l6ZW9mIGZtdCwgIiVzOiBX
YXJuaW5nLCAlcy4iLCBtb2R1bGUsIGZtdDApOw0KICAgICBlbHNlDQotCXNw
cmludGYoZm10LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQorCXNucHJpbnRm
KGZtdCwgc2l6ZW9mIGZtdCwgIldhcm5pbmcsICVzLiIsIGZtdDApOw0KICAg
ICB2bG9nRXJyb3IoZm10LCBhcCk7DQogfQ0KIA0KQEAgLTI3MzcsOSArMjcz
Nyw5IEBADQogew0KICAgICBjaGFyIGZtdFsxMjhdOw0KICAgICBpZiAobW9k
dWxlICE9IE5VTEwpDQotCXNwcmludGYoZm10LCAiJXM6IFdhcm5pbmcsICVz
LiIsIG1vZHVsZSwgZm10MCk7DQorCXNucHJpbnRmKGZtdCwgc2l6ZW9mIGZt
dCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBtb2R1bGUsIGZtdDApOw0KICAgICBl
bHNlDQotCXNwcmludGYoZm10LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQor
CXNucHJpbnRmKGZtdCwgc2l6ZW9mIGZtdCwgIldhcm5pbmcsICVzLiIsIGZt
dDApOw0KICAgICB2bG9nV2FybmluZyhmbXQsIGFwKTsNCiB9DQogDQpkaWZm
IC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2Zh
eGQvdHJpZ3Rlc3QuYysrIC4vZmF4ZC90cmlndGVzdC5jKysNCi0tLSAvdG1w
L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQvdHJpZ3Rl
c3QuYysrCVNhdCBGZWIgMTQgMTE6NDk6NDcgMTk5OA0KKysrIC4vZmF4ZC90
cmlndGVzdC5jKysJTW9uIEZlYiAyMSAxNDo1NzoyMCAyMDAwDQpAQCAtMjk2
LDcgKzI5Niw3IEBADQogICAgIGludCBmZCwgbjsNCiAgICAgY2hhciBtc2db
MjU2XTsNCiANCi0gICAgc3ByaW50ZihmaWZvTmFtZSwgImNsaWVudC8ldSIs
IGdldHBpZCgpKTsNCisgICAgc25wcmludGYoZmlmb05hbWUsIHNpemVvZiBm
aWZvTmFtZSwgImNsaWVudC8ldSIsIGdldHBpZCgpKTsNCiAgICAgaWYgKFN5
czo6bWtmaWZvKGZpZm9OYW1lLCAwNjY2KSA8IDAgJiYgZXJybm8gIT0gRUVY
SVNUKSB7DQogCXBlcnJvcigibWtmaWZvIik7DQogCWV4aXQoLTEpOw0KQEAg
LTMwOSw3ICszMDksNyBAQA0KIAl1bmxpbmsoZmlmb05hbWUpOw0KIAlleGl0
KC0xKTsNCiAgICAgfQ0KLSAgICBzcHJpbnRmKG1zZywgIlQlczpOJXMiLCBm
aWZvTmFtZSwgdHJpZ2dlcik7DQorICAgIHNucHJpbnRmKG1zZywgc2l6ZW9m
IG1zZywgIlQlczpOJXMiLCBmaWZvTmFtZSwgdHJpZ2dlcik7DQogICAgIHNl
bmQobXNnLCBzdHJsZW4obXNnKSsxKTsNCiAgICAgZm9yICg7Oykgew0KIAlG
RF9aRVJPKCZyZCk7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv
aHlsYWZheC12NC4wcGwyL2hmYXhkL0h5bGFGQVhTZXJ2ZXIuYysrIC4vaGZh
eGQvSHlsYUZBWFNlcnZlci5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dv
cmsvaHlsYWZheC12NC4wcGwyL2hmYXhkL0h5bGFGQVhTZXJ2ZXIuYysrCVNh
dCBGZWIgMTQgMTE6NTA6MDIgMTk5OA0KKysrIC4vaGZheGQvSHlsYUZBWFNl
cnZlci5jKysJU3VuIEZlYiAyMCAyMjoxOToyNyAyMDAwDQpAQCAtMTYxLDkg
KzE2MSw5IEBADQogew0KICAgICBjaGFyIGZtdFsxMjhdOw0KICAgICBpZiAo
bW9kdWxlICE9IE5VTEwpDQotCXNwcmludGYoZm10LCAiJXM6IFdhcm5pbmcs
ICVzLiIsIG1vZHVsZSwgZm10MCk7DQorCXNucHJpbnRmKGZtdCwgc2l6ZW9m
IGZtdCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBtb2R1bGUsIGZtdDApOw0KICAg
ICBlbHNlDQotCXNwcmludGYoZm10LCAiV2FybmluZywgJXMuIiwgZm10MCk7
DQorCXNucHJpbnRmKGZtdCwgc2l6ZW9mIGZtdCwgIldhcm5pbmcsICVzLiIs
IGZtdDApOw0KICAgICB2bG9nRXJyb3IoZm10LCBhcCk7DQogfQ0KIA0KQEAg
LTE3Miw5ICsxNzIsOSBAQA0KIHsNCiAgICAgY2hhciBmbXRbMTI4XTsNCiAg
ICAgaWYgKG1vZHVsZSAhPSBOVUxMKQ0KLQlzcHJpbnRmKGZtdCwgIiVzOiBX
YXJuaW5nLCAlcy4iLCBtb2R1bGUsIGZtdDApOw0KKwlzbnByaW50ZihmbXQs
IHNpemVvZiBmbXQsICIlczogV2FybmluZywgJXMuIiwgbW9kdWxlLCBmbXQw
KTsNCiAgICAgZWxzZQ0KLQlzcHJpbnRmKGZtdCwgIldhcm5pbmcsICVzLiIs
IGZtdDApOw0KKwlzbnByaW50ZihmbXQsIHNpemVvZiBmbXQsICJXYXJuaW5n
LCAlcy4iLCBmbXQwKTsNCiAgICAgdmxvZ1dhcm5pbmcoZm10LCBhcCk7DQog
fQ0KIA0KQEAgLTUzMCw3ICs1MzAsNyBAQA0KIAkgICAgZmlsZW5hbWUsIGxp
bmUpOw0KIAlzZXFudW0gPSAxOw0KICAgICB9DQotICAgIHNwcmludGYobGlu
ZSwgIiV1IiwgTkVYVFNFUU5VTShzZXFudW0rY291bnQpKTsNCisgICAgc25w
cmludGYobGluZSwgc2l6ZW9mIGxpbmUsICIldSIsIE5FWFRTRVFOVU0oc2Vx
bnVtK2NvdW50KSk7DQogICAgIGxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7DQog
ICAgIGlmIChTeXM6OndyaXRlKGZkLCBsaW5lLCBzdHJsZW4obGluZSkpICE9
IHN0cmxlbihsaW5lKSB8fA0KIAkJZnRydW5jYXRlKGZkLHN0cmxlbihsaW5l
KSkpIHsNCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4
LXY0LjBwbDIvaGZheGQvSm9icy5jKysgLi9oZmF4ZC9Kb2JzLmMrKw0KLS0t
IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvaGZheGQv
Sm9icy5jKysJU2F0IEZlYiAxNCAxMTo1MDowNSAxOTk4DQorKysgLi9oZmF4
ZC9Kb2JzLmMrKwlTdW4gRmViIDIwIDIyOjE5OjI3IDIwMDANCkBAIC0xNjQ2
LDcgKzE2NDYsNyBAQA0KIAkJZnByaW50ZihmZCwgZnNwZWMsIChjb25zdCBj
aGFyKikgam9iLmNvbXBhbnkpOw0KIAkJYnJlYWs7DQogCSAgICBjYXNlICdE
JzoNCi0JCXNwcmludGYodG1wYnVmLCAiJTJ1OiUtMnUiLCBqb2IudG90ZGlh
bHMsIGpvYi5tYXhkaWFscyk7DQorCQlzbnByaW50Zih0bXBidWYsIHNpemVv
ZiB0bXBidWYsICIlMnU6JS0ydSIsIGpvYi50b3RkaWFscywgam9iLm1heGRp
YWxzKTsNCiAJCWZwcmludGYoZmQsIGZzcGVjLCB0bXBidWYpOw0KIAkJYnJl
YWs7DQogCSAgICBjYXNlICdFJzoNCkBAIC0xNjgzLDcgKzE2ODMsNyBAQA0K
IAkJZnByaW50ZihmZCwgZnNwZWMsICJOICJbam9iLnVzZWNjb3Zlcl0pOw0K
IAkJYnJlYWs7DQogCSAgICBjYXNlICdQJzoNCi0JCXNwcmludGYodG1wYnVm
LCAiJTJ1OiUtMnUiLCBqb2IubnBhZ2VzLCBqb2IudG90cGFnZXMpOw0KKwkJ
c25wcmludGYodG1wYnVmLCBzaXplb2YgdG1wYnVmLCAiJTJ1OiUtMnUiLCBq
b2IubnBhZ2VzLCBqb2IudG90cGFnZXMpOw0KIAkJZnByaW50ZihmZCwgZnNw
ZWMsIHRtcGJ1Zik7DQogCQlicmVhazsNCiAJICAgIGNhc2UgJ1EnOg0KQEAg
LTE2OTYsMTEgKzE2OTYsMTEgQEANCiAJCWZwcmludGYoZmQsIGZzcGVjLCAo
Y29uc3QgY2hhciopIGpvYi5zZW5kZXIpOw0KIAkJYnJlYWs7DQogCSAgICBj
YXNlICdUJzoNCi0JCXNwcmludGYodG1wYnVmLCAiJTJ1OiUtMnUiLCBqb2Iu
dG90dHJpZXMsIGpvYi5tYXh0cmllcyk7DQorCQlzbnByaW50Zih0bXBidWYs
IHNpemVvZiB0bXBidWYsICIlMnU6JS0ydSIsIGpvYi50b3R0cmllcywgam9i
Lm1heHRyaWVzKTsNCiAJCWZwcmludGYoZmQsIGZzcGVjLCB0bXBidWYpOw0K
IAkJYnJlYWs7DQogCSAgICBjYXNlICdVJzoNCi0JCXNwcmludGYodG1wYnVm
LCAiJS4xZiIsIGpvYi5jaG9wdGhyZXNob2xkKTsNCisJCXNucHJpbnRmKHRt
cGJ1Ziwgc2l6ZW9mIHRtcGJ1ZiwgIiUuMWYiLCBqb2IuY2hvcHRocmVzaG9s
ZCk7DQogCQlmcHJpbnRmKGZkLCBmc3BlYywgdG1wYnVmKTsNCiAJCWJyZWFr
Ow0KIAkgICAgY2FzZSAnVic6DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4
L3dvcmsvaHlsYWZheC12NC4wcGwyL2hmYXhkL09sZFByb3RvY29sLmMrKyAu
L2hmYXhkL09sZFByb3RvY29sLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgv
d29yay9oeWxhZmF4LXY0LjBwbDIvaGZheGQvT2xkUHJvdG9jb2wuYysrCU1v
biBGZWIgMjEgMTU6MTk6NDQgMjAwMA0KKysrIC4vaGZheGQvT2xkUHJvdG9j
b2wuYysrCVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0KQEAgLTM1Miw4ICsz
NTIsOCBAQA0KIE9sZFByb3RvY29sU2VydmVyOjp2c2VuZENsaWVudChjb25z
dCBjaGFyKiB0YWcsIGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcCkNCiB7
DQogICAgIGNoYXIgYnVmWzIwNDhdOw0KLSAgICBzcHJpbnRmKGJ1ZiwgIiVz
OiIsIHRhZyk7DQotICAgIHZzcHJpbnRmKHN0cmNocihidWYsJ1wwJyksIGZt
dCwgYXApOw0KKyAgICBzbnByaW50ZihidWYsIHNpemVvZiBidWYsICIlczoi
LCB0YWcpOw0KKyAgICB2c25wcmludGYoc3RyY2hyKGJ1ZiwnXDAnKSwgc2l6
ZW9mIGJ1ZiAtIChzdHJjaHIoYnVmLCAnXDAnKSAtIGJ1ZiksIGZtdCwgYXAp
Ow0KICAgICBmcHJpbnRmKHN0ZG91dCwgIiVzXG4iLCBidWYpOw0KICAgICBp
ZiAoVFJBQ0UoUFJPVE9DT0wpKQ0KIAlsb2dEZWJ1ZygiJXMiLCBidWYpOw0K
QEAgLTQ3MiwxOSArNDcyLDE5IEBADQogICAgIGJ1ZlswXSA9ICdcMCc7DQog
ICAgIGlmIChwd2QtPnB3X2dlY29zKSB7DQogCWlmIChwd2QtPnB3X2dlY29z
WzBdID09ICcmJykgew0KLQkgICAgc3RyY3B5KGJ1ZiwgcHdkLT5wd19uYW1l
KTsNCi0JICAgIHN0cmNhdChidWYsIHB3ZC0+cHdfZ2Vjb3MrMSk7DQorCSAg
ICBzdHJsY3B5KGJ1ZiwgcHdkLT5wd19uYW1lLCBzaXplb2YgYnVmKTsNCisJ
ICAgIHN0cmxjYXQoYnVmLCBwd2QtPnB3X2dlY29zKzEsIHNpemVvZiBidWYp
Ow0KIAkgICAgaWYgKGlzbG93ZXIoYnVmWzBdKSkNCiAJCWJ1ZlswXSA9IHRv
dXBwZXIoYnVmWzBdKTsNCiAJfSBlbHNlDQotCSAgICBzdHJjcHkoYnVmLCBw
d2QtPnB3X2dlY29zKTsNCisJICAgIHN0cmxjcHkoYnVmLCBwd2QtPnB3X2dl
Y29zLCBzaXplb2YgYnVmKTsNCiAJaWYgKChjcCA9IHN0cmNocihidWYsJywn
KSkgIT0gMCkNCiAJICAgICpjcCA9ICdcMCc7DQogCS8qIHNlZSBGYXhDbGll
bnQ6OnNldHVwVXNlcklkZW50aXR5OyBzdHJpcCBTeXNWIGp1bmsgKi8NCiAJ
aWYgKChjcCA9IHN0cmNocihidWYsJygnKSkgIT0gMCkNCiAJICAgICpjcCA9
ICdcMCc7DQogICAgIH0gZWxzZQ0KLQlzdHJjcHkoYnVmLCBwd2QtPnB3X25h
bWUpOw0KKwlzdHJsY3B5KGJ1ZiwgcHdkLT5wd19uYW1lLCBzaXplb2YgYnVm
KTsNCiAgICAgaWYgKFRSQUNFKFBST1RPQ09MKSkgew0KIAlpZiAoKmJ1ZikN
CiAJICAgICBsb2dEZWJ1ZygiJXMgdXNlcjogXCIlc1wiIiwgcHdkLT5wd19u
YW1lLCBidWYpOw0KZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5
bGFmYXgtdjQuMHBsMi9oZmF4ZC9TdGF0dXMuYysrIC4vaGZheGQvU3RhdHVz
LmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBw
bDIvaGZheGQvU3RhdHVzLmMrKwlTYXQgRmViIDE0IDExOjUwOjA5IDE5OTgN
CisrKyAuL2hmYXhkL1N0YXR1cy5jKysJU3VuIEZlYiAyMCAyMjoxOToyOCAy
MDAwDQpAQCAtMjYyLDE0ICsyNjIsMTQgQEANCiAJCWlmIChjb25maWcubWF4
UmVjdlBhZ2VzID09ICh1X2ludCkgLTEpDQogCQkgICAgc3RyY3B5KHRtcGJ1
ZiwgIklORiIpOw0KIAkJZWxzZQ0KLQkJICAgIHNwcmludGYodG1wYnVmLCAi
JXUiLCBjb25maWcubWF4UmVjdlBhZ2VzKTsNCisJCSAgICBzbnByaW50Zih0
bXBidWYsIHNpemVvZiB0bXBidWYsICIldSIsIGNvbmZpZy5tYXhSZWN2UGFn
ZXMpOw0KIAkJZnByaW50ZihmZCwgZnNwZWMsIGNvbmZpZy5tYXhSZWN2UGFn
ZXMpOw0KIAkJYnJlYWs7DQogCSAgICBjYXNlICdzJzoNCiAJCWZwcmludGYo
ZmQsIGZzcGVjLCAoY29uc3QgY2hhciopIGNvbmZpZy5zdGF0dXMpOw0KIAkJ
YnJlYWs7DQogCSAgICBjYXNlICd0JzoNCi0JCXNwcmludGYodG1wYnVmLCAi
JTA1eDolMDV4IiwNCisJCXNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mIHRtcGJ1
ZiwgIiUwNXg6JTA1eCIsDQogCQkgICAgY29uZmlnLnRyYWNpbmdMZXZlbCYw
eGZmZmZmLA0KIAkJICAgIGNvbmZpZy5sb2dUcmFjaW5nTGV2ZWwmMHhmZmZm
Zik7DQogCQlmcHJpbnRmKGZkLCBmc3BlYywgdG1wYnVmKTsNCmRpZmYgLXJ1
IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvbWFuL2Nv
bmZpZy40ZiAuL21hbi9jb25maWcuNGYNCi0tLSAvdG1wL29sZC9oeWxhZmF4
L3dvcmsvaHlsYWZheC12NC4wcGwyL21hbi9jb25maWcuNGYJU2F0IEZlYiAx
NCAxMTo1MDo0NiAxOTk4DQorKysgLi9tYW4vY29uZmlnLjRmCVN1biBGZWIg
MjAgMjI6MTk6MjggMjAwMA0KQEAgLTE0NDYsNyArMTQ0Niw3IEBADQogVGhl
IGNvbW1hbmQgdG8gcGxhY2UgYSBwaG9uZSBjYWxsLg0KIFRoZSBzdHJpbmcg
aXMgYXNzdW1lZCB0byBiZSBzdWl0YWJsZSBmb3IgdXNlDQogYXMgYSBwYXJh
bWV0ZXIgdG8gdGhlDQotLklSIHNwcmludGYgKDNTKQ0KKy5JUiBzbnByaW50
ZiAoM1MpDQogZnVuY3Rpb247IHNvIHRoZSBgYCUnJyBjaGFyYWN0ZXIgc2hv
dWxkIGJlIGVzY2FwZWQgYXMgYGAlJScnLg0KIFRoZSBkaWFsIGNvbW1hbmQg
bXVzdCBpbmNsdWRlIGEgc2luZ2xlIGBgJXMnJyB3aGVyZSB0aGUgbnVtYmVy
DQogdGhhdCBpcyB0byBiZSBkaWFsZWQgaXMgdG8gYmUgc3Vic3RpdHV0ZWQu
DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4w
cGwyL3BvcnQvc3lzbG9nLmMgLi9wb3J0L3N5c2xvZy5jDQotLS0gL3RtcC9v
bGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9wb3J0L3N5c2xvZy5j
CVNhdCBGZWIgMTQgMTE6NTA6NDIgMTk5OA0KKysrIC4vcG9ydC9zeXNsb2cu
YwlNb24gRmViIDIxIDE1OjA5OjA3IDIwMDANCkBAIC04OCw3ICs4OCw3IEBA
DQogCXJlZ2lzdGVyIGludCBjbnQ7DQogCXJlZ2lzdGVyIGNoYXIgKnA7DQog
CXRpbWVfdCBub3csIHRpbWUoKTsNCi0JaW50IGZkLCBzYXZlZF9lcnJubzsN
CisJaW50IGZkLCBzYXZlZF9lcnJubywgbjsNCiAJY2hhciB0YnVmWzIwNDhd
LCBmbXRfY3B5WzEwMjRdLCAqc3RkcCwgKmN0aW1lKCk7DQogDQogCS8qIGNo
ZWNrIGZvciBpbnZhbGlkIGJpdHMgb3Igbm8gcHJpb3JpdHkgc2V0ICovDQpA
QCAtMTA0LDIxICsxMDQsMjEgQEANCiANCiAJLyogYnVpbGQgdGhlIG1lc3Nh
Z2UgKi8NCiAJKHZvaWQpdGltZSgmbm93KTsNCi0JKHZvaWQpc3ByaW50Zih0
YnVmLCAiPCVkPiUuMTVzICIsIHByaSwgY3RpbWUoJm5vdykgKyA0KTsNCi0J
Zm9yIChwID0gdGJ1ZjsgKnA7ICsrcCk7DQorCSh2b2lkKXNucHJpbnRmKHRi
dWYsIHNpemVvZiB0YnVmLCAiPCVkPiUuMTVzICIsIHByaSwgY3RpbWUoJm5v
dykgKyA0KTsNCisJZm9yIChwID0gdGJ1Ziwgbj0wOyAqcDsgKytwLCBuKysp
Ow0KIAlpZiAoTG9nU3RhdCAmIExPR19QRVJST1IpDQogCQlzdGRwID0gcDsN
CiAJaWYgKExvZ1RhZykgew0KIAkJKHZvaWQpc3RyY3B5KHAsIExvZ1RhZyk7
DQotCQlmb3IgKDsgKnA7ICsrcCk7DQorCQlmb3IgKDsgKnA7ICsrcCwgbisr
KTsNCiAJfQ0KIAlpZiAoTG9nU3RhdCAmIExPR19QSUQpIHsNCi0JCSh2b2lk
KXNwcmludGYocCwgIlslZF0iLCBnZXRwaWQoKSk7DQotCQlmb3IgKDsgKnA7
ICsrcCk7DQorCQkodm9pZClzbnByaW50ZihwLCBzaXplb2YgdGJ1ZiAtIG4s
ICJbJWRdIiwgZ2V0cGlkKCkpOw0KKwkJZm9yICg7ICpwOyArK3AsIG4rKyk7
DQogCX0NCiAJaWYgKExvZ1RhZykgew0KLQkJKnArKyA9ICc6JzsNCi0JCSpw
KysgPSAnICc7DQorCQkqcCsrID0gJzonOyBuKys7DQorCQkqcCsrID0gJyAn
OyBuKys7DQogCX0NCiANCiAJLyogc3Vic3RpdHV0ZSBlcnJvciBtZXNzYWdl
IGZvciAlbSAqLw0KQEAgLTEzNyw3ICsxMzcsNyBAQA0KIAkJKnQxID0gJ1ww
JzsNCiAJfQ0KIA0KLQkodm9pZCl2c3ByaW50ZihwLCBmbXRfY3B5LCBhcCk7
DQorCSh2b2lkKXZzbnByaW50ZihwLCBzaXplb2YgdGJ1ZiAtIG4sIGZtdF9j
cHksIGFwKTsNCiANCiAJY250ID0gc3RybGVuKHRidWYpOw0KIA0KQEAgLTE3
MCw3ICsxNzAsNyBAQA0KIAkgKiBpcyB0aGUgb25lIGZyb20gdGhlIHN5c2xv
Z2QgZmFpbHVyZS4NCiAJICovDQogCWlmICgoZmQgPSBvcGVuKF9QQVRIX0NP
TlNPTEUsIE9fV1JPTkxZLCAwKSkgPj0gMCkgew0KLQkJKHZvaWQpc3RyY2F0
KHRidWYsICJcclxuIik7DQorCQkodm9pZClzdHJsY2F0KHRidWYsICJcclxu
Iiwgc2l6ZW9mIHRidWYpOw0KIAkJY250ICs9IDI7DQogCQlwID0gaW5kZXgo
dGJ1ZiwgJz4nKSArIDE7DQogCQkodm9pZCl3cml0ZShmZCwgcCwgY250IC0g
KHAgLSB0YnVmKSk7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv
aHlsYWZheC12NC4wcGwyL3BvcnQvdnN5c2xvZy5jIC4vcG9ydC92c3lzbG9n
LmMNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwy
L3BvcnQvdnN5c2xvZy5jCVNhdCBGZWIgMTQgMTE6NTA6NDIgMTk5OA0KKysr
IC4vcG9ydC92c3lzbG9nLmMJU3VuIEZlYiAyMCAyMjoxOToyOCAyMDAwDQpA
QCAtNDksNiArNDksNiBAQA0KIAkJKmNwKysgPSBjOw0KIAkgICAgKmNwID0g
J1wwJzsNCiAJfQ0KLQkodm9pZCkgdnNwcmludGYodGJ1ZiwgZm10X2NweSwg
YXApOw0KKwkodm9pZCkgdnNucHJpbnRmKHRidWYsIHNpemVvZiB0YnVmLCBm
bXRfY3B5LCBhcCk7DQogCSh2b2lkKSBzeXNsb2cocHJpLCAiJXMiLCB0YnVm
KTsNCiB9DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZh
eC12NC4wcGwyL3JlZ2V4L2VuZ2luZS5jIC4vcmVnZXgvZW5naW5lLmMNCi0t
LSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3JlZ2V4
L2VuZ2luZS5jCVNhdCBGZWIgMTQgMTE6NDg6MTkgMTk5OA0KKysrIC4vcmVn
ZXgvZW5naW5lLmMJU3VuIEZlYiAyMCAyMjoxOToyOCAyMDAwDQpAQCAtMTA2
NSw5ICsxMDY1LDkgQEANCiAJc3RhdGljIGNoYXIgcGJ1ZlsxMF07DQogDQog
CWlmIChpc3ByaW50KGNoKSB8fCBjaCA9PSAnICcpDQotCQlzcHJpbnRmKHBi
dWYsICIlYyIsIGNoKTsNCisJCXNucHJpbnRmKHBidWYsIHNpemVvZiBwYnVm
LCAiJWMiLCBjaCk7DQogCWVsc2UNCi0JCXNwcmludGYocGJ1ZiwgIlxcJW8i
LCBjaCk7DQorCQlzbnByaW50ZihwYnVmLCBzaXplb2YgcGJ1ZiwgIlxcJW8i
LCBjaCk7DQogCXJldHVybihwYnVmKTsNCiB9DQogI2VuZGlmDQpkaWZmIC1y
dSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3JlZ2V4
L3JlZ2Vycm9yLmMgLi9yZWdleC9yZWdlcnJvci5jDQotLS0gL3RtcC9vbGQv
aHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9yZWdleC9yZWdlcnJvci5j
CVNhdCBGZWIgMTQgMTE6NDg6MjEgMTk5OA0KKysrIC4vcmVnZXgvcmVnZXJy
b3IuYwlNb24gRmViIDIxIDE1OjAzOjMxIDIwMDANCkBAIC01Nyw3ICs1Nyw3
IEBADQogI2VuZGlmDQogDQogLyogPT09IHJlZ2Vycm9yLmMgPT09ICovDQot
c3RhdGljIGNoYXIgKnJlZ2F0b2koY29uc3QgcmVnZXhfdCAqcHJlZywgY2hh
ciAqbG9jYWxidWYpOw0KK3N0YXRpYyBjaGFyICpyZWdhdG9pKGNvbnN0IHJl
Z2V4X3QgKnByZWcsIGNoYXIgKmxvY2FsYnVmLCBpbnQgbWF4bik7DQogDQog
I2lmZGVmIF9fY3BsdXNwbHVzDQogfQ0KQEAgLTEyNiw3ICsxMjYsNyBAQA0K
IAljaGFyIGNvbnZidWZbNTBdOw0KIA0KIAlpZiAoZXJyY29kZSA9PSBSRUdf
QVRPSSkNCi0JCXMgPSByZWdhdG9pKHByZWcsIGNvbnZidWYpOw0KKwkJcyA9
IHJlZ2F0b2kocHJlZywgY29udmJ1ZiwgNTApOw0KIAllbHNlIHsNCiAJCWZv
ciAociA9IHJlcnJzOyByLT5jb2RlICE9IDA7IHIrKykNCiAJCQlpZiAoci0+
Y29kZSA9PSB0YXJnZXQpDQpAQCAtMTM0LDkgKzEzNCw5IEBADQogCQ0KIAkJ
aWYgKGVycmNvZGUmUkVHX0lUT0EpIHsNCiAJCQlpZiAoci0+Y29kZSAhPSAw
KQ0KLQkJCQkodm9pZCkgc3RyY3B5KGNvbnZidWYsIHItPm5hbWUpOw0KKwkJ
CQkodm9pZCkgc3RybGNweShjb252YnVmLCByLT5uYW1lLCBzaXplb2YgY29u
dmJ1Zik7DQogCQkJZWxzZQ0KLQkJCQlzcHJpbnRmKGNvbnZidWYsICJSRUdf
MHgleCIsIHRhcmdldCk7DQorCQkJCXNucHJpbnRmKGNvbnZidWYsIHNpemVv
ZiBjb252YnVmLCAiUkVHXzB4JXgiLCB0YXJnZXQpOw0KIAkJCWFzc2VydChz
dHJsZW4oY29udmJ1ZikgPCBzaXplb2YoY29udmJ1ZikpOw0KIAkJCXMgPSBj
b252YnVmOw0KIAkJfSBlbHNlDQpAQCAtMTYxLDkgKzE2MSwxMCBAQA0KICA9
PSBzdGF0aWMgY2hhciAqcmVnYXRvaShjb25zdCByZWdleF90ICpwcmVnLCBj
aGFyICpsb2NhbGJ1Zik7DQogICovDQogc3RhdGljIGNoYXIgKg0KLXJlZ2F0
b2kocHJlZywgbG9jYWxidWYpDQorcmVnYXRvaShwcmVnLCBsb2NhbGJ1Ziwg
bWF4bikNCiBjb25zdCByZWdleF90ICpwcmVnOw0KIGNoYXIgKmxvY2FsYnVm
Ow0KK2ludCBtYXhuOw0KIHsNCiAJcmVnaXN0ZXIgc3RydWN0IHJlcnIgKnI7
DQogDQpAQCAtMTczLDYgKzE3NCw2IEBADQogCWlmIChyLT5jb2RlID09IDAp
DQogCQlyZXR1cm4oIjAiKTsNCiANCi0Jc3ByaW50Zihsb2NhbGJ1ZiwgIiVk
Iiwgci0+Y29kZSk7DQorCXNucHJpbnRmKGxvY2FsYnVmLCBtYXhuLCAiJWQi
LCByLT5jb2RlKTsNCiAJcmV0dXJuKGxvY2FsYnVmKTsNCiB9DQpkaWZmIC1y
dSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3NnaTJm
YXgvaW1ndG9mYXguYyAuL3NnaTJmYXgvaW1ndG9mYXguYw0KLS0tIC90bXAv
b2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvc2dpMmZheC9pbWd0
b2ZheC5jCVNhdCBGZWIgMTQgMTE6NTA6MjIgMTk5OA0KKysrIC4vc2dpMmZh
eC9pbWd0b2ZheC5jCVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0KQEAgLTIx
NCw3ICsyMTQsNyBAQA0KICAgICBUSUZGU2V0RmllbGQodGlmLCBUSUZGVEFH
X1BBR0VOVU1CRVIsIHBuLCBucGFnZXMpOw0KICAgICBUSUZGU2V0RmllbGQo
dGlmLCBUSUZGVEFHX0NMRUFORkFYREFUQSwgQ0xFQU5GQVhEQVRBX0NMRUFO
KTsNCiAgICAgeyBjaGFyIGJ1ZlsxMDI0XTsNCi0gICAgICBzcHJpbnRmKGJ1
ZiwgIkRpdGhlcmVyZWQgQiZXIHZlcnNpb24gb2YgJXMiLCBpbnB1dCk7DQor
ICAgICAgc25wcmludGYoYnVmLCBzaXplb2YgYnVmLCAiRGl0aGVyZXJlZCBC
JlcgdmVyc2lvbiBvZiAlcyIsIGlucHV0KTsNCiAgICAgICBUSUZGU2V0Rmll
bGQodGlmLCBUSUZGVEFHX0lNQUdFREVTQ1JJUFRJT04sIGJ1Zik7DQogICAg
IH0NCiAgICAgVElGRlNldEZpZWxkKHRpZiwgVElGRlRBR19TT0ZUV0FSRSwg
InNnaTJmYXgiKTsNCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9o
eWxhZmF4LXY0LjBwbDIvdXRpbC9DbGFzczJQYXJhbXMuYysrIC4vdXRpbC9D
bGFzczJQYXJhbXMuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5
bGFmYXgtdjQuMHBsMi91dGlsL0NsYXNzMlBhcmFtcy5jKysJU2F0IEZlYiAx
NCAxMTo0NzoxMiAxOTk4DQorKysgLi91dGlsL0NsYXNzMlBhcmFtcy5jKysJ
TW9uIEZlYiAyMSAxNTowNzoxMiAyMDAwDQpAQCAtNTksMTQgKzU5LDE1IEBA
DQogfQ0KIA0KIHN0YXRpYyBjaGFyKg0KLWFkZFBhcmFtKGNoYXIqIGNwLCB1
X2ludCB2KQ0KK2FkZFBhcmFtKGNoYXIqIGNwLCB1X2ludCB2LCBpbnQgKm1h
eG4pDQogew0KICAgICBpZiAodiAhPSAodV9pbnQpLTEpIHsNCi0Jc3ByaW50
ZihjcCwgIiwldSIsIHYpOw0KLQl3aGlsZSAoKmNwICE9ICdcMCcpIGNwKys7
DQorCXNucHJpbnRmKGNwLCAqbWF4biwgIiwldSIsIHYpOw0KKwl3aGlsZSAo
KmNwICE9ICdcMCcpIHsgY3ArKzsgKCptYXhuKSsrOyB9DQogICAgIH0gZWxz
ZSB7DQogCSpjcCsrID0gJywnOw0KIAkqY3AgPSAnXDAnOw0KKwkoKm1heG4p
Kys7DQogICAgIH0NCiAgICAgcmV0dXJuIChjcCk7DQogfQ0KQEAgLTc2LDE4
ICs3NywxOSBAQA0KIHsNCiAgICAgY2hhciBidWZbMTAyNF07DQogICAgIGNo
YXIqIGNwID0gYnVmOw0KKwlpbnQgbiA9IHNpemVvZiBidWY7DQogDQogICAg
IGlmICh2ciAhPSAodV9pbnQpIC0xKSB7DQotCXNwcmludGYoY3AsICIldSIs
IHZyKTsNCi0Jd2hpbGUgKCpjcCAhPSAnXDAnKSBjcCsrOw0KKwlzbnByaW50
ZihjcCwgbiwgIiV1IiwgdnIpOw0KKwl3aGlsZSAoKmNwICE9ICdcMCcpIHsg
Y3ArKzsgbi0tOyB9Ow0KICAgICB9DQotICAgIGNwID0gYWRkUGFyYW0oY3As
IGJyKTsNCi0gICAgY3AgPSBhZGRQYXJhbShjcCwgd2QpOw0KLSAgICBjcCA9
IGFkZFBhcmFtKGNwLCBsbik7DQotICAgIGNwID0gYWRkUGFyYW0oY3AsIGRm
KTsNCi0gICAgY3AgPSBhZGRQYXJhbShjcCwgZWMpOw0KLSAgICBjcCA9IGFk
ZFBhcmFtKGNwLCBiZik7DQotICAgIGNwID0gYWRkUGFyYW0oY3AsIHN0KTsN
CisgICAgY3AgPSBhZGRQYXJhbShjcCwgYnIsICZuKTsNCisgICAgY3AgPSBh
ZGRQYXJhbShjcCwgd2QsICZuKTsNCisgICAgY3AgPSBhZGRQYXJhbShjcCwg
bG4sICZuKTsNCisgICAgY3AgPSBhZGRQYXJhbShjcCwgZGYsICZuKTsNCisg
ICAgY3AgPSBhZGRQYXJhbShjcCwgZWMsICZuKTsNCisgICAgY3AgPSBhZGRQ
YXJhbShjcCwgYmYsICZuKTsNCisgICAgY3AgPSBhZGRQYXJhbShjcCwgc3Qs
ICZuKTsNCiAgICAgcmV0dXJuIGZ4U3RyKGJ1Zik7DQogfQ0KIA0KZGlmZiAt
cnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGls
L0ZheENsaWVudC5jKysgLi91dGlsL0ZheENsaWVudC5jKysNCi0tLSAvdG1w
L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3V0aWwvRmF4Q2xp
ZW50LmMrKwlTYXQgRmViIDE0IDExOjQ3OjE2IDE5OTgNCisrKyAuL3V0aWwv
RmF4Q2xpZW50LmMrKwlTdW4gRmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC02
MjIsNyArNjIyLDcgQEANCiAJICAgIHRyYWNlU2VydmVyKCItPiBBRE1JTiBY
WFhYIik7DQogCWVsc2Ugew0KIAkgICAgY2hhciBidWZbMTI4XTsNCi0JICAg
IHNwcmludGYoYnVmLCAiLT4gJXMiLCBmbXQpOw0KKwkgICAgc25wcmludGYo
YnVmLCBzaXplb2YgYnVmLCAiLT4gJXMiLCBmbXQpOw0KIAkgICAgdnRyYWNl
U2VydmVyKGJ1ZiwgYXApOw0KIAl9DQogICAgIH0NCmRpZmYgLXJ1IC90bXAv
b2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9QYWdlU2l6
ZS5jKysgLi91dGlsL1BhZ2VTaXplLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFm
YXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9QYWdlU2l6ZS5jKysJU2F0
IEZlYiAxNCAxMTo0NzoyMSAxOTk4DQorKysgLi91dGlsL1BhZ2VTaXplLmMr
KwlTdW4gRmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC03Miw3ICs3Miw3IEBA
DQogUGFnZVNpemVJbmZvOjpyZWFkUGFnZUluZm9GaWxlKCkNCiB7DQogICAg
IGNoYXIgZmlsZVsxMDI0XTsNCi0gICAgc3ByaW50ZihmaWxlLCAiJXMvJXMi
LCBGQVhfTElCREFUQSwgRkFYX1BBR0VTSVpFUyk7DQorICAgIHNucHJpbnRm
KGZpbGUsIHNpemVvZiBmaWxlLCAiJXMvJXMiLCBGQVhfTElCREFUQSwgRkFY
X1BBR0VTSVpFUyk7DQogICAgIFBhZ2VJbmZvQXJyYXkqIGluZm8gPSBuZXcg
UGFnZUluZm9BcnJheTsNCiAgICAgRklMRSogZnAgPSBmb3BlbihmaWxlLCAi
ciIpOw0KICAgICB1X2ludCBsaW5lbm8gPSAwOw0KZGlmZiAtcnUgL3RtcC9v
bGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL1NOUFBDbGll
bnQuYysrIC4vdXRpbC9TTlBQQ2xpZW50LmMrKw0KLS0tIC90bXAvb2xkL2h5
bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9TTlBQQ2xpZW50LmMr
KwlTYXQgRmViIDE0IDExOjQ3OjI1IDE5OTgNCisrKyAuL3V0aWwvU05QUENs
aWVudC5jKysJU3VuIEZlYiAyMCAyMjoxOToyOCAyMDAwDQpAQCAtNjM4LDcg
KzYzOCw3IEBADQogCSAgICB0cmFjZVNlcnZlcigiLT4gTE9HSSBYWFhYIik7
DQogCWVsc2Ugew0KIAkgICAgY2hhciBidWZbMTI4XTsNCi0JICAgIHNwcmlu
dGYoYnVmLCAiLT4gJXMiLCBmbXQpOw0KKwkgICAgc25wcmludGYoYnVmLCBz
aXplb2YgYnVmLCAiLT4gJXMiLCBmbXQpOw0KIAkgICAgdnRyYWNlU2VydmVy
KGJ1ZiwgYXApOw0KIAl9DQogICAgIH0NCmRpZmYgLXJ1IC90bXAvb2xkL2h5
bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9TdGFja0J1ZmZlci5j
KysgLi91dGlsL1N0YWNrQnVmZmVyLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFm
YXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9TdGFja0J1ZmZlci5jKysJ
U2F0IEZlYiAxNCAxMTo0NzoyNiAxOTk4DQorKysgLi91dGlsL1N0YWNrQnVm
ZmVyLmMrKwlTdW4gRmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC0xMDUsNyAr
MTA1LDcgQEANCiBmeFN0YWNrQnVmZmVyOjp2cHV0KGNvbnN0IGNoYXIqIGZt
dCwgdmFfbGlzdCBhcCkNCiB7DQogICAgIGNoYXIgYnVmWzgqMTAyNF07DQot
ICAgIHZzcHJpbnRmKGJ1ZiwgZm10LCBhcCk7DQorICAgIHZzbnByaW50Zihi
dWYsIHNpemVvZiBidWYsIGZtdCwgYXApOw0KICAgICBwdXQoYnVmKTsNCiB9
DQogDQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12
NC4wcGwyL3V0aWwvU3RyLmMrKyAuL3V0aWwvU3RyLmMrKw0KLS0tIC90bXAv
b2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9TdHIuYysr
CVNhdCBGZWIgMTQgMTE6NDc6MjcgMTk5OA0KKysrIC4vdXRpbC9TdHIuYysr
CVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0KQEAgLTkxLDcgKzkxLDcgQEAN
CiB7DQogICAgIGNoYXIgYnVmZmVyW05VTUJVRlNJWkVdOw0KICAgICBpZiAo
IWZvcm1hdCkgZm9ybWF0ID0gIiVkIjsNCi0gICAgc3ByaW50ZihidWZmZXIs
Zm9ybWF0LGEpOw0KKyAgICBzbnByaW50ZihidWZmZXIsIE5VTUJVRlNJWkUs
IGZvcm1hdCxhKTsNCiAgICAgc2xlbmd0aCA9IHN0cmxlbihidWZmZXIpICsg
MTsNCiAgICAgZGF0YSA9IChjaGFyKikgbWFsbG9jKHNsZW5ndGgpOw0KICAg
ICBtZW1jcHkoZGF0YSxidWZmZXIsc2xlbmd0aCk7DQpAQCAtMTAxLDcgKzEw
MSw3IEBADQogew0KICAgICBjaGFyIGJ1ZmZlcltOVU1CVUZTSVpFXTsNCiAg
ICAgaWYgKCFmb3JtYXQpIGZvcm1hdCA9ICIlbGQiOw0KLSAgICBzcHJpbnRm
KGJ1ZmZlcixmb3JtYXQsYSk7DQorICAgIHNucHJpbnRmKGJ1ZmZlciwgTlVN
QlVGU0laRSwgZm9ybWF0LGEpOw0KICAgICBzbGVuZ3RoID0gc3RybGVuKGJ1
ZmZlcikgKyAxOw0KICAgICBkYXRhID0gKGNoYXIqKSBtYWxsb2Moc2xlbmd0
aCk7DQogICAgIG1lbWNweShkYXRhLGJ1ZmZlcixzbGVuZ3RoKTsNCkBAIC0x
MTEsNyArMTExLDcgQEANCiB7DQogICAgIGNoYXIgYnVmZmVyW05VTUJVRlNJ
WkVdOw0KICAgICBpZiAoIWZvcm1hdCkgZm9ybWF0ID0gIiVnIjsNCi0gICAg
c3ByaW50ZihidWZmZXIsZm9ybWF0LGEpOw0KKyAgICBzbnByaW50ZihidWZm
ZXIsIE5VTUJVRlNJWkUsIGZvcm1hdCxhKTsNCiAgICAgc2xlbmd0aCA9IHN0
cmxlbihidWZmZXIpICsgMTsNCiAgICAgZnhBc3NlcnQoc2xlbmd0aD4xLCAi
U3RyOjpTdHIoZmxvYXQpOiBib2d1cyBjb252ZXJzaW9uIik7DQogICAgIGRh
dGEgPSAoY2hhciopIG1hbGxvYyhzbGVuZ3RoKTsNCkBAIC0xMjIsNyArMTIy
LDcgQEANCiB7DQogICAgIGNoYXIgYnVmZmVyW05VTUJVRlNJWkVdOw0KICAg
ICBpZiAoIWZvcm1hdCkgZm9ybWF0ID0gIiVsZyI7DQotICAgIHNwcmludGYo
YnVmZmVyLGZvcm1hdCxhKTsNCisgICAgc25wcmludGYoYnVmZmVyLCBOVU1C
VUZTSVpFLCBmb3JtYXQsYSk7DQogICAgIHNsZW5ndGggPSBzdHJsZW4oYnVm
ZmVyKSArIDE7DQogICAgIGZ4QXNzZXJ0KHNsZW5ndGg+MSwgIlN0cjo6U3Ry
KGRvdWJsZSk6IGJvZ3VzIGNvbnZlcnNpb24iKTsNCiAgICAgZGF0YSA9IChj
aGFyKikgbWFsbG9jKHNsZW5ndGgpOyAvLyBYWFggYXNzdW1lIHNsZW5ndGg+
MQ0KQEAgLTE0MSw3ICsxNDEsNyBAQA0KICAgICBjaGFyIGJ1Zls0MDk2XTsN
CiAgICAgdmFfbGlzdCBhcDsNCiAgICAgdmFfc3RhcnQoYXAsIGZtdCk7DQot
ICAgIHZzcHJpbnRmKGJ1ZiwgZm10LCBhcCk7DQorICAgIHZzbnByaW50Zihi
dWYsIHNpemVvZiBidWYsIGZtdCwgYXApOw0KICAgICB2YV9lbmQoYXApOw0K
ICAgICByZXR1cm4gZnhTdHIoYnVmKTsNCiB9DQpAQCAtMTUwLDcgKzE1MCw3
IEBADQogZnhTdHI6OnZmb3JtYXQoY29uc3QgY2hhciogZm10LCB2YV9saXN0
IGFwKQ0KIHsNCiAgICAgY2hhciBidWZbNDA5Nl07DQotICAgIHZzcHJpbnRm
KGJ1ZiwgZm10LCBhcCk7DQorICAgIHZzbnByaW50ZihidWYsIHNpemVvZiBi
dWYsIGZtdCwgYXApOw0KICAgICByZXR1cm4gZnhTdHIoYnVmKTsNCiB9DQog
DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4w
cGwyL3V0aWwvU3RyLmggLi91dGlsL1N0ci5oDQotLS0gL3RtcC9vbGQvaHls
YWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL1N0ci5oCVNhdCBGZWIg
MTQgMTE6NDc6NTAgMTk5OA0KKysrIC4vdXRpbC9TdHIuaAlTdW4gRmViIDIw
IDIyOjE5OjI4IDIwMDANCkBAIC05Myw4ICs5Myw4IEBADQogICAgIGZ4U3Ry
KGNvbnN0IGZ4VGVtcFN0ciYpOw0KICAgICB+ZnhTdHIoKTsNCiANCi0gICAg
c3RhdGljIGZ4U3RyIGZvcm1hdChjb25zdCBjaGFyKiBmbXQgLi4uKTsJLy8g
c3ByaW50ZiBzb3J0IG9mDQotICAgIHN0YXRpYyBmeFN0ciB2Zm9ybWF0KGNv
bnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcCk7CS8vIHZzcHJpbnRmIHNvcnQg
b2YNCisgICAgc3RhdGljIGZ4U3RyIGZvcm1hdChjb25zdCBjaGFyKiBmbXQg
Li4uKTsJLy8gc25wcmludGYgc29ydCBvZg0KKyAgICBzdGF0aWMgZnhTdHIg
dmZvcm1hdChjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgYXApOwkvLyB2c25w
cmludGYgc29ydCBvZg0KICAgICBzdGF0aWMgZnhTdHIgbnVsbDsJCQkJLy8g
bnVsbCBzdHJpbmcgZm9yIGdlbmVyYWwgdXNlDQogICAgIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQog
ICAgIHVfbG9uZyBoYXNoKCkgY29uc3Q7DQpkaWZmIC1ydSAvdG1wL29sZC9o
eWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3V0aWwvZmF4Y29uZmlnLmMg
Li91dGlsL2ZheGNvbmZpZy5jDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3Jr
L2h5bGFmYXgtdjQuMHBsMi91dGlsL2ZheGNvbmZpZy5jCU1vbiBGZWIgMjEg
MTU6MTk6NDQgMjAwMA0KKysrIC4vdXRpbC9mYXhjb25maWcuYwlTdW4gRmVi
IDIwIDIyOjE5OjI4IDIwMDANCkBAIC04Myw3ICs4Myw3IEBADQogCWlmIChk
ZXZpZFswXSA9PSBGQVhfRklGT1swXSkNCiAJICAgIHN0cmNweShmaWZvbmFt
ZSwgZGV2aWQpOw0KIAllbHNlDQotCSAgICBzcHJpbnRmKGZpZm9uYW1lLCAi
JXMuJS4qcyIsIEZBWF9GSUZPLA0KKwkgICAgc25wcmludGYoZmlmb25hbWUs
IHNpemVvZiBmaWZvbmFtZSwgIiVzLiUuKnMiLCBGQVhfRklGTywNCiAJCXNp
emVvZiAoZmlmb25hbWUpIC0gc2l6ZW9mIChGQVhfRklGTyksIGRldmlkKTsN
CiAgICAgfSBlbHNlDQogCXN0cmNweShmaWZvbmFtZSwgRkFYX0ZJRk8pOw0K
QEAgLTExMSwxMCArMTExLDEwIEBADQogCQlxdW90ZSA9IDE7DQogCSAgICBj
bWQgPSBtYWxsb2Moc3RybGVuKGFyZ3Zbb3B0aW5kXSkrc3RybGVuKGFyZ3Zb
b3B0aW5kKzFdKSsxMCk7DQogCSAgICBpZiAocXVvdGUpDQotCQlzcHJpbnRm
KGNtZCwgIkMlcyVzOlwiJXNcIiIsDQorCQlzbnByaW50ZihjbWQsIHN0cmxl
bihhcmd2W29wdGluZF0pK3N0cmxlbihhcmd2W29wdGluZCsxXSkrMTAsICJD
JXMlczpcIiVzXCIiLA0KIAkJICAgIGlzUXVldWVyID8gIjoiIDogIiIsIGFy
Z3Zbb3B0aW5kXSwgYXJndltvcHRpbmQrMV0pOw0KIAkgICAgZWxzZQ0KLQkJ
c3ByaW50ZihjbWQsICJDJXMlczolcyIsDQorCQlzbnByaW50ZihjbWQsIHN0
cmxlbihhcmd2W29wdGluZF0pK3N0cmxlbihhcmd2W29wdGluZCsxXSkrMTAs
IkMlcyVzOiVzIiwNCiAJCSAgICBpc1F1ZXVlciA/ICI6IiA6ICIiLCBhcmd2
W29wdGluZF0sIGFyZ3Zbb3B0aW5kKzFdKTsNCiAJICAgIGlmICh3cml0ZShm
aWZvLCBjbWQsIHN0cmxlbihjbWQpKSAhPSBzdHJsZW4oY21kKSkNCiAJCWZh
dGFsKCIlczogRklGTyB3cml0ZSBmYWlsZWQgZm9yIGNvbW1hbmQgKCVzKSIs
DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4w
cGwyL3V0aWwvZmF4bW9kZW0uYyAuL3V0aWwvZmF4bW9kZW0uYw0KLS0tIC90
bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9mYXht
b2RlbS5jCU1vbiBGZWIgMjEgMTU6MTk6NDQgMjAwMA0KKysrIC4vdXRpbC9m
YXhtb2RlbS5jCVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0KQEAgLTI0Myw5
ICsyNDMsOSBAQA0KICAgICBpZiAob3B0aW5kICE9IGFyZ2MtMSkNCiAJZmF0
YWwoIk1pc3NpbmcgbW9kZW0gZGV2aWNlLlxudXNhZ2U6ICVzICVzIG1vZGVt
IiwgYXJndlswXSwgdXNhZ2UpOw0KICAgICBpZiAoc3RybmNtcChhcmd2W29w
dGluZF0sIF9QQVRIX0RFViwgc3RybGVuKF9QQVRIX0RFVikpID09IDApDQot
CXN0cmNweShkZXZuYW1lLCBhcmd2W29wdGluZF0rc3RybGVuKF9QQVRIX0RF
VikpOw0KKwlzdHJsY3B5KGRldm5hbWUsIGFyZ3Zbb3B0aW5kXStzdHJsZW4o
X1BBVEhfREVWKSwgc2l6ZW9mIGRldm5hbWUpOw0KICAgICBlbHNlDQotCXN0
cmNweShkZXZuYW1lLCBhcmd2W29wdGluZF0pOw0KKwlzdHJsY3B5KGRldm5h
bWUsIGFyZ3Zbb3B0aW5kXSwgc2l6ZW9mIGRldm5hbWUpOw0KICAgICBmb3Ig
KGNwID0gZGV2bmFtZTsgY3AgPSBzdHJjaHIoY3AsICcvJyk7ICpjcCsrID0g
J18nKQ0KIAk7DQogICAgIGlmIChjaGRpcihzcG9vbGRpcikgPCAwKQ0KQEAg
LTI1NCw5ICsyNTQsOSBAQA0KICAgICBpZiAoZmlmbyA8IDApDQogCWZhdGFs
KCIlczogb3BlbjogJXMiLCBGQVhfRklGTywgc3RyZXJyb3IoZXJybm8pKTsN
CiAgICAgaWYgKHByaW9yaXR5ICE9IC0xKQ0KLQlzcHJpbnRmKGNtZCwgIisl
czpSJWMlMDh4OiV4IiwgZGV2bmFtZSwgY2FucG9sbCwgY2FwcywgcHJpb3Jp
dHkpOw0KKwlzbnByaW50ZihjbWQsIHNpemVvZiBjbWQsICIrJXM6UiVjJTA4
eDoleCIsIGRldm5hbWUsIGNhbnBvbGwsIGNhcHMsIHByaW9yaXR5KTsNCiAg
ICAgZWxzZQ0KLQlzcHJpbnRmKGNtZCwgIislczpSJWMlMDh4IiwgZGV2bmFt
ZSwgY2FucG9sbCwgY2Fwcyk7DQorCXNucHJpbnRmKGNtZCwgc2l6ZW9mIGNt
ZCwgIislczpSJWMlMDh4IiwgZGV2bmFtZSwgY2FucG9sbCwgY2Fwcyk7DQog
ICAgIGlmICh3cml0ZShmaWZvLCBjbWQsIHN0cmxlbihjbWQpKSAhPSBzdHJs
ZW4oY21kKSkNCiAJZmF0YWwoIiVzOiBGSUZPIHdyaXRlIGZhaWxlZCBmb3Ig
Y29tbWFuZCAoJXMpIiwNCiAJICAgIGFyZ3ZbMF0sIHN0cmVycm9yKGVycm5v
KSk7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12
NC4wcGwyL3V0aWwvZmF4bXNnLmMgLi91dGlsL2ZheG1zZy5jDQotLS0gL3Rt
cC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL2ZheG1z
Zy5jCU1vbiBGZWIgMjEgMTU6MTk6NDQgMjAwMA0KKysrIC4vdXRpbC9mYXht
c2cuYwlTdW4gRmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC0xMDgsMTIgKzEw
OCwxMiBAQA0KIAl9DQogICAgIGlmIChvcHRpbmQgPT0gYXJnYy0xKSB7DQog
CWlmIChhcmd2W29wdGluZF1bMF0gPT0gRkFYX0ZJRk9bMF0pDQotCSAgICBz
dHJjcHkoZmlmb25hbWUsIGFyZ3Zbb3B0aW5kXSk7DQorCSAgICBzdHJsY3B5
KGZpZm9uYW1lLCBhcmd2W29wdGluZF0sIHNpemVvZiBmaWZvbmFtZSk7DQog
CWVsc2UNCi0JICAgIHNwcmludGYoZmlmb25hbWUsICIlcy4lLipzIiwgRkFY
X0ZJRk8sDQorCSAgICBzbnByaW50ZihmaWZvbmFtZSwgc2l6ZW9mIGZpZm9u
YW1lLCAiJXMuJS4qcyIsIEZBWF9GSUZPLA0KIAkJc2l6ZW9mIChmaWZvbmFt
ZSkgLSBzaXplb2YgKEZBWF9GSUZPKSwgYXJndltvcHRpbmRdKTsNCiAgICAg
fSBlbHNlIGlmICghbW9kZW1SZXF1aXJlZCkgew0KLQlzdHJjcHkoZmlmb25h
bWUsIEZBWF9GSUZPKTsNCisJc3RybGNweShmaWZvbmFtZSwgRkFYX0ZJRk8s
IHNpemVvZiBmaWZvbmFtZSk7DQogICAgIH0gZWxzZQ0KIAlmYXRhbCgidXNh
Z2U6ICVzICVzIiwgYXJndlswXSwgdXNhZ2UpOw0KICAgICBmb3IgKGNwID0g
Zmlmb25hbWU7IGNwID0gc3RyY2hyKGNwLCAnLycpOyAqY3ArKyA9ICdfJykN
CkBAIC0xMjMsNyArMTIzLDcgQEANCiAgICAgZmlmbyA9IG9wZW4oZmlmb25h
bWUsIE9fV1JPTkxZfE9fTkRFTEFZKTsNCiAgICAgaWYgKGZpZm8gPCAwKQ0K
IAlmYXRhbCgiJXM6IG9wZW46ICVzIiwgZmlmb25hbWUsIHN0cmVycm9yKGVy
cm5vKSk7DQotICAgIHNwcmludGYoY21kLCBjbWRmbXQsIGFyZyk7DQorICAg
IHNucHJpbnRmKGNtZCwgc2l6ZW9mIGNtZCwgY21kZm10LCBhcmcpOw0KICAg
ICBpZiAod3JpdGUoZmlmbywgY21kLCBzdHJsZW4oY21kKSkgIT0gc3RybGVu
KGNtZCkpDQogCWZhdGFsKCJGSUZPIHdyaXRlIGZhaWxlZCBmb3IgY29tbWFu
ZCAoJXMpIiwgc3RyZXJyb3IoZXJybm8pKTsNCiAgICAgKHZvaWQpIGNsb3Nl
KGZpZm8pOw0KZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFm
YXgtdjQuMHBsMi91dGlsL2ZheHN0YXRlLmMgLi91dGlsL2ZheHN0YXRlLmMN
Ci0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3V0
aWwvZmF4c3RhdGUuYwlNb24gRmViIDIxIDE1OjE5OjQ0IDIwMDANCisrKyAu
L3V0aWwvZmF4c3RhdGUuYwlTdW4gRmViIDIwIDIyOjE5OjI4IDIwMDANCkBA
IC0xMTMsNyArMTEzLDcgQEANCiAJfQ0KICAgICBpZiAob3B0aW5kICE9IGFy
Z2MtMSkNCiAJZmF0YWwoIkJhZCBvcHRpb24gYCVjJzsgdXNhZ2U6ICVzICVz
IG1vZGVtIiwgYywgYXJndlswXSwgdXNhZ2UpOw0KLSAgICBzdHJjcHkoZGV2
aWQsIGFyZ3Zbb3B0aW5kXSk7DQorICAgIHN0cmxjcHkoZGV2aWQsIGFyZ3Zb
b3B0aW5kXSwgMjU2KTsNCiAgICAgZm9yIChjcCA9IGRldmlkOyBjcCA9IHN0
cmNocihjcCwgJy8nKTsgKmNwKysgPSAnXycpDQogCTsNCiAgICAgaWYgKGNo
ZGlyKHNwb29sZGlyKSA8IDApDQpAQCAtMTI2LDE2ICsxMjYsMTYgQEANCiAJ
ZmlmbyA9IG9wZW4oRkFYX0ZJRk8sIE9fV1JPTkxZfE9fTkRFTEFZKTsNCiAJ
aWYgKGZpZm8gPCAwKQ0KIAkgICAgZmF0YWwoIiVzOiBvcGVuOiAlcyIsIEZB
WF9GSUZPLCBzdHJlcnJvcihlcnJubykpOw0KLQlzcHJpbnRmKGNtZCwgIisl
czolcyIsIGRldmlkLCBhcmcpOw0KKwlzbnByaW50ZihjbWQsIHNpemVvZiBj
bWQsICIrJXM6JXMiLCBkZXZpZCwgYXJnKTsNCiAJaWYgKHdyaXRlKGZpZm8s
IGNtZCwgc3RybGVuKGNtZCkpICE9IHN0cmxlbihjbWQpKQ0KIAkgICAgZmF0
YWwoIkZJRk8gd3JpdGUgZmFpbGVkIGZvciBjb21tYW5kICglcykiLCBzdHJl
cnJvcihlcnJubykpOw0KICAgICB9IGVsc2Ugew0KLQlzcHJpbnRmKGZpZm9u
YW1lLCAiJXMuJS4qcyIsIEZBWF9GSUZPLA0KKwlzbnByaW50ZihmaWZvbmFt
ZSwgc2l6ZW9mIGZpZm9uYW1lLCAiJXMuJS4qcyIsIEZBWF9GSUZPLA0KIAkg
ICAgc2l6ZW9mIChmaWZvbmFtZSkgLSBzaXplb2YgKEZBWF9GSUZPKSwgZGV2
aWQpOw0KIAlmaWZvID0gb3BlbihmaWZvbmFtZSwgT19XUk9OTFl8T19OREVM
QVkpOw0KIAlpZiAoZmlmbyA8IDApIA0KIAkgICAgZmF0YWwoIiVzOiBvcGVu
OiAlcyIsIGZpZm9uYW1lLCBzdHJlcnJvcihlcnJubykpOw0KLQlzcHJpbnRm
KGNtZCwgIlMlcyIsIGFyZyk7DQorCXNucHJpbnRmKGNtZCwgc2l6ZW9mIGNt
ZCwgIlMlcyIsIGFyZyk7DQogCWlmICh3cml0ZShmaWZvLCBjbWQsIHN0cmxl
bihjbWQpKSAhPSBzdHJsZW4oY21kKSkNCiAJICAgIGZhdGFsKCJGSUZPIHdy
aXRlIGZhaWxlZCBmb3IgY29tbWFuZCAoJXMpIiwgc3RyZXJyb3IoZXJybm8p
KTsNCiAgICAgfQ0K

--_=XFMail.1.4.4.FreeBSD:20000226110039:9639=_--
End of MIME message


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20000226110039.mheffner>