[38437] in bugtraq

home help back first fref pref prev next nref lref last post

Re: cpio TOCTOU file-permissions vulnerability

daemon@ATHENA.MIT.EDU (Steve G)
Tue Apr 19 14:12:01 2005

Message-ID: <20050419123456.98228.qmail@web51510.mail.yahoo.com>
Date: Tue, 19 Apr 2005 05:34:55 -0700 (PDT)
From: Steve G <linux_4ever@yahoo.com>
To: bugtraq@securityfocus.com
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="0-720694802-1113914095=:98221"

--0-720694802-1113914095=:98221
Content-Type: text/plain; charset=us-ascii
Content-Id: 
Content-Disposition: inline

Hello,

Since no fix has been posted, I've taken a stab at patching this. I think this
patch solves all issues with chmod & chown. I would recommend people review this
patch and apply since cpio can create suid files, devices, and directories with
special permissions. I have a patch for coreutils mostly done and will post that
soon.

-Steve Grubb


		
__________________________________ 
Do you Yahoo!? 
Make Yahoo! your home page 
http://www.yahoo.com/r/hs
--0-720694802-1113914095=:98221
Content-Type: application/octet-stream; name="cpio-2.6-chmod.patch"
Content-Transfer-Encoding: base64
Content-Description: cpio-2.6-chmod.patch
Content-Disposition: attachment; filename="cpio-2.6-chmod.patch"

ZGlmZiAtdXJiIGNwaW8tMi42Lm9yaWcvbGliL21rZGlyLmMgY3Bpby0yLjYv
bGliL21rZGlyLmMKLS0tIGNwaW8tMi42Lm9yaWcvbGliL21rZGlyLmMJMjAw
NS0wNC0xNyAwOTozNjoyNS4xODU2MTc1NjAgLTA0MDAKKysrIGNwaW8tMi42
L2xpYi9ta2Rpci5jCTIwMDUtMDQtMTcgMDk6MzY6NDYuNDI3Mzg4MzIwIC0w
NDAwCkBAIC03NSwxNSArNzUsMTYgQEAKICAgICAgIHJldHVybiAtMTsJCS8q
IGVycm5vIGlzIGFscmVhZHkgc2V0LiAgKi8KIAogICAgIGNhc2UgMDoJCQkv
KiBDaGlsZCBwcm9jZXNzLiAgKi8KKyAgICB7CiAgICAgICAvKiBDaGVhcCBo
YWNrIHRvIHNldCBtb2RlIG9mIG5ldyBkaXJlY3RvcnkuICBTaW5jZSB0aGlz
IGNoaWxkCi0JIHByb2Nlc3MgaXMgZ29pbmcgYXdheSBhbnl3YXksIHdlIHph
cCBpdHMgdW1hc2suCi0JIFRoaXMgd29uJ3Qgc3VmZmljZSB0byBzZXQgU1VJ
RCwgU0dJRCwgZXRjLiBvbiB0aGlzCi0JIGRpcmVjdG9yeSwgc28gdGhlIHBh
cmVudCBwcm9jZXNzIGNhbGxzIGNobW9kIGFmdGVyd2FyZC4gICovCisJIHBy
b2Nlc3MgaXMgZ29pbmcgYXdheSBhbnl3YXksIHdlIHphcCBpdHMgdW1hc2su
ICovCisgICAgICBjaGFyIG1vZGVbMTZdOwogICAgICAgc3RhdHVzID0gdW1h
c2sgKDApOwkvKiBHZXQgY3VycmVudCB1bWFzay4gICovCiAgICAgICB1bWFz
ayAoc3RhdHVzIHwgKDA3NzcgJiB+ZG1vZGUpKTsJLyogU2V0IGZvciBta2Rp
ci4gICovCi0gICAgICBleGVjbCAoIi9iaW4vbWtkaXIiLCAibWtkaXIiLCBk
cGF0aCwgKGNoYXIgKikgMCk7CisgICAgICBzbnByaW50Zihtb2RlLCBzaXpl
b2YobW9kZSksICItbT0lbyIsIG1vZGUpOworICAgICAgZXhlY2wgKCIvYmlu
L21rZGlyIiwgIm1rZGlyIiwgZHBhdGgsIG1vZGUsIChjaGFyICopIDApOwog
ICAgICAgX2V4aXQgKDEpOwotCisgICAgfQogICAgIGRlZmF1bHQ6CQkJLyog
UGFyZW50IHByb2Nlc3MuICAqLwogICAgICAgLyogV2FpdCBmb3Iga2lkIHRv
IGZpbmlzaC4gICovCiAgICAgICB3aGlsZSAod2FpdCAoJnN0YXR1cykgIT0g
Y3BpZCkKQEAgLTk1LDYgKzk2LDYgQEAKIAkgIGVycm5vID0gRUlPOwogCSAg
cmV0dXJuIC0xOwogCX0KLSAgICAgIHJldHVybiBjaG1vZCAoZHBhdGgsIGRt
b2RlKTsKKyAgICAgIHJldHVybiAwOwogICAgIH0KIH0KZGlmZiAtdXJiIGNw
aW8tMi42Lm9yaWcvc3JjL2NvcHlpbi5jIGNwaW8tMi42L3NyYy9jb3B5aW4u
YwotLS0gY3Bpby0yLjYub3JpZy9zcmMvY29weWluLmMJMjAwNS0wNC0xNyAw
OTozNjoyNS4yMTk2MTIzOTIgLTA0MDAKKysrIGNwaW8tMi42L3NyYy9jb3B5
aW4uYwkyMDA1LTA0LTE3IDA5OjM2OjQ2LjQzMDM4Nzg2NCAtMDQwMApAQCAt
Mzg5LDE5ICszODksMjAgQEAKIAkgIGNvbnRpbnVlOwogCX0KIAotICAgICAg
aWYgKGNsb3NlIChvdXRfZmlsZV9kZXMpIDwgMCkKLQllcnJvciAoMCwgZXJy
bm8sICIlcyIsIGQtPmhlYWRlci5jX25hbWUpOwotCiAgICAgICAvKiBGaWxl
IGlzIG5vdyBjb3BpZWQ7IHNldCBhdHRyaWJ1dGVzLiAgKi8KICAgICAgIGlm
ICghbm9fY2hvd25fZmxhZykKLQlpZiAoKGNob3duIChkLT5oZWFkZXIuY19u
YW1lLAorCWlmICgoZmNob3duIChvdXRfZmlsZV9kZXMsCiAJCSAgICBzZXRf
b3duZXJfZmxhZyA/IHNldF9vd25lciA6IGQtPmhlYWRlci5jX3VpZCwKIAkg
ICAgICAgc2V0X2dyb3VwX2ZsYWcgPyBzZXRfZ3JvdXAgOiBkLT5oZWFkZXIu
Y19naWQpIDwgMCkKIAkgICAgJiYgZXJybm8gIT0gRVBFUk0pCiAJICBlcnJv
ciAoMCwgZXJybm8sICIlcyIsIGQtPmhlYWRlci5jX25hbWUpOwotICAgICAg
LyogY2hvd24gbWF5IGhhdmUgdHVybmVkIG9mZiBzb21lIHBlcm1pc3Npb25z
IHdlIHdhbnRlZC4gKi8KLSAgICAgIGlmIChjaG1vZCAoZC0+aGVhZGVyLmNf
bmFtZSwgKGludCkgZC0+aGVhZGVyLmNfbW9kZSkgPCAwKQorICAgICAgLyog
ZmNob3duIG1heSBoYXZlIHR1cm5lZCBvZmYgc29tZSBwZXJtaXNzaW9ucyB3
ZSB3YW50ZWQuICovCisgICAgICBpZiAoZmNobW9kIChvdXRfZmlsZV9kZXMs
IChpbnQpIGQtPmhlYWRlci5jX21vZGUpIDwgMCkKIAllcnJvciAoMCwgZXJy
bm8sICIlcyIsIGQtPmhlYWRlci5jX25hbWUpOworCisgICAgICBpZiAoY2xv
c2UgKG91dF9maWxlX2RlcykgPCAwKQorCWVycm9yICgwLCBlcnJubywgIiVz
IiwgZC0+aGVhZGVyLmNfbmFtZSk7CisKICAgICAgIGlmIChyZXRhaW5fdGlt
ZV9mbGFnKQogCXsKIAkgIHRpbWVzLmFjdGltZSA9IHRpbWVzLm1vZHRpbWUg
PSBkLT5oZWFkZXIuY19tdGltZTsKQEAgLTU1Nyw5ICs1NTgsNiBAQAogICAg
ICAgd3JpdGUgKG91dF9maWxlX2RlcywgIiIsIDEpOwogICAgICAgZGVsYXll
ZF9zZWVrX2NvdW50ID0gMDsKICAgICB9Ci0gIGlmIChjbG9zZSAob3V0X2Zp
bGVfZGVzKSA8IDApCi0gICAgZXJyb3IgKDAsIGVycm5vLCAiJXMiLCBmaWxl
X2hkci0+Y19uYW1lKTsKLQogICBpZiAoYXJjaGl2ZV9mb3JtYXQgPT0gYXJm
X2NyY2FzY2lpKQogICAgIHsKICAgICAgIGlmIChjcmMgIT0gZmlsZV9oZHIt
PmNfY2hrc3VtKQpAQCAtNTY5LDE0ICs1NjcsMTcgQEAKIAogICAvKiBGaWxl
IGlzIG5vdyBjb3BpZWQ7IHNldCBhdHRyaWJ1dGVzLiAgKi8KICAgaWYgKCFu
b19jaG93bl9mbGFnKQotICAgIGlmICgoY2hvd24gKGZpbGVfaGRyLT5jX25h
bWUsCisgICAgaWYgKChmY2hvd24gKG91dF9maWxlX2RlcywKIAkJc2V0X293
bmVyX2ZsYWcgPyBzZXRfb3duZXIgOiBmaWxlX2hkci0+Y191aWQsCiAJICAg
c2V0X2dyb3VwX2ZsYWcgPyBzZXRfZ3JvdXAgOiBmaWxlX2hkci0+Y19naWQp
IDwgMCkKIAkmJiBlcnJubyAhPSBFUEVSTSkKICAgICAgIGVycm9yICgwLCBl
cnJubywgIiVzIiwgZmlsZV9oZHItPmNfbmFtZSk7CiAgIAogICAvKiBjaG93
biBtYXkgaGF2ZSB0dXJuZWQgb2ZmIHNvbWUgcGVybWlzc2lvbnMgd2Ugd2Fu
dGVkLiAqLwotICBpZiAoY2htb2QgKGZpbGVfaGRyLT5jX25hbWUsIChpbnQp
IGZpbGVfaGRyLT5jX21vZGUpIDwgMCkKKyAgaWYgKGZjaG1vZCAob3V0X2Zp
bGVfZGVzLCAoaW50KSBmaWxlX2hkci0+Y19tb2RlKSA8IDApCisgICAgZXJy
b3IgKDAsIGVycm5vLCAiJXMiLCBmaWxlX2hkci0+Y19uYW1lKTsKKyAgCisg
IGlmIChjbG9zZSAob3V0X2ZpbGVfZGVzKSA8IDApCiAgICAgZXJyb3IgKDAs
IGVycm5vLCAiJXMiLCBmaWxlX2hkci0+Y19uYW1lKTsKICAgCiAgIGlmIChy
ZXRhaW5fdGltZV9mbGFnKQpAQCAtNjEwLDYgKzYxMSw4IEBACiAgIGludCBj
ZGZfZmxhZzsgICAgICAgICAgICAgICAgIC8qIFRydWUgaWYgZmlsZSBpcyBh
IENERi4gICovCiAgIGludCBjZGZfY2hhcjsgICAgICAgICAgICAgICAgIC8q
IEluZGV4IG9mIGArJyBjaGFyIGluZGljYXRpbmcgYSBDREYuICAqLwogI2Vu
ZGlmCisgIGludCBmZDsJCQkvKiBGaWxlIGRlc2NyaXB0b3IgZm9yIGZjaG1v
ZCAqLworICBzdHJ1Y3Qgc3RhdCBmaWxlX3N0YXQ7CiAKICAgaWYgKHRvX3N0
ZG91dF9vcHRpb24pCiAgICAgcmV0dXJuOwpAQCAtNjYyLDcgKzY2NSw2IEBA
CiAJIGNyZWF0ZV9hbGxfZGlyZWN0b3JpZXMoKSwgc28gdGhlIG1rZGlyIHdp
bGwgZmFpbAogCSBiZWNhdXNlIHRoZSBkaXJlY3RvcnkgZXhpc3RzLiAgSWYg
dGhhdCdzIHRoZSBjYXNlLAogCSBkb24ndCBjb21wbGFpbiBhYm91dCBpdC4g
ICovCi0gICAgICBzdHJ1Y3Qgc3RhdCBmaWxlX3N0YXQ7CiAgICAgICBpZiAo
IChlcnJubyAhPSBFRVhJU1QpIHx8CiAJICAgKGxzdGF0IChmaWxlX2hkci0+
Y19uYW1lLCAmZmlsZV9zdGF0KSAhPSAwKSB8fAogCSAgICEoU19JU0RJUiAo
ZmlsZV9zdGF0LnN0X21vZGUpICkgKQpAQCAtNjcxLDE4ICs2NzMsMzAgQEAK
IAkgIHJldHVybjsKIAl9CiAgICAgfQorICBmZCA9IG9wZW4oZmlsZV9oZHIt
PmNfbmFtZSwgT19OT0NUVFl8T19SRFdSKTsKKyAgaWYgKGZkIDwgMCkgewor
ICAgIGVycm9yICgwLCBlcnJubywgIiVzIiwgZmlsZV9oZHItPmNfbmFtZSk7
CisgICAgcmV0dXJuOworICB9CisgIGlmICgoZnN0YXQoZmQsICZmaWxlX3N0
YXQpICE9IDApIHx8ICEoU19JU0RJUihmaWxlX3N0YXQuc3RfbW9kZSkpKSB7
CisgICAgZXJyb3IgKDAsIGVycm5vLCAiJXMiLCBmaWxlX2hkci0+Y19uYW1l
KTsKKyAgICBjbG9zZShmZCk7CisgICAgcmV0dXJuOworICB9CisgIAogICBp
ZiAoIW5vX2Nob3duX2ZsYWcpCi0gICAgaWYgKChjaG93biAoZmlsZV9oZHIt
PmNfbmFtZSwKKyAgICBpZiAoKGZjaG93biAoZmQsCiAJCXNldF9vd25lcl9m
bGFnID8gc2V0X293bmVyIDogZmlsZV9oZHItPmNfdWlkLAogCQlzZXRfZ3Jv
dXBfZmxhZyA/IHNldF9ncm91cCA6IGZpbGVfaGRyLT5jX2dpZCkgPCAwKQog
CSYmIGVycm5vICE9IEVQRVJNKQogICAgICAgZXJyb3IgKDAsIGVycm5vLCAi
JXMiLCBmaWxlX2hkci0+Y19uYW1lKTsKICAgLyogY2hvd24gbWF5IGhhdmUg
dHVybmVkIG9mZiBzb21lIHBlcm1pc3Npb25zIHdlIHdhbnRlZC4gKi8KLSAg
aWYgKGNobW9kIChmaWxlX2hkci0+Y19uYW1lLCAoaW50KSBmaWxlX2hkci0+
Y19tb2RlKSA8IDApCisgIGlmIChmY2htb2QgKGZkLCAoaW50KSBmaWxlX2hk
ci0+Y19tb2RlKSA8IDApCiAgICAgZXJyb3IgKDAsIGVycm5vLCAiJXMiLCBm
aWxlX2hkci0+Y19uYW1lKTsKKyAgY2xvc2UoZmQpOwogI2lmZGVmIEhQVVhf
Q0RGCiAgIGlmIChjZGZfZmxhZykKLSAgICAvKiBPbmNlIHdlICJoaWRlIiB0
aGUgZGlyZWN0b3J5IHdpdGggdGhlIGNobW9kKCksCisgICAgLyogT25jZSB3
ZSAiaGlkZSIgdGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBmY2htb2QoKSwKICAg
ICAgICB3ZSBoYXZlIHRvIHJlZmVyIHRvIGl0IHVzaW5nIG5hbWUrIGluc3Rl
YWQgb2YgbmFtZS4gICovCiAgICAgZmlsZV9oZHItPmNfbmFtZSBbY2RmX2No
YXJdID0gJysnOwogI2VuZGlmCkBAIC03MDIsNiArNzE2LDggQEAKIGNvcHlp
bl9kZXZpY2Uoc3RydWN0IG5ld19jcGlvX2hlYWRlciogZmlsZV9oZHIpCiB7
CiAgIGludCByZXM7CQkJLyogUmVzdWx0IG9mIHZhcmlvdXMgZnVuY3Rpb24g
Y2FsbHMuICAqLworICBpbnQgZmQ7ICAgICAgICAgICAgICAgICAgICAgICAv
KiBGaWxlIGRlc2NyaXB0b3IgZm9yIGZjaG1vZCAqLworICBzdHJ1Y3Qgc3Rh
dCBmaWxlX3N0YXQ7CiAKICAgaWYgKHRvX3N0ZG91dF9vcHRpb24pCiAgICAg
cmV0dXJuOwpAQCAtNzU1LDE1ICs3NzEsMjggQEAKICAgICAgIGVycm9yICgw
LCBlcnJubywgIiVzIiwgZmlsZV9oZHItPmNfbmFtZSk7CiAgICAgICByZXR1
cm47CiAgICAgfQorICBmZCA9IG9wZW4oZmlsZV9oZHItPmNfbmFtZSwgT19O
T0NUVFl8T19SRFdSKTsKKyAgaWYgKGZkIDwgMCkgeworICAgIGVycm9yICgw
LCBlcnJubywgIiVzIiwgZmlsZV9oZHItPmNfbmFtZSk7CisgICAgcmV0dXJu
OworICB9CisgIGlmICgoZnN0YXQoZmQsICZmaWxlX3N0YXQpICE9IDApIHx8
ICEoU19JU0NIUihmaWxlX3N0YXQuc3RfbW9kZSkgfHwKKwkJU19JU0JMSyhm
aWxlX3N0YXQuc3RfbW9kZSkgfHwgU19JU0ZJRk8oZmlsZV9zdGF0LnN0X21v
ZGUpIHx8CisJCVNfSVNTT0NLKGZpbGVfc3RhdC5zdF9tb2RlKSkgKSB7Cisg
ICAgZXJyb3IgKDAsIGVycm5vLCAiJXMiLCBmaWxlX2hkci0+Y19uYW1lKTsK
KyAgICBjbG9zZShmZCk7CisgICAgcmV0dXJuOworICB9CiAgIGlmICghbm9f
Y2hvd25fZmxhZykKLSAgICBpZiAoKGNob3duIChmaWxlX2hkci0+Y19uYW1l
LAorICAgIGlmICgoZmNob3duIChmZCwKIAkJc2V0X293bmVyX2ZsYWcgPyBz
ZXRfb3duZXIgOiBmaWxlX2hkci0+Y191aWQsCiAJCXNldF9ncm91cF9mbGFn
ID8gc2V0X2dyb3VwIDogZmlsZV9oZHItPmNfZ2lkKSA8IDApCiAJJiYgZXJy
bm8gIT0gRVBFUk0pCiAgICAgICBlcnJvciAoMCwgZXJybm8sICIlcyIsIGZp
bGVfaGRyLT5jX25hbWUpOwogICAvKiBjaG93biBtYXkgaGF2ZSB0dXJuZWQg
b2ZmIHNvbWUgcGVybWlzc2lvbnMgd2Ugd2FudGVkLiAqLwotICBpZiAoY2ht
b2QgKGZpbGVfaGRyLT5jX25hbWUsIGZpbGVfaGRyLT5jX21vZGUpIDwgMCkK
KyAgaWYgKGZjaG1vZCAoZmQsIGZpbGVfaGRyLT5jX21vZGUpIDwgMCkKICAg
ICBlcnJvciAoMCwgZXJybm8sICIlcyIsIGZpbGVfaGRyLT5jX25hbWUpOwor
ICBjbG9zZShmZCk7CiAgIGlmIChyZXRhaW5fdGltZV9mbGFnKQogICAgIHsK
ICAgICAgIHN0cnVjdCB1dGltYnVmIHRpbWVzOwkJLyogRm9yIHNldHRpbmcg
ZmlsZSB0aW1lcy4gICovCmRpZmYgLXVyYiBjcGlvLTIuNi5vcmlnL3NyYy9j
b3B5cGFzcy5jIGNwaW8tMi42L3NyYy9jb3B5cGFzcy5jCi0tLSBjcGlvLTIu
Ni5vcmlnL3NyYy9jb3B5cGFzcy5jCTIwMDUtMDQtMTcgMDk6MzY6MjUuMjE5
NjEyMzkyIC0wNDAwCisrKyBjcGlvLTIuNi9zcmMvY29weXBhc3MuYwkyMDA1
LTA0LTE3IDA5OjM2OjQ2LjQzMTM4NzcxMiAtMDQwMApAQCAtMTgxLDE4ICsx
ODEsMTkgQEAKIAkJfQogCSAgICAgIGlmIChjbG9zZSAoaW5fZmlsZV9kZXMp
IDwgMCkKIAkJZXJyb3IgKDAsIGVycm5vLCAiJXMiLCBpbnB1dF9uYW1lLmRz
X3N0cmluZyk7Ci0JICAgICAgaWYgKGNsb3NlIChvdXRfZmlsZV9kZXMpIDwg
MCkKLQkJZXJyb3IgKDAsIGVycm5vLCAiJXMiLCBvdXRwdXRfbmFtZS5kc19z
dHJpbmcpOwogCiAJICAgICAgLyogU2V0IHRoZSBhdHRyaWJ1dGVzIG9mIHRo
ZSBuZXcgZmlsZS4gICovCiAJICAgICAgaWYgKCFub19jaG93bl9mbGFnKQot
CQlpZiAoKGNob3duIChvdXRwdXRfbmFtZS5kc19zdHJpbmcsCisJCWlmICgo
ZmNob3duIChvdXRfZmlsZV9kZXMsCiAJCQkgICAgc2V0X293bmVyX2ZsYWcg
PyBzZXRfb3duZXIgOiBpbl9maWxlX3N0YXQuc3RfdWlkLAogCQkgICAgICBz
ZXRfZ3JvdXBfZmxhZyA/IHNldF9ncm91cCA6IGluX2ZpbGVfc3RhdC5zdF9n
aWQpIDwgMCkKIAkJICAgICYmIGVycm5vICE9IEVQRVJNKQogCQkgIGVycm9y
ICgwLCBlcnJubywgIiVzIiwgb3V0cHV0X25hbWUuZHNfc3RyaW5nKTsKLQkg
ICAgICAvKiBjaG93biBtYXkgaGF2ZSB0dXJuZWQgb2ZmIHNvbWUgcGVybWlz
c2lvbnMgd2Ugd2FudGVkLiAqLwotCSAgICAgIGlmIChjaG1vZCAob3V0cHV0
X25hbWUuZHNfc3RyaW5nLCBpbl9maWxlX3N0YXQuc3RfbW9kZSkgPCAwKQor
CSAgICAgIC8qIGZjaG93biBtYXkgaGF2ZSB0dXJuZWQgb2ZmIHNvbWUgcGVy
bWlzc2lvbnMgd2Ugd2FudGVkLiAqLworCSAgICAgIGlmIChmY2htb2QgKG91
dF9maWxlX2RlcywgaW5fZmlsZV9zdGF0LnN0X21vZGUpIDwgMCkKKwkJZXJy
b3IgKDAsIGVycm5vLCAiJXMiLCBvdXRwdXRfbmFtZS5kc19zdHJpbmcpOwor
CSAgICAgIC8qIG5vdyB0aGF0IHdlIHNldCBwZXJtaXNzaW9ucywgY2xvc2Ug
b3V0IGZpbGUgKi8KKwkgICAgICBpZiAoY2xvc2UgKG91dF9maWxlX2Rlcykg
PCAwKQogCQllcnJvciAoMCwgZXJybm8sICIlcyIsIG91dHB1dF9uYW1lLmRz
X3N0cmluZyk7CiAJICAgICAgaWYgKHJlc2V0X3RpbWVfZmxhZykKIAkJewpA
QCAtMjIyLDYgKzIyMyw3IEBACiAJfQogICAgICAgZWxzZSBpZiAoU19JU0RJ
UiAoaW5fZmlsZV9zdGF0LnN0X21vZGUpKQogCXsKKwkgIGludCBmZDsgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEZpbGUgZGVzY3JpcHRvciBmb3IgZmNo
bW9kICovCiAjaWZkZWYgSFBVWF9DREYKIAkgIGNkZl9mbGFnID0gMDsKICNl
bmRpZgpAQCAtMjY1LDE4ICsyNjcsMzEgQEAKIAkJICBjb250aW51ZTsKIAkJ
fQogCSAgICB9CisJICBmZCA9IG9wZW4ob3V0cHV0X25hbWUuZHNfc3RyaW5n
LCBPX05PQ1RUWXxPX1JEV1IpOworCSAgaWYgKGZkIDwgMCkgeworCSAgICBl
cnJvciAoMCwgZXJybm8sICIlcyIsIG91dHB1dF9uYW1lLmRzX3N0cmluZyk7
CisJICAgIGNvbnRpbnVlOworCSAgfQorCSAgaWYgKChmc3RhdChmZCwgJm91
dF9maWxlX3N0YXQpICE9IDApIHx8IAorCQkhKFNfSVNESVIob3V0X2ZpbGVf
c3RhdC5zdF9tb2RlKSkpIHsKKwkgICAgZXJyb3IgKDAsIGVycm5vLCAiJXMi
LCBvdXRwdXRfbmFtZS5kc19zdHJpbmcpOworCSAgICBjbG9zZShmZCk7CisJ
ICAgIGNvbnRpbnVlOworCSAgfQorCiAJICBpZiAoIW5vX2Nob3duX2ZsYWcp
Ci0JICAgIGlmICgoY2hvd24gKG91dHB1dF9uYW1lLmRzX3N0cmluZywKKwkg
ICAgaWYgKChmY2hvd24gKGZkLAogCQkJc2V0X293bmVyX2ZsYWcgPyBzZXRf
b3duZXIgOiBpbl9maWxlX3N0YXQuc3RfdWlkLAogCQkgICAgICBzZXRfZ3Jv
dXBfZmxhZyA/IHNldF9ncm91cCA6IGluX2ZpbGVfc3RhdC5zdF9naWQpIDwg
MCkKIAkJJiYgZXJybm8gIT0gRVBFUk0pCiAJICAgICAgZXJyb3IgKDAsIGVy
cm5vLCAiJXMiLCBvdXRwdXRfbmFtZS5kc19zdHJpbmcpOwogCSAgLyogY2hv
d24gbWF5IGhhdmUgdHVybmVkIG9mZiBzb21lIHBlcm1pc3Npb25zIHdlIHdh
bnRlZC4gKi8KLQkgIGlmIChjaG1vZCAob3V0cHV0X25hbWUuZHNfc3RyaW5n
LCBpbl9maWxlX3N0YXQuc3RfbW9kZSkgPCAwKQorCSAgaWYgKGZjaG1vZCAo
ZmQsIGluX2ZpbGVfc3RhdC5zdF9tb2RlKSA8IDApCiAJICAgIGVycm9yICgw
LCBlcnJubywgIiVzIiwgb3V0cHV0X25hbWUuZHNfc3RyaW5nKTsKKwkgIGNs
b3NlKGZkKTsKICNpZmRlZiBIUFVYX0NERgogCSAgaWYgKGNkZl9mbGFnKQot
CSAgICAvKiBPbmNlIHdlICJoaWRlIiB0aGUgZGlyZWN0b3J5IHdpdGggdGhl
IGNobW9kKCksCisJICAgIC8qIE9uY2Ugd2UgImhpZGUiIHRoZSBkaXJlY3Rv
cnkgd2l0aCB0aGUgZmNobW9kKCksCiAJICAgICAgIHdlIGhhdmUgdG8gcmVm
ZXIgdG8gaXQgdXNpbmcgbmFtZSsgaXNudGVhZCBvZiBuYW1lLiAgKi8KIAkg
ICAgb3V0cHV0X25hbWUuZHNfc3RyaW5nIFtjZGZfY2hhcl0gPSAnKyc7CiAj
ZW5kaWYKQEAgLTI5Nyw2ICszMTIsNyBAQAogI2VuZGlmCiAJICAgICAgIDAp
CiAJeworCSAgaW50IGZkOwkvKiBGaWxlIGRlc2NyaXB0b3IgZm9yIGZjaG1v
ZCAqLwogCSAgLyogQ2FuIHRoZSBjdXJyZW50IGZpbGUgYmUgbGlua2VkIHRv
IGEgYW5vdGhlciBmaWxlPwogCSAgICAgU2V0IGxpbmtfbmFtZSB0byB0aGUg
b3JpZ2luYWwgZmlsZSBuYW1lLiAgKi8KIAkgIGlmIChsaW5rX2ZsYWcpCkBA
IC0zMjQsMTUgKzM0MCwzMCBAQAogCQkgIGVycm9yICgwLCBlcnJubywgIiVz
Iiwgb3V0cHV0X25hbWUuZHNfc3RyaW5nKTsKIAkJICBjb250aW51ZTsKIAkJ
fQorCSAgICAgICAgZmQgPSBvcGVuKG91dHB1dF9uYW1lLmRzX3N0cmluZywg
T19OT0NUVFl8T19SRFdSKTsKKwkgICAgICAgIGlmIChmZCA8IDApIHsKKwkg
ICAgICAgICAgZXJyb3IgKDAsIGVycm5vLCAiJXMiLCBvdXRwdXRfbmFtZS5k
c19zdHJpbmcpOworCSAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgIH0K
KwkgICAgICAgIGlmICgoZnN0YXQoZmQsICZvdXRfZmlsZV9zdGF0KSAhPSAw
KSB8fCAKKwkJCSEoKFNfSVNDSFIob3V0X2ZpbGVfc3RhdC5zdF9tb2RlKSB8
fCAKKwkJCSAgIFNfSVNCTEsob3V0X2ZpbGVfc3RhdC5zdF9tb2RlKSB8fAor
CQkJICAgU19JU0ZJRk8ob3V0X2ZpbGVfc3RhdC5zdF9tb2RlKSB8fAorCQkJ
ICAgU19JU1NPQ0sob3V0X2ZpbGVfc3RhdC5zdF9tb2RlKSkpKSB7CisJICAg
ICAgICAgICBlcnJvciAoMCwgZXJybm8sICIlcyIsIG91dHB1dF9uYW1lLmRz
X3N0cmluZyk7CisJICAgICAgICAgICBjbG9zZShmZCk7CisJICAgICAgICAg
ICBjb250aW51ZTsKKwkgICAgICAgIH0KIAkgICAgICBpZiAoIW5vX2Nob3du
X2ZsYWcpCi0JCWlmICgoY2hvd24gKG91dHB1dF9uYW1lLmRzX3N0cmluZywK
KwkJaWYgKChmY2hvd24gKGZkLAogCQkJICAgIHNldF9vd25lcl9mbGFnID8g
c2V0X293bmVyIDogaW5fZmlsZV9zdGF0LnN0X3VpZCwKIAkJCSAgc2V0X2dy
b3VwX2ZsYWcgPyBzZXRfZ3JvdXAgOiBpbl9maWxlX3N0YXQuc3RfZ2lkKSA8
IDApCiAJCSAgICAmJiBlcnJubyAhPSBFUEVSTSkKIAkJICBlcnJvciAoMCwg
ZXJybm8sICIlcyIsIG91dHB1dF9uYW1lLmRzX3N0cmluZyk7Ci0JICAgICAg
LyogY2hvd24gbWF5IGhhdmUgdHVybmVkIG9mZiBzb21lIHBlcm1pc3Npb25z
IHdlIHdhbnRlZC4gKi8KLQkgICAgICBpZiAoY2htb2QgKG91dHB1dF9uYW1l
LmRzX3N0cmluZywgaW5fZmlsZV9zdGF0LnN0X21vZGUpIDwgMCkKKwkgICAg
ICAvKiBmY2hvd24gbWF5IGhhdmUgdHVybmVkIG9mZiBzb21lIHBlcm1pc3Np
b25zIHdlIHdhbnRlZC4gKi8KKwkgICAgICBpZiAoZmNobW9kIChmZCwgaW5f
ZmlsZV9zdGF0LnN0X21vZGUpIDwgMCkKIAkJZXJyb3IgKDAsIGVycm5vLCAi
JXMiLCBvdXRwdXRfbmFtZS5kc19zdHJpbmcpOworCSAgICAgIGNsb3NlKGZk
KTsKIAkgICAgICBpZiAocmV0YWluX3RpbWVfZmxhZykKIAkJewogCQkgIHRp
bWVzLmFjdGltZSA9IHRpbWVzLm1vZHRpbWUgPSBpbl9maWxlX3N0YXQuc3Rf
bXRpbWU7CmRpZmYgLXVyYiBjcGlvLTIuNi5vcmlnL3NyYy9tYWtlcGF0aC5j
IGNwaW8tMi42L3NyYy9tYWtlcGF0aC5jCi0tLSBjcGlvLTIuNi5vcmlnL3Ny
Yy9tYWtlcGF0aC5jCTIwMDUtMDQtMTcgMDk6MzY6MjUuMjIxNjEyMDg4IC0w
NDAwCisrKyBjcGlvLTIuNi9zcmMvbWFrZXBhdGguYwkyMDA1LTA0LTE3IDA5
OjM3OjQ1LjM3MDQyNzYxNiAtMDQwMApAQCAtMTAwLDEyICsxMDAsMTQgQEAK
ICAgICAgIGNoYXIgKnNsYXNoOwogICAgICAgaW50IHRtcF9tb2RlOwkJLyog
SW5pdGlhbCBwZXJtcyBmb3IgbGVhZGluZyBkaXJzLiAgKi8KICAgICAgIGlu
dCByZV9wcm90ZWN0OwkJLyogU2hvdWxkIGxlYWRpbmcgZGlycyBiZSB1bndy
aXRhYmxlPyAqLworICAgICAgaW50IGZkOyAgICAgICAgICAgICAgICAgICAv
KiBGaWxlIGRlc2NyaXB0b3IgZm9yIGZjaG1vZCAqLwogICAgICAgc3RydWN0
IHB0cl9saXN0CiAgICAgICB7CiAJY2hhciAqZGlybmFtZV9lbmQ7CiAJc3Ry
dWN0IHB0cl9saXN0ICpuZXh0OwogICAgICAgfTsKICAgICAgIHN0cnVjdCBw
dHJfbGlzdCAqcCwgKmxlYWRpbmdfZGlycyA9IE5VTEw7CisgICAgICBzdHJ1
Y3Qgc3RhdCB0c3RhdHM7ICAgICAgIC8qIHRlbXBvcmFyeSBzdGF0cyBmb3Ig
ZmNobW9kICovCiAKICAgICAgIC8qIElmIGxlYWRpbmcgZGlyZWN0b3JpZXMg
c2hvdWxkbid0IGJlIHdyaXRhYmxlIG9yIGV4ZWN1dGFibGUsCiAJIG9yIHNo
b3VsZCBoYXZlIHNldFt1Z11pZCBvciBzdGlja3kgYml0cyBzZXQgYW5kIHdl
IGFyZSBzZXR0aW5nCkBAIC0xNTcsOCArMTU5LDIwIEBACiAJCSAgaWYgKHZl
cmJvc2VfZm10X3N0cmluZyAhPSBOVUxMKQogCQkgICAgZXJyb3IgKDAsIDAs
IHZlcmJvc2VfZm10X3N0cmluZywgZGlycGF0aCk7CiAKKwkJICBmZCA9IG9w
ZW4oZGlycGF0aCwgT19OT0NUVFl8T19SRFdSKTsKKwkJICBpZiAoZmQgPCAw
KSB7CisJCSAgICBlcnJvciAoMCwgZXJybm8sICIlcyIsIGRpcnBhdGgpOwor
CQkgICAgdW1hc2sgKG9sZG1hc2spOworCQkgICAgcmV0dXJuIDE7CisJCSAg
fQorCQkgIGlmICgoZnN0YXQoZmQsICZ0c3RhdHMpICE9IDApIHx8ICEoU19J
U0RJUih0c3RhdHMuc3RfbW9kZSkpKSB7CisJCSAgICBlcnJvciAoMCwgZXJy
bm8sICIlcyIsIGRpcnBhdGgpOworCQkgICAgdW1hc2sgKG9sZG1hc2spOwor
CQkgICAgY2xvc2UoZmQpOworCQkgICAgcmV0dXJuIDE7CisJCSAgfQogCQkg
IGlmIChvd25lciAhPSAodWlkX3QpIC0xICYmIGdyb3VwICE9IChnaWRfdCkg
LTEKLQkJICAgICAgJiYgY2hvd24gKGRpcnBhdGgsIG93bmVyLCBncm91cCkK
KwkJICAgICAgJiYgZmNob3duIChmZCwgb3duZXIsIGdyb3VwKQogI2lmZGVm
IEFGUwogCQkgICAgICAmJiBlcnJubyAhPSBFUEVSTQogI2VuZGlmCkBAIC0x
ODIsMTAgKzE5NiwxMSBAQAogCQkJICBpdHMgaGlkZGVuL3NldHVpZCBiaXQu
ICBBbHNvIGFkZCB0aGUgYCsnIGJhY2sgdG8KIAkJCSAgaXRzIG5hbWUgKHNp
bmNlIG9uY2UgaXQncyAiaGlkZGVuIiB3ZSBtdXN0IHJlZmVyCiAJCQkgIHRv
IGFzIGBuYW1lKycgaW5zdGVhZCBvZiBgbmFtZScpLiAgKi8KLQkJICAgICAg
Y2htb2QgKGRpcnBhdGgsIDA0NzAwKTsKKwkJICAgICAgZmNobW9kIChmZCwg
MDQ3MDApOwogCQkgICAgICAqKHNsYXNoIC0gMSkgPSAnKyc7CiAJCSAgICB9
CiAjZW5kaWYKKwkJICBjbG9zZShmZCk7CiAJCX0KIAkgICAgfQogCSAgZWxz
ZSBpZiAoIVNfSVNESVIgKHN0YXRzLnN0X21vZGUpKQpAQCAtMjIyLDEwICsy
MzcsMTkgQEAKIAl9CiAgICAgICBpZiAodmVyYm9zZV9mbXRfc3RyaW5nICE9
IE5VTEwpCiAJZXJyb3IgKDAsIDAsIHZlcmJvc2VfZm10X3N0cmluZywgZGly
cGF0aCk7Ci0KKyAgICAgIGZkID0gb3BlbihkaXJwYXRoLCBPX05PQ1RUWXxP
X1JEV1IpOworICAgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBlcnJvciAo
MCwgZXJybm8sICIlcyIsIGRpcnBhdGgpOworICAgICAgICByZXR1cm4gMTsK
KyAgICAgIH0KKyAgICAgIGlmICgoZnN0YXQoZmQsICZ0c3RhdHMpICE9IDAp
IHx8ICEoU19JU0RJUih0c3RhdHMuc3RfbW9kZSkpKSB7CisgICAgICAgIGVy
cm9yICgwLCBlcnJubywgIiVzIiwgZGlycGF0aCk7CisgICAgICAgIGNsb3Nl
KGZkKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CiAgICAgICBpZiAo
b3duZXIgIT0gKHVpZF90KSAtMSAmJiBncm91cCAhPSAoZ2lkX3QpIC0xKQog
CXsKLQkgIGlmIChjaG93biAoZGlycGF0aCwgb3duZXIsIGdyb3VwKQorCSAg
aWYgKGZjaG93biAoZmQsIG93bmVyLCBncm91cCkKICNpZmRlZiBBRlMKIAkg
ICAgICAmJiBlcnJubyAhPSBFUEVSTQogI2VuZGlmCkBAIC0yMzYsMTIgKzI2
MCwxMiBAQAogCSAgICB9CiAJfQogCSAgLyogY2hvd24gbWF5IGhhdmUgdHVy
bmVkIG9mZiBzb21lIHBlcm1pc3Npb24gYml0cyB3ZSB3YW50ZWQuICAqLwot
CSAgaWYgKChtb2RlICYgMDcwMDApICE9IDAgJiYgY2htb2QgKGRpcnBhdGgs
IG1vZGUpKQorCSAgaWYgKChtb2RlICYgMDcwMDApICE9IDAgJiYgZmNobW9k
IChmZCwgbW9kZSkpCiAJICAgIHsKIAkgICAgICBlcnJvciAoMCwgZXJybm8s
ICIlcyIsIGRpcnBhdGgpOwogCSAgICAgIHJldHZhbCA9IDE7CiAJICAgIH0K
LQorICAgICAgICBjbG9zZShmZCk7CiAgICAgICAvKiBJZiB0aGUgbW9kZSBm
b3IgbGVhZGluZyBkaXJlY3RvcmllcyBkaWRuJ3QgaW5jbHVkZSBvd25lciAi
d3giCiAJIHByaXZpbGVnZXMsIHdlIGhhdmUgdG8gcmVzZXQgdGhlaXIgcHJv
dGVjdGlvbnMgdG8gdGhlIGNvcnJlY3QKIAkgdmFsdWUuICAqLwpAQCAtMjY1
LDcgKzI4OSw3IEBACiAgIGVsc2UKICAgICB7CiAgICAgICAvKiBXZSBnZXQg
aGVyZSBpZiB0aGUgZW50aXJlIHBhdGggYWxyZWFkeSBleGlzdHMuICAqLwot
CisgICAgICBpbnQgZmQ7CS8qIEZpbGUgZGVzY3JpcHRvciBmb3IgZmNobW9k
ICovCiAgICAgICBpZiAoIVNfSVNESVIgKHN0YXRzLnN0X21vZGUpKQogCXsK
IAkgIGVycm9yICgwLCAwLCBfKCJgJXMnIGV4aXN0cyBidXQgaXMgbm90IGEg
ZGlyZWN0b3J5IiksIGRpcnBhdGgpOwpAQCAtMjczLDE0ICsyOTcsMjYgQEAK
IAkgIHJldHVybiAxOwogCX0KIAotICAgICAgLyogY2hvd24gbXVzdCBwcmVj
ZWRlIGNobW9kIGJlY2F1c2Ugb24gc29tZSBzeXN0ZW1zLAorICAgICAgZmQg
PSBvcGVuKGRpcnBhdGgsIE9fTk9DVFRZfE9fUkRXUik7CisgICAgICBpZiAo
ZmQgPCAwKSB7CisgICAgICAgIGVycm9yICgwLCBlcnJubywgIiVzIiwgZGly
cGF0aCk7CisJdW1hc2sgKG9sZG1hc2spOworICAgICAgICByZXR1cm4gMTsK
KyAgICAgIH0KKyAgICAgIGlmICgoZnN0YXQoZmQsICZ0c3RhdHMpICE9IDAp
IHx8ICEoU19JU0RJUih0c3RhdHMuc3RfbW9kZSkpKSB7CisgICAgICAgIGVy
cm9yICgwLCBlcnJubywgIiVzIiwgZGlycGF0aCk7CisJdW1hc2sgKG9sZG1h
c2spOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybiAxOwor
ICAgICAgfQorICAgICAgLyogY2hvd24gbXVzdCBwcmVjZWRlIGZjaG1vZCBi
ZWNhdXNlIG9uIHNvbWUgc3lzdGVtcywKIAkgY2hvd24gY2xlYXJzIHRoZSBz
ZXRbdWddaWQgYml0cyBmb3Igbm9uLXN1cGVydXNlcnMsCiAJIHJlc3VsdGlu
ZyBpbiBpbmNvcnJlY3QgcGVybWlzc2lvbnMuCiAJIE9uIFN5c3RlbSBWLCB1
c2VycyBjYW4gZ2l2ZSBhd2F5IGZpbGVzIHdpdGggY2hvd24gYW5kIHRoZW4g
bm90Ci0JIGJlIGFibGUgdG8gY2htb2QgdGhlbS4gIFNvIGRvbid0IGdpdmUg
ZmlsZXMgYXdheS4gICovCisJIGJlIGFibGUgdG8gZmNobW9kIHRoZW0uICBT
byBkb24ndCBnaXZlIGZpbGVzIGF3YXkuICAqLwogCiAgICAgICBpZiAob3du
ZXIgIT0gKHVpZF90KSAtMSAmJiBncm91cCAhPSAoZ2lkX3QpIC0xCi0JICAm
JiBjaG93biAoZGlycGF0aCwgb3duZXIsIGdyb3VwKQorCSAgJiYgZmNob3du
IChmZCwgb3duZXIsIGdyb3VwKQogI2lmZGVmIEFGUwogCSAgJiYgZXJybm8g
IT0gRVBFUk0KICNlbmRpZgpAQCAtMjg5LDExICszMjUsMTIgQEAKIAkgIGVy
cm9yICgwLCBlcnJubywgIiVzIiwgZGlycGF0aCk7CiAJICByZXR2YWwgPSAx
OwogCX0KLSAgICAgIGlmIChjaG1vZCAoZGlycGF0aCwgbW9kZSkpCisgICAg
ICBpZiAoZmNobW9kIChmZCwgbW9kZSkpCiAJewogCSAgZXJyb3IgKDAsIGVy
cm5vLCAiJXMiLCBkaXJwYXRoKTsKIAkgIHJldHZhbCA9IDE7CiAJfQorICAg
ICAgY2xvc2UoZmQpOwogICAgIH0KIAogICB1bWFzayAob2xkbWFzayk7Cg==


--0-720694802-1113914095=:98221--

home help back first fref pref prev next nref lref last post