This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

other/7399: Exception object destructors called pre-maturely.


>Number:         7399
>Category:       other
>Synopsis:       Exception object destructors called pre-maturely.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 24 14:36:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Larry Clay; Ecustomers Inc.
>Release:        g++ 2.96
>Organization:
>Environment:
linux 2.4.2-2 #1 on i686
>Description:
The context of this bug is a method that throws an exception containing an error message and a calling method that "catch"es the exception. The exception object "news" some memory in its constructor, and "deletes" it in its destructor. The destructor is called and the memory is deleted in the method that does the throw. Thus the catching method gets an exception object with a corrupted message buffer. 

For what its worth... the program the test program was based on works on windows when compiled with the visual c++ compiler. The test program fails on both linux and cygwin.
>How-To-Repeat:

Compile and run the program that comprises the second part of the attachment. Set and export the environment variable "MALLOC_CHECK_=1". When the test program is run, usually the message attached to the exception object has been corrupted when it is caught. Also, MALLOC_CHECK will report that the message buffer is free'd after already being free'd. 
>Fix:
I worked around this in our production code by giving the exception object a fixed length buffer that it can store the exception error message in. 
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="OUT"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="OUT"

UmVhZGluZyBzcGVjcyBmcm9tIC91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
Ni9zcGVjcwpnY2MgdmVyc2lvbiAyLjk2IDIwMDAwNzMxIChSZWQgSGF0IExpbnV4IDcuMSAyLjk2
LTgxKQogL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2NwcDAgLWxhbmct
YysrIC1EX19HTlVHX189MiAtRF9fRVhDRVBUSU9OUyAtdiAtRF9fR05VQ19fPTIgLURfX0dOVUNf
TUlOT1JfXz05NiAtRF9fR05VQ19QQVRDSExFVkVMX189MCAtRF9fRUxGX18gLUR1bml4IC1EbGlu
dXggLURfX0VMRl9fIC1EX191bml4X18gLURfX2xpbnV4X18gLURfX3VuaXggLURfX2xpbnV4IC1B
c3lzdGVtKHBvc2l4KSAtQWNwdShpMzg2KSAtQW1hY2hpbmUoaTM4NikgLURpMzg2IC1EX19pMzg2
IC1EX19pMzg2X18gLURfX3R1bmVfaTM4Nl9fIGVidWcuY3h4IGVidWcuaWkKR05VIENQUCB2ZXJz
aW9uIDIuOTYgMjAwMDA3MzEgKFJlZCBIYXQgTGludXggNy4xIDIuOTYtODEpIChjcHBsaWIpIChp
Mzg2IExpbnV4L0VMRikKaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xvY2Fs
L2luY2x1ZGUiCmlnbm9yaW5nIG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAiL3Vzci9pMzg2LXJlZGhh
dC1saW51eC9pbmNsdWRlIgojaW5jbHVkZSAiLi4uIiBzZWFyY2ggc3RhcnRzIGhlcmU6CiNpbmNs
dWRlIDwuLi4+IHNlYXJjaCBzdGFydHMgaGVyZToKIC91c3IvaW5jbHVkZS9nKystMwogL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUKIC91c3IvaW5jbHVkZQpF
bmQgb2Ygc2VhcmNoIGxpc3QuCiAvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTYvY2MxcGx1cyBlYnVnLmlpIC1xdWlldCAtZHVtcGJhc2UgZWJ1Zy5jeHggLXZlcnNpb24gLW8g
ZWJ1Zy5zCkdOVSBDKysgdmVyc2lvbiAyLjk2IDIwMDAwNzMxIChSZWQgSGF0IExpbnV4IDcuMSAy
Ljk2LTgxKSAoaTM4Ni1yZWRoYXQtbGludXgpIGNvbXBpbGVkIGJ5IEdOVSBDIHZlcnNpb24gMi45
NiAyMDAwMDczMSAoUmVkIEhhdCBMaW51eCA3LjEgMi45Ni04MSkuCiBhcyAtViAtUXkgLW8gZWJ1
Zy5vIGVidWcucwpHTlUgYXNzZW1ibGVyIHZlcnNpb24gMi4xMC45MSAoaTM4Ni1yZWRoYXQtbGlu
dXgpIHVzaW5nIEJGRCB2ZXJzaW9uIDIuMTAuOTEuMC4yCiAvdXNyL2xpYi9nY2MtbGliL2kzODYt
cmVkaGF0LWxpbnV4LzIuOTYvY29sbGVjdDIgLW0gZWxmX2kzODYgLWR5bmFtaWMtbGlua2VyIC9s
aWIvbGQtbGludXguc28uMiAvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYv
Li4vLi4vLi4vY3J0MS5vIC91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni8u
Li8uLi8uLi9jcnRpLm8gL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2Ny
dGJlZ2luLm8gLUwvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYgLUwvdXNy
L2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvLi4vLi4vLi4gZWJ1Zy5vIC1sZ2Nj
IC1sYyAtbGdjYyAvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvY3J0ZW5k
Lm8gL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2Ly4uLy4uLy4uL2NydG4u
bwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAuaWkgZmlsZSBmb2xsb3dzICMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCgojIDIgImVidWcuY3h4IgojIDEgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMiAzCiMgMzExICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MiAzCiMgMjggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMKIyAxOTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNs
dWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAzNCAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMK
IyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsK
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5
cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBf
X2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYg
c2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7Cgpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlw
ZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5
cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBf
X3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2lu
dCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBf
X2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBl
ZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlw
ZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJd
OwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9f
Y2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9u
ZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBp
bnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoKCgp0eXBlZGVmIGlu
dCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0
eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2Nu
dF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9f
ZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYg
X191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7
CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2Zm
NjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0
aHJlYWR0eXBlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRl
L2JpdHMvc2NoZWQuaCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVk
X3ByaW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAy
IDMKCgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGlu
dCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0
ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsK
ICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hl
ZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3Bl
OwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9f
c3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlw
ZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRo
cmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1
Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2ln
bmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jl
c2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGlu
dCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVh
ZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJl
YWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwojIDE0MCAiL3Vz
ci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyAzNiAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDQ0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp0
eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwojIDU0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
Mwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNjQgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiMgOSAiL3Vzci9p
bmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAz
CiMgMTAgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgojIDEgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTIg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5o
IiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2Nv
bmZpZy5oIiAyIDMKIyAyNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91
c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5oIiAx
IDMKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy93Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDY3ICIvdXNy
L2luY2x1ZGUvd2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5p
b24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7
Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBl
ZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9H
X2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVf
dCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9nY29u
di5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1
ZGUvZ2NvbnYuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vz
ci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5o
IiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5j
bHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCiMgMzEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgplbnVtCnsKICBfX0dDT05W
X09LID0gMCwKICBfX0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01F
TSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NP
TlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZf
SUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7
CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4
MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwOwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7
CnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3Q7CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7
CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0
cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCB1bnNpZ25lZCBjaGFyICoqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7
CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAq
KTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAq
KTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0
ZXAgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfX2djb252X3N0
ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90
cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1
ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19n
Y29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9p
ZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFu
c19kYXRhCnsKCiAgX19nY29udl90cmFuc19mY3QgX190cmFuc19mY3Q7CiAgX19nY29udl90cmFu
c19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2Zj
dCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5z
X2RhdGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2Nv
bnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7CiAgX19jb25zdCBjaGFyICpfX21vZG5h
bWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNoYXIgKl9fZnJvbV9uYW1lOwogIGNoYXIgKl9fdG9f
bmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2ZjdCBfX2luaXRfZmN0
OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCiAgaW50IF9fbWluX25lZWRlZF9mcm9t
OwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5fbmVlZGVkX3RvOwogIGludCBf
X21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAqX19kYXRhOwp9OwoK
CgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmOwog
IHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdzOwoKCgogIGludCBf
X2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7CgogIF9fbWJzdGF0
ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0cnVjdCBfX2djb252
X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9fZ2NvbnZfaW5mbwp7
CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9fc3RlcHM7CiAgX19l
eHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhIFswXTsKfSAqX19nY29u
dl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBlZGVmIHVuaW9uCnsK
ICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2Nv
bnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsKICB9IF9f
Y29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRy
aWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3Vp
bnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2ln
bmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsK
IyAzMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUxICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRl
L3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8y
Ljk2L2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNf
dmFfbGlzdDsKIyA1MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDE1OCAiL3Vzci9pbmNs
dWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNjgg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0
cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9J
T19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTEgIi91c3IvaW5jbHVkZS9saWJpby5o
IiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRfb2ssCiAgX19jb2Rl
Y3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9ub2NvbnYKfTsKIyAy
NTkgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFn
czsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFy
KiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0
ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hh
ciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1
cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJr
ZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9i
bGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9j
b2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07
CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzAzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwog
IF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAgdm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsK
CiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNp
emVvZiAodm9pZCAqKV07Cgp9OwoKCgoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0
cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxF
X3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJf
MV9zdGRlcnJfOwojIDM0MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBfX3NzaXpl
X3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBfX25i
eXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nv
b2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9f
Y29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Ns
b3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CiMgMzkxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpl
eHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBf
X292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3Vu
ZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9J
T19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAq
LCB3aW50X3QpIHRocm93ICgpOwojIDQyNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJu
IGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19w
dXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Zl
b2YgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9f
RklMRSAqX19mcCkgdGhyb3cgKCk7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19G
SUxFICpfX2ZwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9f
RklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAq
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJv
dyAoKTsKIyA0NTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX3Zmc2Nh
bmYgKF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIHRocm93
ICgpOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0
IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlz
dCkgdGhyb3cgKCk7CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwg
X19zc2l6ZV90KSB0aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICos
IHZvaWQgKiwgc2l6ZV90KSB0aHJvdyAoKTsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYg
KF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIHRocm93ICgpOwpleHRlcm4gX19vZmY2
NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgdGhyb3cgKCk7Cgpl
eHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CiMg
NTEwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9CiMgNjUgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAyIDMKIyA3OSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfR19mcG9zX3QgZnBv
c190OwojIDEyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9zdGRpb19saW0uaCIgMSAzCiMgMTI5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCmV4
dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVy
cjsKIyAxNDMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgcmVtb3ZlIChfX2Nv
bnN0IGNoYXIgKl9fZmlsZW5hbWUpIHRocm93ICgpOwoKZXh0ZXJuIGludCByZW5hbWUgKF9fY29u
c3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IEZJTEUgKnRtcGZpbGUgKHZvaWQpIHRocm93ICgpOwojIDE2MiAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSB0aHJvdyAoKTsKIyAxNzkgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBf
X2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoK
ZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyAyMDIgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbW9kZXMpIHRocm93ICgpOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKIyAyMzIgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMp
IHRocm93ICgpOwojIDI1NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0
YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
LCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVz
LCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBzZXRsaW5l
YnVmIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBwcmludGYg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVy
biBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJn
KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBp
bnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNp
emVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19y
ZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7
CiMgMzI2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQg
c3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwojIDM1MiAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IGdldGNoYXIgKHZvaWQpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRj
X3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91
bmxvY2tlZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgdGhyb3cg
KCk7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQg
X19jKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSB0aHJv
dyAoKTsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24s
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgdGhyb3cgKCk7CiMgNDE4ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKSB0aHJvdyAoKTsK
IyA0NDIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgdGhy
b3cgKCk7CiMgNDUyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IHB1dHMgKF9f
Y29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2Ms
IEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAq
X19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gc2l6
ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXpl
LAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3Mp
IHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3Ry
aWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIHNp
emVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6
ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmc2VlayAo
RklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgpOwoK
ZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4g
dm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA0OTYgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGludCBm
c2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSB0aHJvdyAoKTsK
IyA1MzIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoK
CmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRl
cm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0
ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRlcm4g
aW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107
CiMgNTYzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZpbGVubyAoRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNo
YXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpj
dGVybWlkIChjaGFyICpfX3MpIHRocm93ICgpOwojIDYxMCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJu
IHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA2MzQgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzCn0KIyAzICJlYnVnLmN4eCIgMgoKY2xhc3MgTXlFeGNlcHRpb24g
ewoKcHVibGljOgogICAgICAgIE15RXhjZXB0aW9uKGNoYXIgKnN0cikgewogICAgICAgICAgICAg
ICAgaW50IGk7CiAgICAgICAgICAgICAgICBpbnQgc3o7CiAgICAgICAgICAgICAgICBmb3Ioc3o9
MDsgc3RyW3N6XSAhPSAnXDAnOyBzeisrKTsKCiAgICAgICAgICAgICAgICBtc2cgPSBuZXcgY2hh
cltzeiArIDFdOwogICAgICAgICAgICAgICAgZm9yKGk9MDsgaSA8IHN6OyBpKyspIG1zZ1tpXSA9
IHN0cltpXTsKICAgICAgICAgICAgICAgIG1zZ1tzel0gPSAnXDAnOwoKICAgICAgICAgICAgICAg
IHByaW50ZigiT3JpZ2luYWwgTWVzc2FnZTo6ICoweCV4PSVzXG4iLCBtc2csIG1zZyk7CiAgICAg
ICAgfQoKICAgICAgICB+TXlFeGNlcHRpb24oKSB7CiAgICAgICAgICAgICAgICBwcmludGYoIkRl
c3RydWN0aW5nOjogKjB4JXg9JTI2LjI2c1xuIiwgbXNnLCBtc2cpOwogICAgICAgICAgICAgICAg
ZGVsZXRlIG1zZzsKICAgICAgICB9CiAgICAgICAgY2hhciAqZ2V0TXNnKCkgewogICAgICAgICAg
ICAgICAgcmV0dXJuIG1zZzsKICAgICAgICB9Cgpwcml2YXRlOgogICAgICAgIGNoYXIgKm1zZzsK
fTsKCnZvaWQgeSgpCnsKICAgICAgICB0aHJvdyBNeUV4Y2VwdGlvbigiYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXoiKTsKfQoKbWFpbiAoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAg
IHkoKTsKICAgICAgICB9IGNhdGNoIChNeUV4Y2VwdGlvbiAmbWUpIHsKICAgICAgICAgICAgICAg
IGNoYXIgKm1zZyA9IG1lLmdldE1zZygpOwogICAgICAgICAgICAgICAgcHJpbnRmKCJGaW5hbCBS
ZXN1bHQ6OiAqMHgleD0lMjYuMjZzXG5cbiIsIG1zZywgbXNnKTsKICAgICAgICB9Cn0K


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]