[radvd-devel-l] ensure null-termination, enhance radvdump

Pekka Savola radvd-devel-l@litech.org
Wed, 2 Jan 2002 21:22:16 +0200 (EET)


  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.

--1589707168-1110231881-1009974280=:25274
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.33.0201021424451.25274@netcore.fi>

Hello all,

Attached are latest changes:

1) with strncpy, ensure the strings are always NULL-terminated.  Sigh, I 
so miss strlcpy.  The problem is that with:

strncpy(ifr.ifr_name, ifn, IFNAMSIZ-1);

ifr.ifr_name[IFNAMSIZ-1] will be left uninitialized (or what it was before 
copying).

However, the user cannot "reach this" (as strncpy does not copy up to it),
or the memory segments after strncpy'ies in question, so I don't think it
could be in practise be exploited.  Some crashes when using too long
interface names might be more likely.

But all in all, it's better be safe than sorry :-).

2) Marko Myllynen (and some bits from me) have enhanced radvdump; it's now 
possible to do 'radvdump -f -e', where -e flag omits all default options 
from heard advertisements, making the configuration file which will be 
shown a lot more readable.

Comments welcome, as always.

-- 
Pekka Savola                 "Tell me of difficulties surmounted,
Netcore Oy                   not those you stumble over and fall"
Systems. Networks. Security.  -- Robert Jordan: A Crown of Swords

--1589707168-1110231881-1009974280=:25274
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="radvd-cvs-update.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33.0201021424400.25274@netcore.fi>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="radvd-cvs-update.diff"

SW5kZXg6IENIQU5HRVMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBm
aWxlOiAvd29yay9jdnNyb290L3JhZHZkL0NIQU5HRVMsdg0KcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjE1DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcNCmRp
ZmYgLXUgLXIxLjE1IC1yMS4xNw0KLS0tIENIQU5HRVMJMjAwMS8xMi8yOCAw
ODozODoxOAkxLjE1DQorKysgQ0hBTkdFUwkyMDAyLzAxLzAyIDExOjAxOjEx
CTEuMTcNCkBAIC0xLDUgKzEsMTMgQEANCi0kSWQ6IENIQU5HRVMsdiAxLjE1
IDIwMDEvMTIvMjggMDg6Mzg6MTggcHNhdm9sYSBFeHAgJA0KKyRJZDogQ0hB
TkdFUyx2IDEuMTcgMjAwMi8wMS8wMiAxMTowMToxMSBwc2F2b2xhIEV4cCAk
DQogDQorMDEvMDIvMjAwMglFbnN1cmUgTlVMTC10ZXJtaW5hdGlvbiB3aXRo
IHN0cm5jcHkuDQorDQorMTIvMzEvMjAwMQlSYWR2ZHVtcCBmaXhlczogZWxp
bWluYXRlIGEgd2FybmluZyBvZiBQcmVmaXggSW5mb3JtYXRpb24NCisJCXNl
Y3Rpb25zIHdpdGggJy1kIC1mJzsgYWRkIGEgbm90ZSB0aGF0DQorCQl7TWlu
LE1heH1SdHJBZHZJbnRlcnZhbCBjYW5ub3QgYmUgb2J0YWluZWQgd2l0aCAn
LWYnOw0KKwkJaW1wbGVtZW50ICctZScgdG8gYmUgdXNlZCB3aXRoICctZicg
d2hpY2ggb21pdHMgYWxsDQorCQlhZHZlcnRpc2VkIGRlZmF1bHQgc2V0dGlu
Z3MuIE1vc3RseSBieSBNYXJrbyBNeWxseW5lbi4NCisNCiAxMi8yOC8yMDAx
CVNtYWxsIGNsZWFudXBzLiAgQWR2U2VuZEFkdmVydCBpcyBpbXBsaWNpdGx5
IG9mZiBieQ0KIAkJZGVmYXVsdC4gIENoZWNrIGNvbmZpZ3VyYXRpb24gZmls
ZSBwZXJtaXNzaW9uczsgbXVzdA0KIAkJbm90IGJlIHdyaXRhYmxlIGJ5IG90
aGVycywgYW5kIGlmIG5vbi1yb290LA0KQEAgLTEwLDYgKzE4LDcgQEANCiAJ
CU1hcmtvIE15bGx5bmVuLg0KIA0KIDExLzIyLzIwMDEJTWluUnRyQWR2SW50
ZXJ2YWwgZm9yIE1JUHY2IGlzIDAuMDUgc2Vjb25kcywgbm90IDAuNS4NCisJ
CShOb3RlOiB1bnRlc3RlZCkuDQogDQogMTEvMjAvMjAwMQlSZXdvcmsgQlNE
IGRldmljZSBtZW1vcnkgbWFuYWdlbWVudCBhIGJpdCwgbWlub3IgY2xlYW51
cHMuDQogCQlWZXJzaW9uIGJ1bXBlZCB0byAwLjcuMC4NCkluZGV4OiBUT0RP
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3dvcmsvY3Zz
cm9vdC9yYWR2ZC9UT0RPLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS45DQpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTANCmRpZmYgLXUgLXIxLjkgLXIxLjEw
DQotLS0gVE9ETwkyMDAxLzEyLzI4IDA3OjMxOjMyCTEuOQ0KKysrIFRPRE8J
MjAwMS8xMi8zMSAxMTo0MDo1NgkxLjEwDQpAQCAtMSw0ICsxLDQgQEANCi0k
SWQ6IFRPRE8sdiAxLjkgMjAwMS8xMi8yOCAwNzozMTozMiBwc2F2b2xhIEV4
cCAkDQorJElkOiBUT0RPLHYgMS4xMCAyMDAxLzEyLzMxIDExOjQwOjU2IHBz
YXZvbGEgRXhwICQNCiANCiByZWFkIGxpc3Qgb2YgaW50ZXJmYWNlcyB3aXRo
IFNJT0NHSUZDT05GIChBRl9JTkVUNiBzdXBwb3J0IGluIHRoZSBrZXJuZWwg
d291bGQNCiBiZSBuaWNlKSBvciBmcm9tIC9wcm9jDQpAQCAtMjAsOCArMjAs
MTEgQEANCiANCiBzdXBwb3J0IGZvciBmZXcgcHJvdG9jb2wgY29uc3RhbnRz
IGRlZmluZWQgaW4gUkZDIDI0NjEgU2VjIDEwIGlzIG1pc3NpbmcuDQogDQot
KiByZWFkIHRoZSBtYW4gcGFnZXMgb25lIG1vcmUgdGltZSBhbmQgbWFrZSBz
dXJlIHRoZWlyIGFyZSB1bmRlcnN0YW5kYWJsZQ0KLSAgYW5kIEVuZ2xpc2gg
aXMgY29ycmVjdA0KLSogZmluaXNoIHJhZHZkdW1wIC0tZmlsZS1vdXRwdXQg
aW50ZXJmYWNlIGlkZW50aWZpZXIgY29kZQ0KLSAgKGNoYW5nZSBoYXJkLWNv
ZGVkIGV0aDAtPmFjdHVhbCByZWNlaXZpbmcgaW50ZXJmYWNlIC0gZm9yIGJv
dGggQlNEL0xpbnV4DQotICAgYW5kIHBlcmhhcHMgLS1maWxlLW91dHB1dCBj
b3VsZCBiZSByZW5hbWVkIHRvIC0tZmlsZS1mb3JtYXQpDQorY29uc2lkZXIg
d2hldGhlciBpdCdzIHdvcnRoIGludGVncmF0aW5nIHJhZHZkdW1wIHByaW50
X2ZmIGFuZCBwcmludF9yYQ0KK2Z1bmN0aW9ucyBhcyB0aGV5IHByb3ZpZGUg
dmVyeSBzaW1pbGFyIHNlcnZpY2UgYW5kIHRoZXJlJ3Mgc29tZSBjb2RlDQor
ZHVwbGljYXRpb24uDQorDQorY29uc2lkZXIgd2hldGhlciBVbmljYXN0T25s
eSBmbGFnIHNob3VsZCBiZSBkZXRlY3RlZCBieSByYWR2ZHVtcC4NCisNCity
ZWFkIHRoZSBtYW4gcGFnZXMgb25lIG1vcmUgdGltZSBhbmQgbWFrZSBzdXJl
IHRoZWlyIGFyZSB1bmRlcnN0YW5kYWJsZQ0KK2FuZCBFbmdsaXNoIGlzIGNv
cnJlY3QNCkluZGV4OiBkZXZpY2UtYnNkNDQuYw0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KUkNTIGZpbGU6IC93b3JrL2N2c3Jvb3QvcmFkdmQvZGV2aWNl
LWJzZDQ0LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjkNCnJldHJpZXZp
bmcgcmV2aXNpb24gMS4xMA0KZGlmZiAtdSAtcjEuOSAtcjEuMTANCi0tLSBk
ZXZpY2UtYnNkNDQuYwkyMDAxLzExLzIwIDIxOjA2OjEwCTEuOQ0KKysrIGRl
dmljZS1ic2Q0NC5jCTIwMDIvMDEvMDIgMTE6MDE6MTEJMS4xMA0KQEAgLTEs
NSArMSw1IEBADQogLyoNCi0gKiAgICRJZDogZGV2aWNlLWJzZDQ0LmMsdiAx
LjkgMjAwMS8xMS8yMCAyMTowNjoxMCBwc2F2b2xhIEV4cCAkDQorICogICAk
SWQ6IGRldmljZS1ic2Q0NC5jLHYgMS4xMCAyMDAyLzAxLzAyIDExOjAxOjEx
IHBzYXZvbGEgRXhwICQNCiAgKg0KICAqICAgQXV0aG9yczoNCiAgKiAgICBD
cmFpZyBNZXR6CQk8Y21ldHpAaW5uZXIubmV0Pg0KQEAgLTIxOCw2ICsyMTgs
NyBAQA0KIAkNCiAJbWVtc2V0KCAmaWZyLCAwLCBzaXplb2YoIHN0cnVjdCBp
ZnJlcSApICk7DQogCXN0cm5jcHkoaWZyLmlmcl9uYW1lLCBpZm4sIElGTkFN
U0laLTEpOw0KKwlpZnIuaWZyX25hbWVbSUZOQU1TSVotMV0gPSAnXDAnOw0K
IAlpZnIuaWZyX2FkZHIuc2FfZmFtaWx5ID0gQUZfSU5FVDsNCiAJDQogCWlm
IChpb2N0bChmZCwgU0lPQ0dJRkFERFIsICZpZnIpIDwgMCkNCkluZGV4OiBk
ZXZpY2UtY29tbW9uLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBm
aWxlOiAvd29yay9jdnNyb290L3JhZHZkL2RldmljZS1jb21tb24uYyx2DQpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMg0KcmV0cmlldmluZyByZXZpc2lvbiAx
LjMNCmRpZmYgLXUgLXIxLjIgLXIxLjMNCi0tLSBkZXZpY2UtY29tbW9uLmMJ
MjAwMS8xMS8xNCAxOTo1ODoxMQkxLjINCisrKyBkZXZpY2UtY29tbW9uLmMJ
MjAwMi8wMS8wMiAxMTowMToxMQkxLjMNCkBAIC0xLDUgKzEsNSBAQA0KIC8q
DQotICogICAkSWQ6IGRldmljZS1jb21tb24uYyx2IDEuMiAyMDAxLzExLzE0
IDE5OjU4OjExIGx1dGNoYW5uIEV4cCAkDQorICogICAkSWQ6IGRldmljZS1j
b21tb24uYyx2IDEuMyAyMDAyLzAxLzAyIDExOjAxOjExIHBzYXZvbGEgRXhw
ICQNCiAgKg0KICAqICAgQXV0aG9yczoNCiAgKiAgICBMYXJzIEZlbm5lYmVy
ZwkJPGxmQGVsZW1lbnRhbC5uZXQ+CSANCkBAIC0yNCw3ICsyNCw4IEBADQog
CXN0cnVjdCBpZnJlcQlpZnI7DQogCQ0KIAlzdHJuY3B5KGlmci5pZnJfbmFt
ZSwgaWZhY2UtPk5hbWUsIElGTkFNU0laLTEpOw0KLQkNCisJaWZyLmlmcl9u
YW1lW0lGTkFNU0laLTFdID0gJ1wwJzsNCisNCiAJaWYgKGlvY3RsKHNvY2ss
IFNJT0NHSUZGTEFHUywgJmlmcikgPCAwKQ0KIAl7DQogCQlsb2coTE9HX0VS
UiwgImlvY3RsKFNJT0NHSUZGTEFHUykgZmFpbGVkIGZvciAlczogJXMiLCAN
CkluZGV4OiBkZXZpY2UtbGludXguYw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KUkNTIGZpbGU6IC93b3JrL2N2c3Jvb3QvcmFkdmQvZGV2aWNlLWxpbnV4
LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjYNCnJldHJpZXZpbmcgcmV2
aXNpb24gMS43DQpkaWZmIC11IC1yMS42IC1yMS43DQotLS0gZGV2aWNlLWxp
bnV4LmMJMjAwMS8xMS8xNCAxOTo1ODoxMQkxLjYNCisrKyBkZXZpY2UtbGlu
dXguYwkyMDAyLzAxLzAyIDExOjAxOjExCTEuNw0KQEAgLTEsNSArMSw1IEBA
DQogLyoNCi0gKiAgICRJZDogZGV2aWNlLWxpbnV4LmMsdiAxLjYgMjAwMS8x
MS8xNCAxOTo1ODoxMSBsdXRjaGFubiBFeHAgJA0KKyAqICAgJElkOiBkZXZp
Y2UtbGludXguYyx2IDEuNyAyMDAyLzAxLzAyIDExOjAxOjExIHBzYXZvbGEg
RXhwICQNCiAgKg0KICAqICAgQXV0aG9yczoNCiAgKiAgICBMYXJzIEZlbm5l
YmVyZwkJPGxmQGVsZW1lbnRhbC5uZXQ+CSANCkBAIC0zNSw3ICszNSw4IEBA
DQogCXN0cnVjdCBBZHZQcmVmaXggKnByZWZpeDsNCiAJDQogCXN0cm5jcHko
aWZyLmlmcl9uYW1lLCBpZmFjZS0+TmFtZSwgSUZOQU1TSVotMSk7DQotCQ0K
KwlpZnIuaWZyX25hbWVbSUZOQU1TSVotMV0gPSAnXDAnOw0KKw0KIAlpZiAo
aW9jdGwoc29jaywgU0lPQ0dJRkhXQUREUiwgJmlmcikgPCAwKQ0KIAl7DQog
CQlsb2coTE9HX0VSUiwgImlvY3RsKFNJT0NHSUZIV0FERFIpIGZhaWxlZCBm
b3IgJXM6ICVzIiwNCkBAIC0yMTgsNiArMjE5LDcgQEANCiAJDQogCW1lbXNl
dCggJmlmciwgMCwgc2l6ZW9mKCBzdHJ1Y3QgaWZyZXEgKSApOw0KIAlzdHJu
Y3B5KGlmci5pZnJfbmFtZSwgaWZuLCBJRk5BTVNJWi0xKTsNCisJaWZyLmlm
cl9uYW1lW0lGTkFNU0laLTFdID0gJ1wwJzsNCiAJaWZyLmlmcl9hZGRyLnNh
X2ZhbWlseSA9IEFGX0lORVQ7DQogCQ0KIAlpZiAoaW9jdGwoZmQsIFNJT0NH
SUZBRERSLCAmaWZyKSA8IDApDQpJbmRleDogZ3JhbS55DQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3dvcmsvY3Zzcm9vdC9yYWR2ZC9n
cmFtLnksdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjUNCnJldHJpZXZpbmcg
cmV2aXNpb24gMS42DQpkaWZmIC11IC1yMS41IC1yMS42DQotLS0gZ3JhbS55
CTIwMDEvMTEvMTQgMTk6NTg6MTEJMS41DQorKysgZ3JhbS55CTIwMDIvMDEv
MDIgMTE6MDE6MTEJMS42DQpAQCAtMSw1ICsxLDUgQEANCiAvKg0KLSAqICAg
JElkOiBncmFtLnksdiAxLjUgMjAwMS8xMS8xNCAxOTo1ODoxMSBsdXRjaGFu
biBFeHAgJA0KKyAqICAgJElkOiBncmFtLnksdiAxLjYgMjAwMi8wMS8wMiAx
MTowMToxMSBwc2F2b2xhIEV4cCAkDQogICoNCiAgKiAgIEF1dGhvcnM6DQog
ICogICAgUGVkcm8gUm9xdWUJCTxyb3F1ZUBkaS5mYy51bC5wdD4NCkBAIC0x
NTIsNiArMTUyLDcgQEANCiANCiAJCQlpZmFjZV9pbml0X2RlZmF1bHRzKGlm
YWNlKTsNCiAJCQlzdHJuY3B5KGlmYWNlLT5OYW1lLCAkMiwgSUZOQU1TSVot
MSk7DQorCQkJaWZhY2UtPk5hbWVbSUZOQU1TSVotMV0gPSAnXDAnOw0KIAkJ
fQ0KIAkJOw0KIAkNCkBAIC0zNTQsNiArMzU1LDcgQEANCiAJCXsNCiAJCQlk
bG9nKExPR19ERUJVRywgNCwgInVzaW5nIGludGVyZmFjZSAlcyBmb3IgNnRv
NCIsICQyKTsNCiAJCQlzdHJuY3B5KHByZWZpeC0+aWY2dG80LCAkMiwgSUZO
QU1TSVotMSk7DQorCQkJcHJlZml4LT5pZjZ0bzRbSUZOQU1TSVotMV0gPSAn
XDAnOw0KIAkJfQ0KIAkJOw0KIA0KSW5kZXg6IHJhZHZkdW1wLjgubWFuDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3dvcmsvY3Zzcm9v
dC9yYWR2ZC9yYWR2ZHVtcC44Lm1hbix2DQpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjMNCmRpZmYgLXUgLXIxLjIg
LXIxLjMNCi0tLSByYWR2ZHVtcC44Lm1hbgkyMDAxLzExLzE0IDE5OjU4OjEx
CTEuMg0KKysrIHJhZHZkdW1wLjgubWFuCTIwMDEvMTIvMzEgMTE6NDA6NTYJ
MS4zDQpAQCAtMSw1ICsxLDUgQEANCiAuXCINCi0uXCIgICAkSWQ6IHJhZHZk
dW1wLjgubWFuLHYgMS4yIDIwMDEvMTEvMTQgMTk6NTg6MTEgbHV0Y2hhbm4g
RXhwICQNCisuXCIgICAkSWQ6IHJhZHZkdW1wLjgubWFuLHYgMS4zIDIwMDEv
MTIvMzEgMTE6NDA6NTYgcHNhdm9sYSBFeHAgJA0KIC5cIg0KIC5cIiAgIEF1
dGhvcnM6DQogLlwiICAgIExhcnMgRmVubmViZXJnCQk8bGZAZWxlbWVudGFs
Lm5ldD4JIA0KQEAgLTE0LDEyICsxNCwxMiBAQA0KIC5cIg0KIC5cIg0KIC5c
Ig0KLS5USCBSQURWRFVNUCA4ICIxNyBOb3YgMjAwMCIgInJhZHZkIEBWRVJT
SU9OQCIgIiINCisuVEggUkFEVkRVTVAgOCAiMjkgRGVjIDIwMDEiICJyYWR2
ZCBAVkVSU0lPTkAiICIiDQogLlNIIE5BTUUNCiByYWR2ZHVtcCBcLSBkdW1w
IHJvdXRlciBhZHZlcnRpc2VtZW50cw0KIC5TSCBTWU5PUFNJUw0KIC5CIHJh
ZHZkdW1wDQotLkIgIlsgXC12aGYgXSINCisuQiAiWyBcLXZoZmUgXSINCiAu
QkkgIlsgXC1kICIgZGVidWdsZXZlbCAiIF0iDQogDQogLlNIIERFU0NSSVBU
SU9ODQpAQCAtNDMsMTAgKzQzLDE2IEBADQogLkJSICJcLWgiICwgIiBcLVwt
aGVscCINCiBEaXNwbGF5cyBhIHNob3J0IHVzYWdlIGRlc2NyaXB0aW9uIGFu
ZCB0aGVuIGFib3J0cy4NCiAuVFANCi0uQlIgIlwtZiIgLCAiIFwtXC1maWxl
XC1vdXRwdXQiDQorLkJSICJcLWYiICwgIiBcLVwtZmlsZVwtZm9ybWF0Ig0K
IE91dHB1dCByZWNlaXZlZCByb3V0ZXIgYWR2ZXJ0aXNlbWVudHMgaW4gdGhl
IGZvcm1hdCBvZiB0aGUNCiAuQiByYWR2ZA0KIGNvbmZpZ3VyYXRpb24gZmls
ZS4gDQorLlRQDQorLkJSICJcLWUiICwgIiBcLVwtZXhjbHVkZS1kZWZhdWx0
cyINCitFeGNsdWRlIGRlZmF1bHQgdmFsdWVkIG9wdGlvbnMgZnJvbSBjb25m
aWd1cmF0aW9uIGZpbGUgZm9ybWF0Lg0KK1RoaXMgb3B0aW9uIGlzIGlnbm9y
ZWQgaWYgb3B0aW9uDQorLkIgIlwtZiINCitpcyBub3Qgc2V0Lg0KIC5UUA0K
IC5CUiAiXC1kICIgZGVidWdsZXZlbCwgIiBcLVwtZGVidWcgIiBkZWJ1Z2xl
dmVsDQogV2l0aCB0aGlzIG9wdGlvbiB5b3UgdHVybiBvbiBkZWJ1Z2dpbmcg
aW5mb3JtYXRpb24uIFRoZSBkZWJ1Z2dpbmcgbGV2ZWwgaXMNCkluZGV4OiBy
YWR2ZHVtcC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog
L3dvcmsvY3Zzcm9vdC9yYWR2ZC9yYWR2ZHVtcC5jLHYNCnJldHJpZXZpbmcg
cmV2aXNpb24gMS42DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNw0KZGlmZiAt
dSAtcjEuNiAtcjEuNw0KLS0tIHJhZHZkdW1wLmMJMjAwMS8xMS8xNCAxOTo1
ODoxMQkxLjYNCisrKyByYWR2ZHVtcC5jCTIwMDEvMTIvMzEgMTE6NDA6NTYJ
MS43DQpAQCAtMSwxMyArMSwxMSBAQA0KIC8qDQotICogICAkSWQ6IHJhZHZk
dW1wLmMsdiAxLjYgMjAwMS8xMS8xNCAxOTo1ODoxMSBsdXRjaGFubiBFeHAg
JA0KKyAqICAgJElkOiByYWR2ZHVtcC5jLHYgMS43IDIwMDEvMTIvMzEgMTE6
NDA6NTYgcHNhdm9sYSBFeHAgJA0KICAqDQogICogICBBdXRob3JzOg0KLSAq
ICAgIExhcnMgRmVubmViZXJnCQk8bGZAZWxlbWVudGFsLm5ldD4JIA0KKyAq
ICAgIExhcnMgRmVubmViZXJnCQk8bGZAZWxlbWVudGFsLm5ldD4NCisgKiAg
ICBNYXJrbyBNeWxseW5lbgkJPG15bGx5bmVuQGx1dC5maT4NCiAgKg0KLSAq
ICAgIE1hcmtvIE15bGx5bmVuCQk8bXlsbHluZW5AbHV0LmZpPgkNCi0gKiAg
ICAJLSBNb2JpbGUgSVB2NiBzdXBwb3J0DQotICoNCi0gKiAgIFRoaXMgc29m
dHdhcmUgaXMgQ29weXJpZ2h0IDE5OTYtMjAwMCBieSB0aGUgYWJvdmUgbWVu
dGlvbmVkIGF1dGhvcihzKSwgDQorICogICBUaGlzIHNvZnR3YXJlIGlzIENv
cHlyaWdodCAxOTk2LTIwMDAgYnkgdGhlIGFib3ZlIG1lbnRpb25lZCBhdXRo
b3IocyksDQogICogICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQogICog
ICBUaGUgbGljZW5zZSB3aGljaCBpcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMg
c29mdHdhcmUgaW4gdGhlIGZpbGUgQ09QWVJJR0hUDQpAQCAtMjAsMTIgKzE4
LDEzIEBADQogI2luY2x1ZGUgPGluY2x1ZGVzLmg+DQogI2luY2x1ZGUgPHJh
ZHZkLmg+DQogDQotY2hhciB1c2FnZV9zdHJbXSA9ICJbLXZoZl0gWy1kIGxl
dmVsXSI7DQorY2hhciB1c2FnZV9zdHJbXSA9ICJbLXZoZmVdIFstZCBsZXZl
bF0iOw0KIA0KICNpZmRlZiBIQVZFX0dFVE9QVF9MT05HDQogc3RydWN0IG9w
dGlvbiBwcm9nX29wdFtdID0gew0KIAl7ImRlYnVnIiwgMSwgMCwgJ2QnfSwN
Ci0JeyJmaWxlLW91dHB1dCIsIDAsIDAsICdmJ30sDQorCXsiZmlsZS1mb3Jt
YXQiLCAwLCAwLCAnZid9LA0KKwl7ImV4Y2x1ZGUtZGVmYXVsdHMiLCAwLCAw
LCAnZSd9LA0KIAl7InZlcnNpb24iLCAwLCAwLCAndid9LA0KIAl7ImhlbHAi
LCAwLCAwLCAnaCd9LA0KIAl7TlVMTCwgMCwgMCwgMH0NCkBAIC0zNywxNSAr
MzYsMTYgQEANCiANCiB2b2lkIHZlcnNpb24odm9pZCk7DQogdm9pZCB1c2Fn
ZSh2b2lkKTsNCi12b2lkIHByaW50X3JhKHVuc2lnbmVkIGNoYXIgKiwgaW50
LCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIGludCk7DQotdm9pZCBwcmludF9m
Zih1bnNpZ25lZCBjaGFyICosIGludCwgc3RydWN0IHNvY2thZGRyX2luNiAq
LCBpbnQpOw0KK3ZvaWQgcHJpbnRfcmEodW5zaWduZWQgY2hhciAqLCBpbnQs
IHN0cnVjdCBzb2NrYWRkcl9pbjYgKiwgaW50LCBpbnQpOw0KK3ZvaWQgcHJp
bnRfZmYodW5zaWduZWQgY2hhciAqLCBpbnQsIHN0cnVjdCBzb2NrYWRkcl9p
bjYgKiwgaW50LCBpbnQsIGludCk7DQogDQogaW50DQogbWFpbihpbnQgYXJn
YywgY2hhciAqYXJndltdKQ0KIHsNCiAJdW5zaWduZWQgY2hhciBtc2dbTVNH
X1NJWkVdOw0KIAlpbnQgYywgbGVuLCBob3BsaW1pdDsNCi0JaW50IGZvdXQg
PSAwOw0KKwlpbnQgZmZvcm0gPSAwOw0KKwlpbnQgZWRlZnMgPSAwOw0KIAlz
dHJ1Y3Qgc29ja2FkZHJfaW42IHJjdl9hZGRyOw0KICAgICAgICAgc3RydWN0
IGluNl9wa3RpbmZvICpwa3RfaW5mbyA9IE5VTEw7DQogI2lmZGVmIEhBVkVf
R0VUT1BUX0xPTkcNCkBAIC01Niw5ICs1Niw5IEBADQogDQogCS8qIHBhcnNl
IGFyZ3MgKi8NCiAjaWZkZWYgSEFWRV9HRVRPUFRfTE9ORw0KLQl3aGlsZSAo
KGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiZDpmaHYiLCBwcm9nX29w
dCwgJm9wdF9pZHgpKSA+IDApDQorCXdoaWxlICgoYyA9IGdldG9wdF9sb25n
KGFyZ2MsIGFyZ3YsICJkOmZlaHYiLCBwcm9nX29wdCwgJm9wdF9pZHgpKSA+
IDApDQogI2Vsc2UNCi0Jd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3Ys
ICJkOmZodiIpKSA+IDApDQorCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBh
cmd2LCAiZDpmZWh2IikpID4gMCkNCiAjZW5kaWYNCiAJew0KIAkJc3dpdGNo
IChjKSB7DQpAQCAtNjYsNyArNjYsMTAgQEANCiAJCQlzZXRfZGVidWdsZXZl
bChhdG9pKG9wdGFyZykpOw0KIAkJCWJyZWFrOw0KIAkJY2FzZSAnZic6DQot
CQkJZm91dCA9IDE7DQorCQkJZmZvcm0gPSAxOw0KKwkJCWJyZWFrOw0KKwkJ
Y2FzZSAnZSc6DQorCQkJZWRlZnMgPSAxOw0KIAkJCWJyZWFrOw0KIAkJY2Fz
ZSAndic6DQogCQkJdmVyc2lvbigpOw0KQEAgLTEyMyw3ICsxMjYsNyBAQA0K
IAkJCQlleGl0KDEpOw0KIAkJCX0NCiANCi0JCQlkbG9nKExPR19ERUJVRywg
NCwgImlmX2luZGV4ICVkIiwgcGt0X2luZm8tPmlwaTZfaWZpbmRleCk7DQor
CQkJZGxvZyhMT0dfREVCVUcsIDQsICJyZWNlaXZlciBpZl9pbmRleDogJWQi
LCBwa3RfaW5mby0+aXBpNl9pZmluZGV4KTsNCiANCiAJCQlpZiAoaWNtcGgt
PmljbXA2X3R5cGUgPT0gTkRfUk9VVEVSX1NPTElDSVQpDQogCQkJew0KQEAg
LTEzMSwxMCArMTM0LDEwIEBADQogCQkJfQ0KIAkJCWVsc2UgaWYgKGljbXBo
LT5pY21wNl90eXBlID09IE5EX1JPVVRFUl9BRFZFUlQpDQogCQkJew0KLQkJ
CQlpZiAoIWZvdXQpDQotCQkJCQlwcmludF9yYShtc2csIGxlbiwgJnJjdl9h
ZGRyLCBob3BsaW1pdCk7DQorCQkJCWlmICghZmZvcm0pDQorCQkJCQlwcmlu
dF9yYShtc2csIGxlbiwgJnJjdl9hZGRyLCBob3BsaW1pdCwgcGt0X2luZm8t
PmlwaTZfaWZpbmRleCk7DQogCQkJCWVsc2UNCi0JCQkJCXByaW50X2ZmKG1z
ZywgbGVuLCAmcmN2X2FkZHIsIGhvcGxpbWl0KTsNCisJCQkJCXByaW50X2Zm
KG1zZywgbGVuLCAmcmN2X2FkZHIsIGhvcGxpbWl0LCBwa3RfaW5mby0+aXBp
Nl9pZmluZGV4LCBlZGVmcyk7DQogCQkJfQ0KICAgICAgICAgCX0NCiAJCWVs
c2UgaWYgKGxlbiA9PSAwKQ0KQEAgLTE0NCw3ICsxNDcsNyBAQA0KICAgICAg
ICAgCX0NCiAgICAgICAgIAllbHNlDQogICAgICAgICAJew0KLQkJCWxvZyhM
T0dfRVJSLCAicmVjdl9yczogJXMiLCBzdHJlcnJvcihlcnJubykpOw0KKwkJ
CWxvZyhMT0dfRVJSLCAicmVjdl9yc19yYTogJXMiLCBzdHJlcnJvcihlcnJu
bykpOw0KIAkJCWV4aXQoMSk7DQogICAgICAgICAJfQ0KICAgICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
DQpAQCAtMTUzLDEyICsxNTYsMTMgQEANCiB9DQogDQogdm9pZA0KLXByaW50
X3JhKHVuc2lnbmVkIGNoYXIgKm1zZywgaW50IGxlbiwgc3RydWN0IHNvY2th
ZGRyX2luNiAqYWRkciwgaW50IGhvcGxpbWl0KQ0KK3ByaW50X3JhKHVuc2ln
bmVkIGNoYXIgKm1zZywgaW50IGxlbiwgc3RydWN0IHNvY2thZGRyX2luNiAq
YWRkciwgaW50IGhvcGxpbWl0LCBpbnQgaWZfaW5kZXgpDQogew0KIAlzdHJ1
Y3QgbmRfcm91dGVyX2FkdmVydCAqcmFkdmVydDsNCiAJY2hhciBhZGRyX3N0
cltJTkVUNl9BRERSU1RSTEVOXTsNCiAJdWludDhfdCAqb3B0X3N0cjsNCiAJ
aW50IGk7DQorCWNoYXIgaWZfbmFtZVtJRk5BTVNJWl07DQogDQogCWlmIChn
ZXRfZGVidWdsZXZlbCgpID4gMikNCiAJew0KQEAgLTE4Miw5ICsxODYsMTMg
QEANCiANCiAJcHJpbnRfYWRkcigmYWRkci0+c2luNl9hZGRyLCBhZGRyX3N0
cik7DQogCXByaW50ZigiUm91dGVyIGFkdmVydGlzZW1lbnQgZnJvbSAlcyAo
aG9wbGltaXQgJWQpXG4iLCBhZGRyX3N0ciwgaG9wbGltaXQpOw0KKwlpZl9p
bmRleHRvbmFtZShpZl9pbmRleCwgaWZfbmFtZSk7DQorCXByaW50ZigiUmVj
ZWl2ZWQgYnkgaW50ZXJmYWNlICVzXG4iLCBpZl9uYW1lKTsNCiANCiAJcmFk
dmVydCA9IChzdHJ1Y3QgbmRfcm91dGVyX2FkdmVydCAqKSBtc2c7DQogDQor
CXByaW50ZigiXHQjIE5vdGU6IHtNaW4sTWF4fVJ0ckFkdkludGVydmFsIGNh
bm5vdCBiZSBvYnRhaW5lZCB3aXRoIHJhZHZkdW1wXG4iKTsNCisNCiAJcHJp
bnRmKCJcdEFkdkN1ckhvcExpbWl0OiAlZFxuIiwgKGludCkgcmFkdmVydC0+
bmRfcmFfY3VyaG9wbGltaXQpOw0KIA0KIAlwcmludGYoIlx0QWR2TWFuYWdl
ZEZsYWc6ICVzXG4iLCANCkBAIC0zMzAsMzcgKzMzOCw0NyBAQA0KIH0NCiAN
CiB2b2lkDQotcHJpbnRfZmYodW5zaWduZWQgY2hhciAqbXNnLCBpbnQgbGVu
LCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyLCBpbnQgaG9wbGltaXQpDQor
cHJpbnRfZmYodW5zaWduZWQgY2hhciAqbXNnLCBpbnQgbGVuLCBzdHJ1Y3Qg
c29ja2FkZHJfaW42ICphZGRyLCBpbnQgaG9wbGltaXQsIGludCBpZl9pbmRl
eCwgaW50IGVkZWZzKQ0KIHsNCiAJc3RydWN0IG5kX3JvdXRlcl9hZHZlcnQg
KnJhZHZlcnQ7DQogCWNoYXIgYWRkcl9zdHJbSU5FVDZfQUREUlNUUkxFTl07
DQogCXVpbnQ4X3QgKm9wdF9zdHI7DQogCWludCBvcmlnX2xlbiA9IGxlbjsN
CisJY2hhciBpZl9uYW1lW0lGTkFNU0laXTsNCiANCiAJcHJpbnRfYWRkcigm
YWRkci0+c2luNl9hZGRyLCBhZGRyX3N0cik7DQotCXByaW50ZigiI1xuIyBD
b25maWd1cmF0aW9uIGdlbmVyYXRlZCBieSByYWR2ZHVtcFxuIik7DQotCXBy
aW50ZigiIyBiYXNlZCBvbiBSb3V0ZXIgYWR2ZXJ0aXNlbWVudCBmcm9tICVz
XG4jXG4iLCBhZGRyX3N0cik7DQotCXByaW50ZigiXG5pbnRlcmZhY2UgZXRo
MFxue1xuXHRBZHZTZW5kQWR2ZXJ0IG9uO1xuIik7DQorCXByaW50ZigiI1xu
IyByYWR2ZCBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBieSByYWR2ZHVtcCAl
c1xuIiwgVkVSU0lPTik7DQorCXByaW50ZigiIyBiYXNlZCBvbiBSb3V0ZXIg
QWR2ZXJ0aXNlbWVudCBmcm9tICVzXG4iLCBhZGRyX3N0cik7DQorCWlmX2lu
ZGV4dG9uYW1lKGlmX2luZGV4LCBpZl9uYW1lKTsNCisJcHJpbnRmKCIjIHJl
Y2VpdmVkIGJ5IGludGVyZmFjZSAlc1xuIiwgaWZfbmFtZSk7DQorCXByaW50
ZigiI1xuXG5pbnRlcmZhY2UgJXNcbntcblx0QWR2U2VuZEFkdmVydCBvbjtc
biIsIGlmX25hbWUpOw0KIA0KKwlwcmludGYoIlx0IyBOb3RlOiB7TWluLE1h
eH1SdHJBZHZJbnRlcnZhbCBjYW5ub3QgYmUgb2J0YWluZWQgd2l0aCByYWR2
ZHVtcFxuIik7DQorDQogCXJhZHZlcnQgPSAoc3RydWN0IG5kX3JvdXRlcl9h
ZHZlcnQgKikgbXNnOw0KIA0KKwlpZiAoIWVkZWZzIHx8IERGTFRfQWR2TWFu
YWdlZEZsYWcgIT0gKE5EX1JBX0ZMQUdfTUFOQUdFRCA9PSAocmFkdmVydC0+
bmRfcmFfZmxhZ3NfcmVzZXJ2ZWQgJiBORF9SQV9GTEFHX01BTkFHRUQpKSkN
CiAJcHJpbnRmKCJcdEFkdk1hbmFnZWRGbGFnICVzO1xuIiwgDQogCQkocmFk
dmVydC0+bmRfcmFfZmxhZ3NfcmVzZXJ2ZWQgJiBORF9SQV9GTEFHX01BTkFH
RUQpPyJvbiI6Im9mZiIpOw0KIA0KKwlpZiAoIWVkZWZzIHx8IERGTFRfQWR2
T3RoZXJDb25maWdGbGFnICE9IChORF9SQV9GTEFHX09USEVSID09IChyYWR2
ZXJ0LT5uZF9yYV9mbGFnc19yZXNlcnZlZCAmIE5EX1JBX0ZMQUdfT1RIRVIp
KSkNCiAJcHJpbnRmKCJcdEFkdk90aGVyQ29uZmlnRmxhZyAlcztcbiIsIA0K
IAkJKHJhZHZlcnQtPm5kX3JhX2ZsYWdzX3Jlc2VydmVkICYgTkRfUkFfRkxB
R19PVEhFUik/Im9uIjoib2ZmIik7DQogDQorCWlmICghZWRlZnMgfHwgREZM
VF9BZHZSZWFjaGFibGVUaW1lICE9ICh1bnNpZ25lZCBsb25nKW50b2hsKHJh
ZHZlcnQtPm5kX3JhX3JlYWNoYWJsZSkpDQogCXByaW50ZigiXHRBZHZSZWFj
aGFibGVUaW1lICVsdTtcbiIsICh1bnNpZ25lZCBsb25nKW50b2hsKHJhZHZl
cnQtPm5kX3JhX3JlYWNoYWJsZSkpOw0KIA0KKwlpZiAoIWVkZWZzIHx8IERG
TFRfQWR2UmV0cmFuc1RpbWVyICE9ICh1bnNpZ25lZCBsb25nKW50b2hsKHJh
ZHZlcnQtPm5kX3JhX3JldHJhbnNtaXQpKQ0KIAlwcmludGYoIlx0QWR2UmV0
cmFuc1RpbWVyICVsdTtcbiIsICh1bnNpZ25lZCBsb25nKW50b2hsKHJhZHZl
cnQtPm5kX3JhX3JldHJhbnNtaXQpKTsNCiANCisJaWYgKCFlZGVmcyB8fCBE
RkxUX0FkdkN1ckhvcExpbWl0ICE9IChpbnQpIHJhZHZlcnQtPm5kX3JhX2N1
cmhvcGxpbWl0KQ0KIAlwcmludGYoIlx0QWR2Q3VySG9wTGltaXQgJWQ7XG4i
LCAoaW50KSByYWR2ZXJ0LT5uZF9yYV9jdXJob3BsaW1pdCk7DQogDQogCS8q
IE1vYmlsZSBJUHY2IGV4dCAqLw0KKwlpZiAoIWVkZWZzIHx8IERGTFRfQWR2
SG9tZUFnZW50RmxhZyAhPSAoTkRfUkFfRkxBR19IT01FX0FHRU5UID09IChy
YWR2ZXJ0LT5uZF9yYV9mbGFnc19yZXNlcnZlZCAmIE5EX1JBX0ZMQUdfSE9N
RV9BR0VOVCkpKQ0KIAlwcmludGYoIlx0QWR2SG9tZUFnZW50RmxhZyAlcztc
biIsIA0KIAkJKHJhZHZlcnQtPm5kX3JhX2ZsYWdzX3Jlc2VydmVkICYgTkRf
UkFfRkxBR19IT01FX0FHRU5UKT8ib24iOiJvZmYiKTsNCiANCi0NCiAJbGVu
IC09IHNpemVvZihzdHJ1Y3QgbmRfcm91dGVyX2FkdmVydCk7DQogDQogCWlm
IChsZW4gPT0gMCkNCkBAIC00MDIsMjkgKzQyMCw0MiBAQA0KIAkJY2FzZSBO
RF9PUFRfTVRVOg0KIAkJCW10dSA9IChzdHJ1Y3QgbmRfb3B0X210dSAqKW9w
dF9zdHI7DQogDQorCQkJaWYgKCFlZGVmcyB8fCBERkxUX0FkdkxpbmtNVFUg
IT0gKHVuc2lnbmVkIGxvbmcpbnRvaGwobXR1LT5uZF9vcHRfbXR1X210dSkp
DQogCQkJcHJpbnRmKCJcdEFkdkxpbmtNVFUgJWx1O1xuIiwgKHVuc2lnbmVk
IGxvbmcpbnRvaGwobXR1LT5uZF9vcHRfbXR1X210dSkpOw0KIAkJCWJyZWFr
Ow0KIAkJY2FzZSBORF9PUFRfU09VUkNFX0xJTktBRERSOg0KKwkJCS8qIFhY
WDogIURGTFQgZGVwZW5kcyBvbiBjdXJyZW50IERGTFRfIHZhbHVlICovDQor
CQkJaWYgKCFlZGVmcyB8fCAhREZMVF9BZHZTb3VyY2VMTEFkZHJlc3MpDQog
CQkJcHJpbnRmKCJcdEFkdlNvdXJjZUxMQWRkcmVzcyBvbjtcbiIpOw0KIAkJ
CWJyZWFrOw0KIAkJLyogTW9iaWxlIElQdjYgZXh0ICovDQogCQljYXNlIE5E
X09QVF9SVFJfQURWX0lOVEVSVkFMOg0KIAkJCWFfaXZhbCA9IChzdHJ1Y3Qg
QWR2SW50ZXJ2YWwgKilvcHRfc3RyOw0KIA0KKwkJCS8qIFhYWDogIURGTFQg
ZGVwZW5kcyBvbiBjdXJyZW50IERGTFRfIHZhbHVlICovDQorCQkJaWYgKCFl
ZGVmcyB8fCAhREZMVF9BZHZJbnRlcnZhbE9wdCkNCiAJCQlwcmludGYoIlx0
QWR2SW50ZXJ2YWxPcHQgb247XG4iKTsNCiAJCQlicmVhazsNCiAJCS8qIE1v
YmlsZSBJUHY2IGV4dCAqLw0KIAkJY2FzZSBORF9PUFRfSE9NRV9BR0VOVF9J
TkZPOg0KIAkJCWhhX2luZm8gPSAoc3RydWN0IEhvbWVBZ2VudEluZm8gKilv
cHRfc3RyOw0KIA0KKwkJCS8qIFhYWDogIURGTFQgZGVwZW5kcyBvbiBjdXJy
ZW50IERGTFRfIHZhbHVlICovDQorCQkJaWYgKCFlZGVmcyB8fCAhREZMVF9B
ZHZIb21lQWdlbnRJbmZvKQ0KIAkJCXByaW50ZigiXHRBZHZIb21lQWdlbnRJ
bmZvIG9uO1xuIik7DQorDQorCQkJaWYgKCFlZGVmcyB8fCBERkxUX0hvbWVB
Z2VudFByZWZlcmVuY2UgIT0gKHVuc2lnbmVkIHNob3J0KW50b2hzKGhhX2lu
Zm8tPnByZWZlcmVuY2UpKQ0KIAkJCXByaW50ZigiXHRIb21lQWdlbnRQcmVm
ZXJlbmNlICVodTtcbiIsICh1bnNpZ25lZCBzaG9ydCludG9ocyhoYV9pbmZv
LT5wcmVmZXJlbmNlKSk7DQorCQkJLyogSHVtLi4gKi8NCisJCQlpZiAoIWVk
ZWZzIHx8ICgzKkRGTFRfTWF4UnRyQWR2SW50ZXJ2YWwpICE9ICh1bnNpZ25l
ZCBzaG9ydCludG9ocyhoYV9pbmZvLT5saWZldGltZSkpDQogCQkJcHJpbnRm
KCJcdEhvbWVBZ2VudExpZmV0aW1lICVodTtcbiIsICh1bnNpZ25lZCBzaG9y
dCludG9ocyhoYV9pbmZvLT5saWZldGltZSkpOw0KIAkJCWJyZWFrOw0KIAkJ
Y2FzZSBORF9PUFRfVEFSR0VUX0xJTktBRERSOg0KIAkJY2FzZSBORF9PUFRf
UkVESVJFQ1RFRF9IRUFERVI6DQogCQkJbG9nKExPR19FUlIsICJpbnZhbGlk
IG9wdGlvbiAlZCBpbiBSQSIsIChpbnQpKm9wdF9zdHIpOw0KIAkJCWJyZWFr
Ow0KKwkJY2FzZSBORF9PUFRfUFJFRklYX0lORk9STUFUSU9OOg0KKwkJCWJy
ZWFrOw0KIAkJZGVmYXVsdDoNCiAJCQlkbG9nKExPR19ERUJVRywgMSwgInVu
a25vd24gb3B0aW9uICVkIGluIFJBIiwNCiAJCQkJKGludCkqb3B0X3N0cik7
DQpAQCAtNDgxLDI3ICs1MTIsMzUgQEANCiANCiAJCQlpZiAobnRvaGwocGlu
Zm8tPm5kX29wdF9waV92YWxpZF90aW1lKSA9PSAweGZmZmZmZmZmKQ0KIAkJ
CXsJCQ0KKwkJCQlpZiAoIWVkZWZzIHx8IERGTFRfQWR2VmFsaWRMaWZldGlt
ZSAhPSAweGZmZmZmZmZmKQ0KIAkJCQlwcmludGYoIlx0XHRBZHZWYWxpZExp
ZmV0aW1lIGluZmluaXR5OyAjICgweGZmZmZmZmZmKVxuIik7DQogCQkJfQ0K
IAkJCWVsc2UNCiAJCQl7DQotCQkJCXByaW50ZigiXHRcdEFkdlZhbGlkTGlm
ZXRpbWUgJWx1O1xuIiwgKHVuc2lnbmVkIGxvbmcpIG50b2hsKHBpbmZvLT5u
ZF9vcHRfcGlfdmFsaWRfdGltZSkpOw0KKwkJCQlpZiAoIWVkZWZzIHx8IERG
TFRfQWR2VmFsaWRMaWZldGltZSAhPSAodW5zaWduZWQgbG9uZyludG9obChw
aW5mby0+bmRfb3B0X3BpX3ZhbGlkX3RpbWUpKQ0KKwkJCQlwcmludGYoIlx0
XHRBZHZWYWxpZExpZmV0aW1lICVsdTtcbiIsICh1bnNpZ25lZCBsb25nKW50
b2hsKHBpbmZvLT5uZF9vcHRfcGlfdmFsaWRfdGltZSkpOw0KIAkJCX0NCiAJ
CQlpZiAobnRvaGwocGluZm8tPm5kX29wdF9waV9wcmVmZXJyZWRfdGltZSkg
PT0gMHhmZmZmZmZmZikNCiAJCQl7DQorCQkJCWlmICghZWRlZnMgfHwgREZM
VF9BZHZQcmVmZXJyZWRMaWZldGltZSAhPSAweGZmZmZmZmZmKQ0KIAkJCQlw
cmludGYoIlx0XHRBZHZQcmVmZXJyZWRMaWZldGltZSBpbmZpbml0eTsgIyAo
MHhmZmZmZmZmZilcbiIpOw0KIAkJCX0NCiAJCQllbHNlDQogCQkJew0KLQkJ
CQlwcmludGYoIlx0XHRBZHZQcmVmZXJyZWRMaWZldGltZSAlbHU7XG4iLCAo
dW5zaWduZWQgbG9uZykgbnRvaGwocGluZm8tPm5kX29wdF9waV9wcmVmZXJy
ZWRfdGltZSkpOw0KKwkJCQlpZiAoIWVkZWZzIHx8IERGTFRfQWR2UHJlZmVy
cmVkTGlmZXRpbWUgIT0gKHVuc2lnbmVkIGxvbmcpbnRvaGwocGluZm8tPm5k
X29wdF9waV9wcmVmZXJyZWRfdGltZSkpDQorCQkJCXByaW50ZigiXHRcdEFk
dlByZWZlcnJlZExpZmV0aW1lICVsdTtcbiIsICh1bnNpZ25lZCBsb25nKW50
b2hsKHBpbmZvLT5uZF9vcHRfcGlfcHJlZmVycmVkX3RpbWUpKTsNCiAJCQl9
DQorDQorCQkJaWYgKCFlZGVmcyB8fCBERkxUX0Fkdk9uTGlua0ZsYWcgIT0g
KE5EX09QVF9QSV9GTEFHX09OTElOSyA9PSAocGluZm8tPm5kX29wdF9waV9m
bGFnc19yZXNlcnZlZCAmIE5EX09QVF9QSV9GTEFHX09OTElOSykpKQ0KIAkJ
CXByaW50ZigiXHRcdEFkdk9uTGluayAlcztcbiIsIA0KIAkJCQkocGluZm8t
Pm5kX29wdF9waV9mbGFnc19yZXNlcnZlZCAmIE5EX09QVF9QSV9GTEFHX09O
TElOSyk/Im9uIjoib2ZmIik7DQogDQorCQkJaWYgKCFlZGVmcyB8fCBERkxU
X0FkdkF1dG9ub21vdXNGbGFnICE9IChORF9PUFRfUElfRkxBR19BVVRPID09
IChwaW5mby0+bmRfb3B0X3BpX2ZsYWdzX3Jlc2VydmVkICYgTkRfT1BUX1BJ
X0ZMQUdfQVVUTykpKQ0KIAkJCXByaW50ZigiXHRcdEFkdkF1dG9ub21vdXMg
JXM7XG4iLCANCiAJCQkJKHBpbmZvLT5uZF9vcHRfcGlfZmxhZ3NfcmVzZXJ2
ZWQgJiBORF9PUFRfUElfRkxBR19BVVRPKT8ib24iOiJvZmYiKTsNCiANCiAJ
CQkvKiBNb2JpbGUgSVB2NiBleHQgKi8NCisJCQlpZiAoIWVkZWZzIHx8IERG
TFRfQWR2Um91dGVyQWRkciAhPSAoTkRfT1BUX1BJX0ZMQUdfUkFERFIgPT0g
KHBpbmZvLT5uZF9vcHRfcGlfZmxhZ3NfcmVzZXJ2ZWQgJiBORF9PUFRfUElf
RkxBR19SQUREUikpKQ0KIAkJCXByaW50ZigiXHRcdEFkdlJvdXRlckFkZHIg
JXM7XG4iLCANCiAJCQkJKHBpbmZvLT5uZF9vcHRfcGlfZmxhZ3NfcmVzZXJ2
ZWQgJiBORF9PUFRfUElfRkxBR19SQUREUik/Im9uIjoib2ZmIik7DQogDQpJ
bmRleDogc2Nhbm5lci5sDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
ZmlsZTogL3dvcmsvY3Zzcm9vdC9yYWR2ZC9zY2FubmVyLmwsdg0KcmV0cmll
dmluZyByZXZpc2lvbiAxLjMNCnJldHJpZXZpbmcgcmV2aXNpb24gMS40DQpk
aWZmIC11IC1yMS4zIC1yMS40DQotLS0gc2Nhbm5lci5sCTIwMDEvMTEvMTQg
MTk6NTg6MTEJMS4zDQorKysgc2Nhbm5lci5sCTIwMDIvMDEvMDIgMTE6MDE6
MTEJMS40DQpAQCAtMSw1ICsxLDUgQEANCiAvKg0KLSAqICAgJElkOiBzY2Fu
bmVyLmwsdiAxLjMgMjAwMS8xMS8xNCAxOTo1ODoxMSBsdXRjaGFubiBFeHAg
JA0KKyAqICAgJElkOiBzY2FubmVyLmwsdiAxLjQgMjAwMi8wMS8wMiAxMTow
MToxMSBwc2F2b2xhIEV4cCAkDQogICoNCiAgKiAgIEF1dGhvcnM6DQogICog
ICAgUGVkcm8gUm9xdWUJCTxyb3F1ZUBkaS5mYy51bC5wdD4NCkBAIC0xMTEs
NiArMTExLDcgQEANCiAJCQlzdGF0aWMgY2hhciBuYW1lW0lGTkFNU0laXTsN
CiAJCQkJDQogCQkJc3RybmNweShuYW1lLCB5eXRleHQsIElGTkFNU0laLTEp
Ow0KKwkJCW5hbWVbSUZOQU1TSVotMV0gPSAnXDAnOw0KIAkJCXl5bHZhbC5z
dHIgPSBuYW1lOw0KIAkJCXJldHVybiBTVFJJTkc7DQogCQl9DQo=
--1589707168-1110231881-1009974280=:25274--