[PATCH] fortran: [PR118793] Additional expanded namelist read diagnostics
Jerry DeLisle <[email protected]> Wed, 29 Jul 2026 19:26:16 -0700
| Newsgroups | gmane.comp.gcc.patches,gmane.comp.gcc.fortran |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------8FMoS2iH2IM24GUvfJkb0t90
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
The attached patch is a continuation of my effort to give more
informative error messages for namelist reads. As mentioned in the PR,
for users with large namelist files this will help greatly with
identifying where in the namelist data file the error occurred.
Regression tested on x86_64. A new test case added from Haralds example
in the PR.
OK for mainline?
Regards,
Jerry
---
fortran: [PR118793] Additional expanded namelist read diagnostics
These changes add expanded diagnostics to error locations not addressed
in the original patch. This is done by using a new helper function that
saves the error message information for namelist related errors in a
buffer and keeping a status bit in the st_parameter_dt structure.
PR libfortran/118793
libgfortran/ChangeLog:
* io/io.h (NML_ERR_MSG_LEN): New macro.
(st_parameter_dt): Add nml_err_pending bit.
(gfc_unit): Add nml_err_msg.
* io/list_read.c (nml_error): New function.
(eat_separator): Use new function
(convert_integer): Likewise.
(convert_unsigned): Likewise.
(parse_repeat): Likewise. Save the position where the repeat
count starts and report it.
(read_logical): Likewise.
(read_integer): Likewise.
(parse_real): Likewise.
(read_complex): Likewise.
(read_real): Likewise.
(check_type): Likewise.
(list_formatted_read_scalar): Likewise.
(read_character): Likewise. Save the initial position of the value
(nml_read_obj): Unwind to nml_err_ret on a deferred error.
(namelist_read): Store deferred errors in the unit's nml_err_msg
buffer.
gcc/testsuite/ChangeLog:
* gfortran.dg/namelist_101.f90: Fix dg-do directive typo and
check the expanded diagnostic.
* gfortran.dg/namelist_104.f90: New test.
--------------8FMoS2iH2IM24GUvfJkb0t90
Content-Type: text/x-patch; charset=UTF-8; name="pr118793-submit.diff"
Content-Disposition: attachment; filename="pr118793-submit.diff"
Content-Transfer-Encoding: base64
Y29tbWl0IDAxNzA5YzM4YjZlODdmZWJkN2NiMDdhZTk5ZTM1NzVlMmY4OGU3YWQKQXV0aG9y
OiBKZXJyeSBEZUxpc2xlIDxqdmRlbGlzbGVAZ2NjLmdudS5vcmc+CkRhdGU6ICAgVHVlIEp1
bCAyOCAxOTowMjozNiAyMDI2IC0wNzAwCgogICAgZm9ydHJhbjogW1BSMTE4NzkzXSBBZGRp
dGlvbmFsIGV4cGFuZGVkIG5hbWVsaXN0IHJlYWQgZGlhZ25vc3RpY3MKICAgIAogICAgVGhl
c2UgY2hhbmdlcyBhZGQgZXhwYW5kZWQgZGlhZ25vc3RpY3MgdG8gZXJyb3IgbG9jYXRpb25z
IG5vdCBhZGRyZXNzZWQKICAgIGluIHRoZSBvcmlnaW5hbCBwYXRjaC4gVGhpcyBpcyBkb25l
IGJ5IHVzaW5nIGEgbmV3IGhlbHBlciBmdW5jdGlvbiB0aGF0CiAgICBzYXZlcyB0aGUgZXJy
b3IgbWVzc2FnZSBpbmZvcm1hdGlvbiBmb3IgbmFtZWxpc3QgcmVsYXRlZCBlcnJvcnMgaW4g
YQogICAgYnVmZmVyIGFuZCBrZWVwaW5nIGEgc3RhdHVzIGJpdCBpbiB0aGUgc3RfcGFyYW1l
dGVyX2R0IHN0cnVjdHVyZS4KICAgIAogICAgICAgICAgICBQUiBsaWJmb3J0cmFuLzExODc5
MwogICAgCiAgICBsaWJnZm9ydHJhbi9DaGFuZ2VMb2c6CiAgICAKICAgICAgICAgICAgKiBp
by9pby5oIChOTUxfRVJSX01TR19MRU4pOiBOZXcgbWFjcm8uCiAgICAgICAgICAgIChzdF9w
YXJhbWV0ZXJfZHQpOiBBZGQgbm1sX2Vycl9wZW5kaW5nIGJpdC4KICAgICAgICAgICAgKGdm
Y191bml0KTogQWRkIG5tbF9lcnJfbXNnLgogICAgICAgICAgICAqIGlvL2xpc3RfcmVhZC5j
IChubWxfZXJyb3IpOiBOZXcgZnVuY3Rpb24uCiAgICAgICAgICAgIChlYXRfc2VwYXJhdG9y
KTogVXNlIG5ldyBmdW5jdGlvbgogICAgICAgICAgICAoY29udmVydF9pbnRlZ2VyKTogTGlr
ZXdpc2UuCiAgICAgICAgICAgIChjb252ZXJ0X3Vuc2lnbmVkKTogTGlrZXdpc2UuCiAgICAg
ICAgICAgIChwYXJzZV9yZXBlYXQpOiBMaWtld2lzZS4gIFNhdmUgdGhlIHBvc2l0aW9uIHdo
ZXJlIHRoZSByZXBlYXQKICAgICAgICAgICAgY291bnQgc3RhcnRzIGFuZCByZXBvcnQgaXQu
CiAgICAgICAgICAgIChyZWFkX2xvZ2ljYWwpOiBMaWtld2lzZS4KICAgICAgICAgICAgKHJl
YWRfaW50ZWdlcik6IExpa2V3aXNlLgogICAgICAgICAgICAocGFyc2VfcmVhbCk6IExpa2V3
aXNlLgogICAgICAgICAgICAocmVhZF9jb21wbGV4KTogTGlrZXdpc2UuCiAgICAgICAgICAg
IChyZWFkX3JlYWwpOiBMaWtld2lzZS4KICAgICAgICAgICAgKGNoZWNrX3R5cGUpOiBMaWtl
d2lzZS4KICAgICAgICAgICAgKGxpc3RfZm9ybWF0dGVkX3JlYWRfc2NhbGFyKTogTGlrZXdp
c2UuCiAgICAgICAgICAgIChyZWFkX2NoYXJhY3Rlcik6IExpa2V3aXNlLiAgU2F2ZSB0aGUg
aW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUgdmFsdWUKICAgICAgICAgICAgKG5tbF9yZWFkX29i
aik6IFVud2luZCB0byBubWxfZXJyX3JldCBvbiBhIGRlZmVycmVkIGVycm9yLgogICAgICAg
ICAgICAobmFtZWxpc3RfcmVhZCk6IFN0b3JlIGRlZmVycmVkIGVycm9ycyBpbiB0aGUgdW5p
dCdzIG5tbF9lcnJfbXNnCiAgICAgICAgICAgIGJ1ZmZlci4KICAgIAogICAgZ2NjL3Rlc3Rz
dWl0ZS9DaGFuZ2VMb2c6CiAgICAKICAgICAgICAgICAgKiBnZm9ydHJhbi5kZy9uYW1lbGlz
dF8xMDEuZjkwOiBGaXggZGctZG8gZGlyZWN0aXZlIHR5cG8gYW5kCiAgICAgICAgICAgIGNo
ZWNrIHRoZSBleHBhbmRlZCBkaWFnbm9zdGljLgogICAgICAgICAgICAqIGdmb3J0cmFuLmRn
L25hbWVsaXN0XzEwNC5mOTA6IE5ldyB0ZXN0LgoKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp
dGUvZ2ZvcnRyYW4uZGcvbmFtZWxpc3RfMTAxLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRy
YW4uZGcvbmFtZWxpc3RfMTAxLmY5MAppbmRleCA0MDljNTY4ZjUzZi4uZTZiMzNmODc2MTkg
MTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbmFtZWxpc3RfMTAxLmY5
MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25hbWVsaXN0XzEwMS5mOTAKQEAg
LTEsNSArMSw3IEBACi0hIHsgZGctZG8gcnVuICkKKyEgeyBkZy1kbyBydW4gfQogISB7IGRn
LXNob3VsZGZhaWwgIk1pc3NpbmcgcXVvdGUiIH0KKyEKKyEgUFIgbGliZm9ydHJhbi8xMTg3
OTMKIHByb2dyYW0gbm1sX3F1b3Rlc19idWcKICAgaW1wbGljaXQgbm9uZQogICBpbnRlZ2Vy
ICAgICAgOjogdW5pdCA9IDEwCkBAIC0xNCwzICsxNiw1IEBAIHByb2dyYW0gbm1sX3F1b3Rl
c19idWcKICAgcmVhZCAodW5pdCAsbm1sPXRvdnNfb2JzX2NoYW4pCiAgIGNsb3NlKHVuaXQg
LHN0YXR1cz0iZGVsZXRlIikKIGVuZCBwcm9ncmFtIG5tbF9xdW90ZXNfYnVnCishIHsgZGct
b3V0cHV0ICJNaXNzaW5nIHF1b3RlIHdoaWxlIHJlYWRpbmcgaXRlbSAyIGF0IGxpbmUgMywg
Y29sdW1uIDEwIGluIGZpbGUgLiooXHIqXG4rKSIgfQorISB7IGRnLW91dHB1dCAiICAgYzIg
PSAgMmEgLChccipcbispICAgICAgICAgXFxeKFxyKlxuKykiIH0KZGlmZiAtLWdpdCBhL2dj
Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbmFtZWxpc3RfMTA0LmY5MCBiL2djYy90ZXN0c3Vp
dGUvZ2ZvcnRyYW4uZGcvbmFtZWxpc3RfMTA0LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZDQ1YzA3YTc2MmIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv
dGVzdHN1aXRlL2dmb3J0cmFuLmRnL25hbWVsaXN0XzEwNC5mOTAKQEAgLTAsMCArMSwyMSBA
QAorISB7IGRnLWRvIHJ1biB9CishIHsgZGctc2hvdWxkZmFpbCAiTWlzc2luZyBxdW90ZSIg
fQorISEgUFIxMTg3OTMgLSBFeHBhbmRlZCBuYW1lbGlzdCBlcnJvciBtZXNzYWdlcworIQor
ISBCYXNlZCBvbiBhIHRlc3RjYXNlIGJ5IEhhcmFsZCBBbmxhdWYKK3Byb2dyYW0gbmFtZWxp
c3RfMTA0CisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciAgICAgIDo6IHVuaXQgPSAxMAor
ICBjaGFyYWN0ZXIoOCkgOjogYzEsIGMyCisgIG5hbWVsaXN0IC90b3ZzX29ic19jaGFuLyBj
MSwgYzIKKyAgb3BlbiAodW5pdCAsZmlsZT0ibm1sLXF1b3Rlcy1idWctMTA0Lm5tbCIpCisg
IHdyaXRlKHVuaXQsKikgIiZ0b3ZzX29ic19jaGFuIgorICB3cml0ZSh1bml0LCopICIgIGMx
ID0gJzEnLCBjMSA9ICcxJywiCisgIHdyaXRlKHVuaXQsKikgIiAgYzEgPSAnMScsIGMxID0g
JzEnLCAgYzIgPSAyICwiCisgIHdyaXRlKHVuaXQsKikgIi8iCisgIHJld2luZCh1bml0KQor
ICByZWFkICh1bml0ICxubWw9dG92c19vYnNfY2hhbikKKyAgY2xvc2UodW5pdCAsc3RhdHVz
PSJkZWxldGUiKQorZW5kIHByb2dyYW0gbmFtZWxpc3RfMTA0CishIHsgZGctb3V0cHV0ICJN
aXNzaW5nIHF1b3RlIHdoaWxlIHJlYWRpbmcgaXRlbSA1IGF0IGxpbmUgMywgY29sdW1uIDMw
IGluIGZpbGUgLiooXHIqXG4rKSIgfQorISB7IGRnLW91dHB1dCAiICAgYzEgPSAnMScsIGMx
ID0gJzEnLCAgYzIgPSAyICwoXHIqXG4rKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XFxeKFxyKlxuKykiIH0KZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2lvL2lvLmggYi9saWJn
Zm9ydHJhbi9pby9pby5oCmluZGV4IGVjZjFiNzc5YTQ4Li44N2QzMjY5MWVlOCAxMDA2NDQK
LS0tIGEvbGliZ2ZvcnRyYW4vaW8vaW8uaAorKysgYi9saWJnZm9ydHJhbi9pby9pby5oCkBA
IC0zNyw2ICszNyw5IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVO
VElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQogLyogVXNlZCBmb3IgYnVpbGRpbmcg
ZXJyb3IgbWVzc2FnZSBzdHJpbmdzLiAgKi8KICNkZWZpbmUgSU9NU0dfTEVOIDI1NgogCisv
KiBTaXplIG9mIHRoZSBuYW1lbGlzdCByZWFkIGVycm9yIG1lc3NhZ2UgYnVmZmVyLiAgKi8K
KyNkZWZpbmUgTk1MX0VSUl9NU0dfTEVOIDIwMAorCiAvKiBQT1NJWCAyMDA4IHNwZWNpZmll
cyB0aGF0IHRoZSBleHRlbmRlZCBsb2NhbGUgc3R1ZmYgaXMgZm91bmQgaW4KICAgIGxvY2Fs
ZS5oLCBidXQgc29tZSBzeXN0ZW1zIGhhdmUgdGhlbSBpbiB4bG9jYWxlLmguICAqLwogCkBA
IC01NTMsNyArNTU2LDEwIEBAIHR5cGVkZWYgc3RydWN0IHN0X3BhcmFtZXRlcl9kdAogCSAg
dW5zaWduZWQgZXhwYW5kZWRfcmVhZCA6IDE7CiAJICAvKiBGbGFnIHRvIGluZGljYXRlIGlm
IHRoZSBzdGF0ZW1lbnQgaGFzIGFzeW5jPSJZRVMiLiAqLwogCSAgdW5zaWduZWQgYXN5bmMg
OiAxOwotCSAgLyogMTIgdW51c2VkIGJpdHMuICAqLworCSAgLyogQSBuYW1lbGlzdCBzcGVj
aWZpYyBmbGFnIHNldCB3aGVuIGEgcmVhZCBlcnJvciBtZXNzYWdlIGhhcworCSAgICAgYmVl
biBzYXZlZCBpbnRvIHRoZSB1bml0J3Mgbm1sX2Vycl9tc2cgYnVmZmVyLiAgKi8KKwkgIHVu
c2lnbmVkIG5tbF9lcnJfcGVuZGluZyA6IDE7CisJICAvKiAxMSB1bnVzZWQgYml0cy4gICov
CiAKIAkgIGludCBjaGlsZF9zYXZlZF9pb3N0YXQ7CiAJICBpbnQgbm1sX2RlbGltOwpAQCAt
NjU5LDYgKzY2NSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfdW5pdAogICAvKiBQb3NpdGlv
biBpbmZvcm1hdGlvbiBmb3IgYmV0dGVyIGRpYWdub3N0aWNzLiAgKi8KICAgaW50IGxpbmVf
bnVtYmVyLCBjb2x1bW5fbnVtYmVyOwogCisgIC8qIEVycm9yIG1lc3NhZ2UgYnVmZmVyIHVz
ZWQgd2hpbGUgYSBuYW1lbGlzdCByZWFkIGlzIGluIHByb2dyZXNzLiAgVmFsaWQKKyAgICAg
b25seSB3aGVuIHRoZSB0cmFuc2ZlcidzIG5tbF9lcnJfcGVuZGluZyBmbGFnIGlzIHNldC4g
ICovCisgIGNoYXIgbm1sX2Vycl9tc2dbTk1MX0VSUl9NU0dfTEVOXTsKKwogICBlbnVtCiAg
IHsgTk9fRU5ERklMRSwgQVRfRU5ERklMRSwgQUZURVJfRU5ERklMRSB9CiAgIGVuZGZpbGU7
CmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9pby9saXN0X3JlYWQuYyBiL2xpYmdmb3J0cmFu
L2lvL2xpc3RfcmVhZC5jCmluZGV4IGYyMTc5ZTJhMWQ4Li5iOWU0NWZhYjdiZiAxMDA2NDQK
LS0tIGEvbGliZ2ZvcnRyYW4vaW8vbGlzdF9yZWFkLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW8v
bGlzdF9yZWFkLmMKQEAgLTY5LDYgKzY5LDI0IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1
Y2hhcjsKICNkZWZpbmUgbmV4dF9jaGFyKGR0cCkgKChkdHApLT51LnAuY3VycmVudF91bml0
LT5uZXh0X2NoYXJfZm5fcHRyIChkdHApKQogI2RlZmluZSBwdXNoX2NoYXIoZHRwLCBjKSAo
KGR0cCktPnUucC5jdXJyZW50X3VuaXQtPnB1c2hfY2hhcl9mbl9wdHIgKGR0cCwgYykpCiAK
Ky8qIER1cmluZyBhIG5hbWVsaXN0IHJlYWQsIHRoZSBlcnJvciBtZXNzYWdlIGlzIHNhdmVk
IHRvIHRoZSBuYW1lbGlzdCBlcnJvcgorICAgYnVmZmVyIGFuZCBmbGFnZ2VkIGFzIHBlbmRp
bmcuICBUaGUgc2F2ZWQgbWVzc2FnZSB3aWxsIGJlIGlzc3VlZCBmcm9tCisgICBubWxfcmVh
ZF9vYmouICBOb24gbmFtZWxpc3QgZXJyb3JzIGFyZSBpc3N1ZWQgbm93LiAgKi8KKworc3Rh
dGljIHZvaWQKK25tbF9lcnJvciAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGludCBlcnJjb2Rl
LCBjb25zdCBjaGFyICptZXNzYWdlKQoreworICBpZiAoZHRwLT51LnAubmFtZWxpc3RfbW9k
ZSkKKyAgICB7CisgICAgICBzbnByaW50ZiAoZHRwLT51LnAuY3VycmVudF91bml0LT5ubWxf
ZXJyX21zZywgTk1MX0VSUl9NU0dfTEVOLCAiJXMiLAorCQltZXNzYWdlKTsKKyAgICAgIGR0
cC0+dS5wLm5tbF9lcnJfcGVuZGluZyA9IDE7CisgICAgICByZXR1cm47CisgICAgfQorCisg
IGdlbmVyYXRlX2Vycm9yICgmZHRwLT5jb21tb24sIGVycmNvZGUsIG1lc3NhZ2UpOworfQor
CiAvKiBXb3JrZXIgZnVuY3Rpb24gdG8gc2F2ZSBhIGRlZmF1bHQgS0lORD0xIGNoYXJhY3Rl
ciB0byBhIHN0cmluZwogICAgYnVmZmVyLCBlbmxhcmdpbmcgaXQgYXMgbmVjZXNzYXJ5LiAg
Ki8KIApAQCAtNTE2LDggKzUzNCw4IEBAIGVhdF9zZXBhcmF0b3IgKHN0X3BhcmFtZXRlcl9k
dCAqZHRwKQogICAgIGNhc2UgJywnOgogICAgICAgaWYgKGR0cC0+dS5wLmN1cnJlbnRfdW5p
dC0+ZGVjaW1hbF9zdGF0dXMgPT0gREVDSU1BTF9DT01NQSkKIAl7Ci0JICBnZW5lcmF0ZV9l
cnJvciAoJmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLAotCSAgICJDb21tYSBu
b3QgYWxsb3dlZCBhcyBzZXBhcmF0b3Igd2l0aCBERUNJTUFMPSdjb21tYSciKTsKKwkgIG5t
bF9lcnJvciAoZHRwLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLAorCQkgICAgICJDb21tYSBub3Qg
YWxsb3dlZCBhcyBzZXBhcmF0b3Igd2l0aCBERUNJTUFMPSdjb21tYSciKTsKIAkgIHVuZ2V0
X2NoYXIgKGR0cCwgYyk7CiAJICBicmVhazsKIAl9CkBAIC01MjgsOCArNTQ2LDggQEAgZWF0
X3NlcGFyYXRvciAoc3RfcGFyYW1ldGVyX2R0ICpkdHApCiAgICAgY2FzZSAnOyc6CiAgICAg
ICBpZiAoZHRwLT51LnAuY3VycmVudF91bml0LT5kZWNpbWFsX3N0YXR1cyA9PSBERUNJTUFM
X1BPSU5UKQogCXsKLQkgIGdlbmVyYXRlX2Vycm9yICgmZHRwLT5jb21tb24sIExJQkVSUk9S
X1JFQURfVkFMVUUsCi0JICAgIlNlbWljb2xvbiBub3QgYWxsb3dlZCBhcyBzZXBhcmF0b3Ig
d2l0aCBERUNJTUFMPSdwb2ludCciKTsKKwkgIG5tbF9lcnJvciAoZHRwLCBMSUJFUlJPUl9S
RUFEX1ZBTFVFLAorCQkgICAgICJTZW1pY29sb24gbm90IGFsbG93ZWQgYXMgc2VwYXJhdG9y
IHdpdGggREVDSU1BTD0ncG9pbnQnIik7CiAJICB1bmdldF9jaGFyIChkdHAsIGMpOwogCSAg
YnJlYWs7CiAJfQpAQCAtNzI2LDcgKzc0NCw3IEBAIGNvbnZlcnRfaW50ZWdlciAoc3RfcGFy
YW1ldGVyX2R0ICpkdHAsIGludCBsZW5ndGgsIGludCBuZWdhdGl2ZSkKIAkgIHNucHJpbnRm
IChtZXNzYWdlLCBJT01TR19MRU4sICJaZXJvIHJlcGVhdCBjb3VudCBpbiBpdGVtICVkIG9m
IGxpc3QgIgogCQkgICAgImlucHV0IiwgZHRwLT51LnAuaXRlbV9jb3VudCk7CiAKLQkgIGdl
bmVyYXRlX2Vycm9yICgmZHRwLT5jb21tb24sIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3Nh
Z2UpOworCSAgbm1sX2Vycm9yIChkdHAsIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3NhZ2Up
OwogCSAgbSA9IDE7CiAJfQogICAgIH0KQEAgLTc0Myw3ICs3NjEsNyBAQCBjb252ZXJ0X2lu
dGVnZXIgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBpbnQgbGVuZ3RoLCBpbnQgbmVnYXRpdmUp
CiAJICAgICBkdHAtPnUucC5pdGVtX2NvdW50KTsKIAogICBmcmVlX3NhdmVkIChkdHApOwot
ICBnZW5lcmF0ZV9lcnJvciAoJmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBt
ZXNzYWdlKTsKKyAgbm1sX2Vycm9yIChkdHAsIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3Nh
Z2UpOwogCiAgIHJldHVybiAxOwogfQpAQCAtODA1LDcgKzgyMyw3IEBAIGNvbnZlcnRfdW5z
aWduZWQgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBpbnQgbGVuZ3RoLCBpbnQgbmVnYXRpdmUp
CiAJICBzbnByaW50ZiAobWVzc2FnZSwgSU9NU0dfTEVOLCAiWmVybyByZXBlYXQgY291bnQg
aW4gaXRlbSAlZCBvZiBsaXN0IGlucHV0IiwKIAkJICAgZHRwLT51LnAuaXRlbV9jb3VudCk7
CiAKLQkgIGdlbmVyYXRlX2Vycm9yICgmZHRwLT5jb21tb24sIExJQkVSUk9SX1JFQURfVkFM
VUUsIG1lc3NhZ2UpOworCSAgbm1sX2Vycm9yIChkdHAsIExJQkVSUk9SX1JFQURfVkFMVUUs
IG1lc3NhZ2UpOwogCSAgbSA9IDE7CiAJfQogICAgIH0KQEAgLTgyNCw3ICs4NDIsNyBAQCBj
b252ZXJ0X3Vuc2lnbmVkIChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgaW50IGxlbmd0aCwgaW50
IG5lZ2F0aXZlKQogCSAgICAgICJpdGVtICVkIG9mIGxpc3QgaW5wdXQiLCBkdHAtPnUucC5p
dGVtX2NvdW50KTsKIAogICBmcmVlX3NhdmVkIChkdHApOwotICBnZW5lcmF0ZV9lcnJvciAo
JmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsKKyAgbm1sX2Vy
cm9yIChkdHAsIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3NhZ2UpOwogCiAgIHJldHVybiAx
OwogfQpAQCAtODM4LDkgKzg1NiwxNiBAQCBwYXJzZV9yZXBlYXQgKHN0X3BhcmFtZXRlcl9k
dCAqZHRwKQogewogICBjaGFyIG1lc3NhZ2VbSU9NU0dfTEVOXTsKICAgaW50IGMsIHJlcGVh
dDsKKyAgaW50IGluaXRpYWxfbGluZSA9IGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+bGluZV9u
dW1iZXI7CisgIGludCBpbml0aWFsX2NvbCA9IGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+Y29s
dW1uX251bWJlcjsKIAogICBpZiAoKGMgPSBuZXh0X2NoYXIgKGR0cCkpID09IEVPRikKICAg
ICBnb3RvIGJhZF9yZXBlYXQ7CisKKyAgLyogUmVtZW1iZXIgd2hlcmUgdGhlIHJlcGVhdCBj
b3VudCBzdGFydHMsIGZvciBkaWFnbm9zdGljcy4gICovCisgIGluaXRpYWxfbGluZSA9IGR0
cC0+dS5wLmN1cnJlbnRfdW5pdC0+bGluZV9udW1iZXI7CisgIGluaXRpYWxfY29sID0gZHRw
LT51LnAuY3VycmVudF91bml0LT5jb2x1bW5fbnVtYmVyOworCiAgIHN3aXRjaCAoYykKICAg
ICB7CiAgICAgQ0FTRV9ESUdJVFM6CkBAIC04NjcsMTEgKzg5MiwxNiBAQCBwYXJzZV9yZXBl
YXQgKHN0X3BhcmFtZXRlcl9kdCAqZHRwKQogCiAJICBpZiAocmVwZWF0ID4gTUFYX1JFUEVB
VCkKIAkgICAgeworCSAgICAgIGlmIChkdHAtPnUucC5uYW1lbGlzdF9tb2RlKQorCQl7CisJ
CSAgZHRwLT51LnAuY3VycmVudF91bml0LT5saW5lX251bWJlciA9IGluaXRpYWxfbGluZTsK
KwkJICBkdHAtPnUucC5jdXJyZW50X3VuaXQtPmNvbHVtbl9udW1iZXIgPSBpbml0aWFsX2Nv
bDsKKwkJfQogCSAgICAgIHNucHJpbnRmIChtZXNzYWdlLCBJT01TR19MRU4sCiAJCSAgICAg
ICAiUmVwZWF0IGNvdW50IG92ZXJmbG93IGluIGl0ZW0gJWQgb2YgbGlzdCBpbnB1dCIsCiAJ
CSAgICAgICBkdHAtPnUucC5pdGVtX2NvdW50KTsKIAotCSAgICAgIGdlbmVyYXRlX2Vycm9y
ICgmZHRwLT5jb21tb24sIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3NhZ2UpOworCSAgICAg
IG5tbF9lcnJvciAoZHRwLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsKIAkgICAg
ICByZXR1cm4gMTsKIAkgICAgfQogCkBAIC04ODAsMTEgKzkxMCwxNiBAQCBwYXJzZV9yZXBl
YXQgKHN0X3BhcmFtZXRlcl9kdCAqZHRwKQogCWNhc2UgJyonOgogCSAgaWYgKHJlcGVhdCA9
PSAwKQogCSAgICB7CisJICAgICAgaWYgKGR0cC0+dS5wLm5hbWVsaXN0X21vZGUpCisJCXsK
KwkJICBkdHAtPnUucC5jdXJyZW50X3VuaXQtPmxpbmVfbnVtYmVyID0gaW5pdGlhbF9saW5l
OworCQkgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+Y29sdW1uX251bWJlciA9IGluaXRpYWxf
Y29sOworCQl9CiAJICAgICAgc25wcmludGYgKG1lc3NhZ2UsIElPTVNHX0xFTiwKIAkJICAg
ICAgICJaZXJvIHJlcGVhdCBjb3VudCBpbiBpdGVtICVkIG9mIGxpc3QgaW5wdXQiLAogCQkg
ICAgICAgZHRwLT51LnAuaXRlbV9jb3VudCk7CiAKLQkgICAgICBnZW5lcmF0ZV9lcnJvciAo
JmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsKKwkgICAgICBu
bWxfZXJyb3IgKGR0cCwgTElCRVJST1JfUkVBRF9WQUxVRSwgbWVzc2FnZSk7CiAJICAgICAg
cmV0dXJuIDE7CiAJICAgIH0KIApAQCAtOTEwLDkgKzk0NSwxNCBAQCBwYXJzZV9yZXBlYXQg
KHN0X3BhcmFtZXRlcl9kdCAqZHRwKQogICAgIH0KICAgZWxzZQogICAgIGVhdF9saW5lIChk
dHApOworICBpZiAoZHRwLT51LnAubmFtZWxpc3RfbW9kZSkKKyAgICB7CisgICAgICBkdHAt
PnUucC5jdXJyZW50X3VuaXQtPmxpbmVfbnVtYmVyID0gaW5pdGlhbF9saW5lOworICAgICAg
ZHRwLT51LnAuY3VycmVudF91bml0LT5jb2x1bW5fbnVtYmVyID0gaW5pdGlhbF9jb2w7Cisg
ICAgfQogICBzbnByaW50ZiAobWVzc2FnZSwgSU9NU0dfTEVOLCAiQmFkIHJlcGVhdCBjb3Vu
dCBpbiBpdGVtICVkIG9mIGxpc3QgaW5wdXQiLAogCSAgIGR0cC0+dS5wLml0ZW1fY291bnQp
OwotICBnZW5lcmF0ZV9lcnJvciAoJmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVF
LCBtZXNzYWdlKTsKKyAgbm1sX2Vycm9yIChkdHAsIExJQkVSUk9SX1JFQURfVkFMVUUsIG1l
c3NhZ2UpOwogICByZXR1cm4gMTsKIH0KIApAQCAtMTA4MSw3ICsxMTIxLDcgQEAgbmV4dDoK
ICAgc25wcmludGYgKG1lc3NhZ2UsIElPTVNHX0xFTiwgIkJhZCBsb2dpY2FsIHZhbHVlIHdo
aWxlIHJlYWRpbmcgaXRlbSAlZCIsCiAJICAgICAgZHRwLT51LnAuaXRlbV9jb3VudCk7CiAg
IGZyZWVfbGluZSAoZHRwKTsKLSAgZ2VuZXJhdGVfZXJyb3IgKCZkdHAtPmNvbW1vbiwgTElC
RVJST1JfUkVBRF9WQUxVRSwgbWVzc2FnZSk7CisgIG5tbF9lcnJvciAoZHRwLCBMSUJFUlJP
Ul9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsKICAgcmV0dXJuOwogCiAgbG9naWNhbF9kb25lOgpA
QCAtMTI1NCw3ICsxMjk0LDcgQEAgbmV4dDoKIAkgICAgICBkdHAtPnUucC5pdGVtX2NvdW50
KTsKIAogICBmcmVlX2xpbmUgKGR0cCk7Ci0gIGdlbmVyYXRlX2Vycm9yICgmZHRwLT5jb21t
b24sIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3NhZ2UpOworICBubWxfZXJyb3IgKGR0cCwg
TElCRVJST1JfUkVBRF9WQUxVRSwgbWVzc2FnZSk7CiAKICAgcmV0dXJuOwogCkBAIC0xMjkw
LDEzICsxMzMwLDE4IEBAIHN0YXRpYyB2b2lkCiByZWFkX2NoYXJhY3RlciAoc3RfcGFyYW1l
dGVyX2R0ICpkdHAsIGludCBsZW5ndGggX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQogewog
ICBjaGFyIHF1b3RlLCBtZXNzYWdlW0lPTVNHX0xFTl07Ci0gIGludCBjOworICBpbnQgYywg
aW5pdGlhbF9saW5lLCBpbml0aWFsX2NvbDsKIAogICBxdW90ZSA9ICcgJzsJCQkvKiBTcGFj
ZSBtZWFucyBubyBxdW90ZSBjaGFyYWN0ZXIuICAqLwogCiBuZXh0OgogICBpZiAoKGMgPSBu
ZXh0X2NoYXIgKGR0cCkpID09IEVPRikKICAgICBnb3RvIGVvZjsKKworICAvKiBTYXZlIGRp
YWdub3N0aWNzIGluZm8uICAqLworICBpbml0aWFsX2xpbmUgPSBkdHAtPnUucC5jdXJyZW50
X3VuaXQtPmxpbmVfbnVtYmVyOworICBpbml0aWFsX2NvbCA9IGR0cC0+dS5wLmN1cnJlbnRf
dW5pdC0+Y29sdW1uX251bWJlcjsKKwogICBpZiAoYyA9PSAnOycpCiAgICAgewogICAgICAg
cHVzaF9jaGFyIChkdHAsIGMpOwpAQCAtMTM2NCw5ICsxNDA5LDE1IEBAIG5leHQ6CiAJICAg
ICB3YXMgYSBzdHJpbmcgb2YgZGlnaXRzIGl0IHNob3VsZCBoYXZlIGhhZCB0aGUgY2xvc2lu
ZyBxdW90ZS4gICovCiAJICBpZiAoZHRwLT51LnAubmFtZWxpc3RfbW9kZSkKIAkgICAgewor
CSAgICAgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+bGluZV9udW1iZXIgPSBpbml0aWFsX2xp
bmU7CisJICAgICAgZHRwLT51LnAuY3VycmVudF91bml0LT5jb2x1bW5fbnVtYmVyID0gaW5p
dGlhbF9jb2w7CiAJICAgICAgc25wcmludGYgKG1lc3NhZ2UsIElPTVNHX0xFTiwgIk1pc3Np
bmcgcXVvdGUgd2hpbGUgcmVhZGluZyBpdGVtICVkIiwKIAkJCWR0cC0+dS5wLml0ZW1fY291
bnQpOwotCSAgICAgIGdlbmVyYXRlX2Vycm9yICgmZHRwLT5jb21tb24sIExJQkVSUk9SX1JF
QURfVkFMVUUsIG1lc3NhZ2UpOworCSAgICAgIG5tbF9lcnJvciAoZHRwLCBMSUJFUlJPUl9S
RUFEX1ZBTFVFLCBtZXNzYWdlKTsKKwkgICAgICAvKiBJZiB0aGVyZSBpcyBhIHBlbmRpbmcg
ZXJyb3IsIGV4aXQgaGVyZSB0byBwcmVzZXJ2ZSB0aGUKKwkJIHBvc2l0aW9uIGluZm9ybWF0
aW9uLiAgKi8KKwkgICAgICBpZiAoZHRwLT51LnAubm1sX2Vycl9wZW5kaW5nKQorCQlyZXR1
cm47CiAJICAgIH0KIAkgIHVuZ2V0X2NoYXIgKGR0cCwgYyk7CiAJICBnb3RvIGRvbmU7CQkv
KiBTdHJpbmcgd2FzIG9ubHkgZGlnaXRzISAgKi8KQEAgLTE0MjAsOSArMTQ3MSwxNCBAQCBu
ZXh0OgogICAgICByZWFkIHNob3VsZCBoYXZlIGJlZW4gc2V0LiAgKi8KICAgaWYgKGR0cC0+
dS5wLm5hbWVsaXN0X21vZGUgJiYgKHF1b3RlID09ICcgJykpCiAgICAgeworICAgICAgZHRw
LT51LnAuY3VycmVudF91bml0LT5saW5lX251bWJlciA9IGluaXRpYWxfbGluZTsKKyAgICAg
IGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+Y29sdW1uX251bWJlciA9IGluaXRpYWxfY29sOwog
ICAgICAgc25wcmludGYgKG1lc3NhZ2UsIElPTVNHX0xFTiwgIk1pc3NpbmcgcXVvdGUgd2hp
bGUgcmVhZGluZyBpdGVtICVkIiwKIAkJZHRwLT51LnAuaXRlbV9jb3VudCk7Ci0gICAgICBn
ZW5lcmF0ZV9lcnJvciAoJmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNz
YWdlKTsKKyAgICAgIG5tbF9lcnJvciAoZHRwLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNz
YWdlKTsKKyAgICAgIC8qIFN0b3AgY29uc3VtaW5nIGlucHV0IHNvIHRoZSByZXBvcnRlZCBw
b3NpdGlvbiBzdGF5cyBwdXQuICAqLworICAgICAgaWYgKGR0cC0+dS5wLm5tbF9lcnJfcGVu
ZGluZykKKwlyZXR1cm47CiAgICAgfQogCiAgIGZvciAoOzspCkBAIC0xNDkzLDcgKzE1NDks
NyBAQCBuZXh0OgogICAgICAgZnJlZV9zYXZlZCAoZHRwKTsKICAgICAgIHNucHJpbnRmICht
ZXNzYWdlLCBJT01TR19MRU4sICJJbnZhbGlkIHN0cmluZyBpbnB1dCBpbiBpdGVtICVkIiwK
IAkJICBkdHAtPnUucC5pdGVtX2NvdW50KTsKLSAgICAgIGdlbmVyYXRlX2Vycm9yICgmZHRw
LT5jb21tb24sIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3NhZ2UpOworICAgICAgbm1sX2Vy
cm9yIChkdHAsIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3NhZ2UpOwogICAgIH0KICAgZnJl
ZV9saW5lIChkdHApOwogICByZXR1cm47CkBAIC0xNzY0LDcgKzE4MjAsNyBAQCBwYXJzZV9y
ZWFsIChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgdm9pZCAqYnVmZmVyLCBpbnQgbGVuZ3RoKQog
ICBzbnByaW50ZiAobWVzc2FnZSwgSU9NU0dfTEVOLCAiQmFkIGNvbXBsZXggZmxvYXRpbmcg
cG9pbnQgIgogCSAgICAibnVtYmVyIGZvciBpdGVtICVkIiwgZHRwLT51LnAuaXRlbV9jb3Vu
dCk7CiAgIGZyZWVfbGluZSAoZHRwKTsKLSAgZ2VuZXJhdGVfZXJyb3IgKCZkdHAtPmNvbW1v
biwgTElCRVJST1JfUkVBRF9WQUxVRSwgbWVzc2FnZSk7CisgIG5tbF9lcnJvciAoZHRwLCBM
SUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsKIAogICByZXR1cm4gMTsKIH0KQEAgLTE4
ODAsNyArMTkzNiw3IEBAIGVvbF80OgogICBzbnByaW50ZiAobWVzc2FnZSwgSU9NU0dfTEVO
LCAiQmFkIGNvbXBsZXggdmFsdWUgaW4gaXRlbSAlZCBvZiBsaXN0IGlucHV0IiwKIAkgICAg
ICBkdHAtPnUucC5pdGVtX2NvdW50KTsKICAgZnJlZV9saW5lIChkdHApOwotICBnZW5lcmF0
ZV9lcnJvciAoJmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsK
KyAgbm1sX2Vycm9yIChkdHAsIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3NhZ2UpOwogfQog
CiAKQEAgLTIzNjAsNyArMjQxNiw3IEBAIG5leHQ6CiAgIHNucHJpbnRmIChtZXNzYWdlLCBJ
T01TR19MRU4sICJCYWQgcmVhbCBudW1iZXIgaW4gaXRlbSAlZCBvZiBsaXN0IGlucHV0IiwK
IAkgICAgICBkdHAtPnUucC5pdGVtX2NvdW50KTsKICAgZnJlZV9saW5lIChkdHApOwotICBn
ZW5lcmF0ZV9lcnJvciAoJmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNz
YWdlKTsKKyAgbm1sX2Vycm9yIChkdHAsIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3NhZ2Up
OwogfQogCiAKQEAgLTIzNzgsNyArMjQzNCw3IEBAIGNoZWNrX3R5cGUgKHN0X3BhcmFtZXRl
cl9kdCAqZHRwLCBidCB0eXBlLCBpbnQga2luZCkKIAkJICB0eXBlX25hbWUgKGR0cC0+dS5w
LnNhdmVkX3R5cGUpLCB0eXBlX25hbWUgKHR5cGUpLAogCQkgIGR0cC0+dS5wLml0ZW1fY291
bnQpOwogICAgICAgZnJlZV9saW5lIChkdHApOwotICAgICAgZ2VuZXJhdGVfZXJyb3IgKCZk
dHAtPmNvbW1vbiwgTElCRVJST1JfUkVBRF9WQUxVRSwgbWVzc2FnZSk7CisgICAgICBubWxf
ZXJyb3IgKGR0cCwgTElCRVJST1JfUkVBRF9WQUxVRSwgbWVzc2FnZSk7CiAgICAgICByZXR1
cm4gMTsKICAgICB9CiAKQEAgLTIzOTUsNyArMjQ1MSw3IEBAIGNoZWNrX3R5cGUgKHN0X3Bh
cmFtZXRlcl9kdCAqZHRwLCBidCB0eXBlLCBpbnQga2luZCkKIAkJICB0eXBlX25hbWUgKGR0
cC0+dS5wLnNhdmVkX3R5cGUpLCBraW5kLAogCQkgIGR0cC0+dS5wLml0ZW1fY291bnQpOwog
ICAgICAgZnJlZV9saW5lIChkdHApOwotICAgICAgZ2VuZXJhdGVfZXJyb3IgKCZkdHAtPmNv
bW1vbiwgTElCRVJST1JfUkVBRF9WQUxVRSwgbWVzc2FnZSk7CisgICAgICBubWxfZXJyb3Ig
KGR0cCwgTElCRVJST1JfUkVBRF9WQUxVRSwgbWVzc2FnZSk7CiAgICAgICByZXR1cm4gMTsK
ICAgICB9CiAKQEAgLTI1NzksOCArMjYzNSw3IEBAIGxpc3RfZm9ybWF0dGVkX3JlYWRfc2Nh
bGFyIChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgYnQgdHlwZSwgdm9pZCAqcCwKIAkgICAgICBm
cmVlX2xpbmUgKGR0cCk7CiAJICAgICAgZnN0cmNweSAobWVzc2FnZSwgY2hpbGRfaW9tc2df
bGVuLCBjaGlsZF9pb21zZywgY2hpbGRfaW9tc2dfbGVuKTsKIAkgICAgICBtZXNzYWdlW2No
aWxkX2lvbXNnX2xlbl0gPSAnXDAnOwotCSAgICAgIGdlbmVyYXRlX2Vycm9yICgmZHRwLT5j
b21tb24sIGR0cC0+dS5wLmNoaWxkX3NhdmVkX2lvc3RhdCwKLQkJCSAgICAgIG1lc3NhZ2Up
OworCSAgICAgIG5tbF9lcnJvciAoZHRwLCBkdHAtPnUucC5jaGlsZF9zYXZlZF9pb3N0YXQs
IG1lc3NhZ2UpOwogCSAgICB9CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTM0NTksOCAr
MzUxNCw3IEBAIG5tbF9yZWFkX29iaiAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIG5hbWVsaXN0
X2luZm8gKm5sLCBpbmRleF90eXBlIG9mZnNldCwKIAkJICAgIGNoaWxkX2lvbXNnX2xlbiA9
IHN0cmluZ19sZW5fdHJpbSAoSU9NU0dfTEVOLCBjaGlsZF9pb21zZyk7CiAJCSAgICBmc3Ry
Y3B5IChtZXNzYWdlLCBjaGlsZF9pb21zZ19sZW4sIGNoaWxkX2lvbXNnLCBjaGlsZF9pb21z
Z19sZW4pOwogCQkgICAgbWVzc2FnZVtjaGlsZF9pb21zZ19sZW5dID0gJ1wwJzsKLQkJICAg
IGdlbmVyYXRlX2Vycm9yICgmZHRwLT5jb21tb24sIGR0cC0+dS5wLmNoaWxkX3NhdmVkX2lv
c3RhdCwKLQkJCQkgICAgbWVzc2FnZSk7CisJCSAgICBubWxfZXJyb3IgKGR0cCwgZHRwLT51
LnAuY2hpbGRfc2F2ZWRfaW9zdGF0LCBtZXNzYWdlKTsKIAkJICAgIGdvdG8gbm1sX2Vycl9y
ZXQ7CiAJCSAgfQogCkBAIC0zNDczLDYgKzM1MjcsMTAgQEAgbm1sX3JlYWRfb2JqIChzdF9w
YXJhbWV0ZXJfZHQgKmR0cCwgbmFtZWxpc3RfaW5mbyAqbmwsIGluZGV4X3R5cGUgb2Zmc2V0
LAogCSAgICBpbnRlcm5hbF9lcnJvciAoJmR0cC0+Y29tbW9uLCBubWxfZXJyX21zZyk7CiAJ
ICAgIGdvdG8gbm1sX2Vycl9yZXQ7CiAgICAgICAgICAgfQorCisJICAvKiBJZiB0aGVyZSBp
cyBhIHBlbmRpbmcgZXJyb3IsIHJldHVybiBub3cuICAqLworCSAgaWYgKGR0cC0+dS5wLm5t
bF9lcnJfcGVuZGluZykKKwkgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAg
IC8qIFRoZSBzdGFuZGFyZCBwZXJtaXRzIGFycmF5IGRhdGEgdG8gc3RvcCBzaG9ydCBvZiB0
aGUgbnVtYmVyIG9mCkBAIC0zOTMzLDcgKzM5OTEsNyBAQCB2b2lkCiBuYW1lbGlzdF9yZWFk
IChzdF9wYXJhbWV0ZXJfZHQgKmR0cCkKIHsKICAgaW50IGM7Ci0gIGNoYXIgbm1sX2Vycl9t
c2dbMjAwXTsKKyAgY2hhciAqbm1sX2Vycl9tc2cgPSBkdHAtPnUucC5jdXJyZW50X3VuaXQt
Pm5tbF9lcnJfbXNnOwogCiAgIC8qIEluaXRpYWxpemUgdGhlIGVycm9yIHN0cmluZyBidWZm
ZXIganVzdCBpbiBjYXNlIHdlIGdldCBhbiB1bmV4cGVjdGVkIGZhaWwKICAgICAgc29tZXdo
ZXJlIGFuZCBlbmQgdXAgYXQgbm1sX2Vycl9yZXQuICAqLwpAQCAtMzk0Nyw2ICs0MDA1LDkg
QEAgbmFtZWxpc3RfcmVhZCAoc3RfcGFyYW1ldGVyX2R0ICpkdHApCiAgIGR0cC0+dS5wLmlu
cHV0X2NvbXBsZXRlID0gMDsKICAgZHRwLT51LnAuZXhwYW5kZWRfcmVhZCA9IDA7CiAKKyAg
LyogSW5pdGlhbGl6ZSB0aGUgcGVuZGluZyBlcnJvciBmbGFnLiAgKi8KKyAgZHRwLT51LnAu
bm1sX2Vycl9wZW5kaW5nID0gMDsKKwogICAvKiBTZXQgdGhlIG5leHRfY2hhciBhbmQgcHVz
aF9jaGFyIHdvcmtlciBmdW5jdGlvbnMuICAqLwogICBzZXRfd29ya2VycyAoZHRwKTsKIApA
QCAtNDAxMiw3ICs0MDczLDggQEAgZmluZF9ubWxfbmFtZToKIAogICB3aGlsZSAoIWR0cC0+
dS5wLmlucHV0X2NvbXBsZXRlKQogICAgIHsKLSAgICAgIGlmICghbm1sX2dldF9vYmpfZGF0
YSAoZHRwLCAmcHJldl9ubCwgbm1sX2Vycl9tc2csIHNpemVvZiBubWxfZXJyX21zZykpCisg
ICAgICBpZiAoIW5tbF9nZXRfb2JqX2RhdGEgKGR0cCwgJnByZXZfbmwsIG5tbF9lcnJfbXNn
LCBOTUxfRVJSX01TR19MRU4pCisJICB8fCBkdHAtPnUucC5ubWxfZXJyX3BlbmRpbmcpCiAJ
Z290byBubWxfZXJyX3JldDsKIAogICAgICAgLyogUmVzZXQgdGhlIHByZXZpb3VzIG5hbWVs
aXN0IHBvaW50ZXIgaWYgd2Uga25vdyB3ZSBhcmUgbm90IGdvaW5nCkBAIC00MDMxLDYgKzQw
OTMsNyBAQCBubWxfZXJyX3JldDoKICAgLyogQWxsIG5hbWVsaXN0IGVycm9yIGNhbGxzIHJl
dHVybiBmcm9tIGhlcmUgKi8KICAgZnJlZV9zYXZlZCAoZHRwKTsKICAgZnJlZV9saW5lIChk
dHApOworICBkdHAtPnUucC5ubWxfZXJyX3BlbmRpbmcgPSAwOwogCiAgIGlmIChkdHAtPnUu
cC5jdXJyZW50X3VuaXQpCiAgICAgewo=
--------------8FMoS2iH2IM24GUvfJkb0t90--