[jira] [Created] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

classic Classic list List threaded Threaded
18 messages Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
java.lang.OutOfMemoryError: Java heap space while parsing Mime part
-------------------------------------------------------------------

                 Key: EMAIL-110
                 URL: https://issues.apache.org/jira/browse/EMAIL-110
             Project: Commons Email
          Issue Type: Bug
    Affects Versions: 1.2
         Environment: Windows, Linux
            Reporter: Stephen Kruger
            Priority: Blocker


I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
The stack trace is :
java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:2786)
        at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
        at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
        at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
        at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
        at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
        at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
        at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
        at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
        at javax.mail.Transport.send(Transport.java:76)
        at javax.mail.Transport.send(Transport.java:48)

The message which can repeatedly cause this issue is pasted below (this form shows no attachment capability) :

Received: from somedomain.test.com (somedomain.test.com [99.168.1.33])
        by smtp.myserver.com with SMTP (BlueBox)
        for postmaster@localhost;
        Fri, 07 Oct 2011 10:35:04 -0400 (EDT)
To: postmaster@localhost
From: [hidden email]
Reply-To: [hidden email]
Subject: Attachment Test
X-Mailer: CakePHP Email Component
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="026a2bea167826bf111c47c4213d68b1"
This part of the E-mail should never be seen. If:
you are reading this, consider upgrading your e-mail:
client to a MIME-compatible client.:
Content-Transfer-Encoding: base64

--026a2bea167826bf111c47c4213d68b1
Content-Type: multipart/alternative; boundary="alt-026a2bea167826bf111c47c4213d68b1"
Content-Transfer-Encoding: 7bit
<p>This is the body of the message</p>
--026a2bea167826bf111c47c4213d68b1
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="email.test.php"
PD9waHAKLyogU1ZOIEZJTEU6ICRJZCQgKi8KLyoqCiAqIEVtYWlsQ29tcG9uZW50VGVzdCBmaWxl
CiAqCiAqIFNlcmllcyBvZiB0ZXN0cyBmb3IgZW1haWwgY29tcG9uZW50LgogKgogKiBQSFAgdmVy
c2lvbnMgNCBhbmQgNQogKgogKiBDYWtlUEhQKHRtKSBUZXN0cyA8aHR0cHM6Ly90cmFjLmNha2Vw
aHAub3JnL3dpa2kvRGV2ZWxvcGVtZW50L1Rlc3RTdWl0ZT4KICogQ29weXJpZ2h0IDIwMDUtMjAw
OCwgQ2FrZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIChodHRwOi8vd3d3LmNha2Vmb3VuZGF0
aW9uLm9yZykKICoKICogIExpY2Vuc2VkIHVuZGVyIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUg
TGljZW5zZQogKiAgUmVkaXN0cmlidXRpb25zIG9mIGZpbGVzIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlLgogKgogKiBAZmlsZXNvdXJjZQogKiBAY29weXJpZ2h0ICAgICBD
b3B5cmlnaHQgMjAwNS0yMDA4LCBDYWtlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gKGh0dHA6
Ly93d3cuY2FrZWZvdW5kYXRpb24ub3JnKQogKiBAbGluayAgICAgICAgICBodHRwczovL3RyYWMu
Y2FrZXBocC5vcmcvd2lraS9EZXZlbG9wZW1lbnQvVGVzdFN1aXRlIENha2VQSFAodG0pIFRlc3Rz
CiAqIEBwYWNrYWdlICAgICAgIGNha2UKICogQHN1YnBhY2thZ2UgICAgY2FrZS5jYWtlLnRlc3Rz
LmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqIEBzaW5jZSAgICAgICAgIENha2VQ
SFAodG0pIHYgMS4yLjAuNTM0NwogKiBAdmVyc2lvbiAgICAgICAkUmV2aXNpb24kCiAqIEBtb2Rp
ZmllZGJ5ICAgICRMYXN0Q2hhbmdlZEJ5JAogKiBAbGFzdG1vZGlmaWVkICAkRGF0ZSQKICogQGxp
Y2Vuc2UgICAgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9vcGVuZ3JvdXAu
cGhwIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUgTGljZW5zZQogKi8KaWYgKCFkZWZpbmVkKCdS
VU5OSU5HX0VNQUlMX1VOSVRfVEVTVFMnKSkgZGVmaW5lKCdSVU5OSU5HX0VNQUlMX1VOSVRfVEVT
VFMnLHRydWUpOwpBcHA6OmltcG9ydCgnQ29tcG9uZW50JywgJ0VtYWlsJyk7Ci8qKgogKiBFbWFp
bFRlc3RDb21wb25lbnQgY2xhc3MKICoKICogQHBhY2thZ2UgICAgICAgY2FrZQogKiBAc3VicGFj
a2FnZSAgICBjYWtlLnRlc3RzLmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqLwpj
bGFzcyBFbWFpbFRlc3RDb21wb25lbnQgZXh0ZW5kcyBFbWFpbENvbXBvbmVudCB7Ci8qKgogKiBu
YW1lIHByb3BlcnR5CiAqCiAqIEB2YXIgc3RyaW5nICdFbWFpbFRlc3RDb21wb25lbnQnCiAqIEBh
Y2Nlc3MgcHVibGljCiAqLwoJdmFyICRuYW1lID0gJ0VtYWlsVGVzdENvbXBvbmVudCc7Ci8qKgog
KiBMaXN0IG9mIG9wdGlvbnMgdG8gdXNlIGZvciBzbXRwIG1haWwgbWV0aG9kLCBvdmVycmlkZSBm
b3IgdGVzdGluZwogKgogKiBPcHRpb25zIGlzOgogKiAtIHBvcnQKICogLSBob3N0CiAqIC0gdGlt
ZW91dAogKiAtIHVzZXJuYW1lCiAqIC0gcGFzc3dvcmQKICoKICogQHZhciBhcnJheQogKiBAYWNj
ZXNzIHB1YmxpYwogKi8KCXZhciAkc210cE9wdGlvbnMgPSBhcnJheSgKCQkncG9ydCc9PiAyNSwg
J2hvc3QnID0+IFNNVFBfU0VSVkVSLCAndGltZW91dCcgPT4gMzAKCSk7Ci8qKgogKiBzbXRwU2Vu
ZCBtZXRob2Qgb3ZlcnJpZGUgZm9yIHRlc3RpbmcKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJl
dHVybiBtaXhlZAogKi8KCWZ1bmN0aW9uIHNtdHBTZW5kKCRkYXRhLCAkY29kZSA9ICcyNTAnKSB7
CgkJcmV0dXJuIHBhcmVudDo6X19zbXRwU2VuZCgkZGF0YSwgJGNvZGUpOwoJfQovKioKICogQ29u
dmVuaWVuY2Ugc2V0dGVyIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
ICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gc2V0Q29ubmVjdGlvblNvY2tldCgmJHNvY2tl
dCkgewoJCSR0aGlzLT5fX3NtdHBDb25uZWN0aW9uID0gJHNvY2tldDsKCX0KLyoqCiAqIENvbnZl
bmllbmNlIGdldHRlciBtZXRob2QgZm9yIHRlc3RpbmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAq
IEByZXR1cm4gbWl4ZWQKICovCglmdW5jdGlvbiBnZXRDb25uZWN0aW9uU29ja2V0KCkgewoJCXJl
dHVybiAkdGhpcy0+X19zbXRwQ29ubmVjdGlvbjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRl
ciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
ZnVuY3Rpb24gc2V0SGVhZGVycygkaGVhZGVycykgewoJCSR0aGlzLT5fX2hlYWRlciArPSAkaGVh
ZGVyczsKCX0KLyoqCiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFj
Y2VzcyBwdWJsaWMKICogQHJldHVybiBhcnJheQogKi8KCWZ1bmN0aW9uIGdldEhlYWRlcnMoKSB7
CgkJcmV0dXJuICR0aGlzLT5fX2hlYWRlcjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRlciBm
b3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVu
Y3Rpb24gc2V0Qm91bmRhcnkoKSB7CgkJJHRoaXMtPl9fY3JlYXRlQm91bmRhcnkoKTsKCX0KLyoq
CiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
ICogQHJldHVybiBzdHJpbmcKICovCglmdW5jdGlvbiBnZXRCb3VuZGFyeSgpIHsKCQlyZXR1cm4g
JHRoaXMtPl9fYm91bmRhcnk7Cgl9Ci8qKgogKiBDb252ZW5pZW5jZSBnZXR0ZXIgZm9yIHRlc3Rp
bmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gc3RyaW5nCiAqLwoJZnVuY3Rpb24g
Z2V0TWVzc2FnZSgpIHsKCQlyZXR1cm4gJHRoaXMtPl9fbWVzc2FnZTsKCX0KLyoqCiAqIENvbnZl
bmllbmNlIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVy
biBzdHJpbmcKICovCglmdW5jdGlvbiBzdHJpcCgkY29udGVudCwgJG1lc3NhZ2UgPSBmYWxzZSkg
ewoJCXJldHVybiBwYXJlbnQ6Ol9fc3RyaXAoJGNvbnRlbnQsICRtZXNzYWdlKTsKCX0KfQovKioK
ICogRW1haWxUZXN0Q29udHJvbGxlciBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAq
IEBzdWJwYWNrYWdlICAgIGNha2UudGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVu
dHMKICovCmNsYXNzIEVtYWlsVGVzdENvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyIHsKLyoq
CiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcgJ0VtYWlsVGVzdCcKICogQGFjY2Vz
cyBwdWJsaWMKICovCgl2YXIgJG5hbWUgPSAnRW1haWxUZXN0JzsKLyoqCiAqIHVzZXMgcHJvcGVy
dHkKICoKICogQHZhciBtaXhlZCBudWxsCiAqIEBhY2Nlc3MgcHVibGljCiAqLwoJdmFyICR1c2Vz
ID0gbnVsbDsKLyoqCiAqIGNvbXBvbmVudHMgcHJvcGVydHkKICoKICogQHZhciBhcnJheQogKiBA
YWNjZXNzIHB1YmxpYwogKi8KCXZhciAkY29tcG9uZW50cyA9IGFycmF5KCdFbWFpbFRlc3QnKTsK
LyoqCiAqIHBhZ2VUaXRsZSBwcm9wZXJ0eQogKgogKiBAdmFyIHN0cmluZwogKiBAYWNjZXNzIHB1
YmxpYwogKi8KCXZhciAkcGFnZVRpdGxlID0gJ0VtYWlsVGVzdCc7Cn0KLyoqCiAqIEVtYWlsVGVz
dCBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAqIEBzdWJwYWNrYWdlICAgIGNha2Uu
dGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVudHMKICovCmNsYXNzIEVtYWlsQ29t
cG9uZW50VGVzdCBleHRlbmRzIENha2VUZXN0Q2FzZSB7Ci8qKgogKiBDb250cm9sbGVyIHByb3Bl
cnR5CiAqCiAqIEB2YXIgRW1haWxUZXN0Q29udHJvbGxlcgogKiBAYWNjZXNzIHB1YmxpYwogKi8K
CXZhciAkQ29udHJvbGxlcjsKLyoqCiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcg
J0VtYWlsJwogKiBAYWNjZXNzIHB1YmxpYwogKi8KCXZhciAkbmFtZSA9ICdFbWFpbCc7Ci8qKgog
KiBzZXRVcCBtZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
ZnVuY3Rpb24gc2V0VXAoKSB7CgkJJHRoaXMtPl9hcHBFbmNvZGluZyA9IENvbmZpZ3VyZTo6cmVh
ZCgnQXBwLmVuY29kaW5nJyk7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJ1VU
Ri04Jyk7CgoJCSR0aGlzLT5Db250cm9sbGVyID0mIG5ldyBFbWFpbFRlc3RDb250cm9sbGVyKCk7
CgoJCXJlc3RvcmVfZXJyb3JfaGFuZGxlcigpOwoJCUAkdGhpcy0+Q29udHJvbGxlci0+Q29tcG9u
ZW50LT5pbml0KCR0aGlzLT5Db250cm9sbGVyKTsKCQlzZXRfZXJyb3JfaGFuZGxlcignc2ltcGxl
VGVzdEVycm9ySGFuZGxlcicpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5pbml0
aWFsaXplKCR0aGlzLT5Db250cm9sbGVyLCBhcnJheSgpKTsKCQlDbGFzc1JlZ2lzdHJ5OjphZGRP
YmplY3QoJ3ZpZXcnLCBuZXcgVmlldygkdGhpcy0+Q29udHJvbGxlcikpOwoKCQkkdGhpcy0+X3Zp
ZXdQYXRocyA9IENvbmZpZ3VyZTo6cmVhZCgndmlld1BhdGhzJyk7CgkJQ29uZmlndXJlOjp3cml0
ZSgndmlld1BhdGhzJywgYXJyYXkoVEVTVF9DQUtFX0NPUkVfSU5DTFVERV9QQVRIIC4gJ3Rlc3Rz
JyAuIERTIC4gJ3Rlc3RfYXBwJyAuIERTIC4gJ3ZpZXdzJy4gRFMpKTsKCgkJJHRoaXMtPkNvbnRy
b2xsZXItPlNlc3Npb24tPmFjdGl2YXRlKCdNZXNzYWdlJyk7Cgl9Ci8qKgogKiB0ZWFyRG93biBt
ZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24g
dGVhckRvd24oKSB7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJHRoaXMtPl9h
cHBFbmNvZGluZyk7CgkJQ29uZmlndXJlOjp3cml0ZSgndmlld1BhdGhzJywgJHRoaXMtPl92aWV3
UGF0aHMpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5kZWwoJ01lc3NhZ2UnKTsKCQly
ZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKCQlDbGFzc1JlZ2lzdHJ5OjpmbHVzaCgpOwoJfQovKioK
ICogdGVzdEJhZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QmFkU210cFNlbmQoKSB7CgkJJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnNbJ2hvc3QnXSA9ICdibGFoJzsKCQkkdGhpcy0+Q29u
dHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkkdGhpcy0+YXNzZXJ0RmFs
c2UoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnU2hvdWxkIG5vdCB3b3JrJykp
OwoJfQovKioKICogdGVzdFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBA
cmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U210cFNlbmQoKSB7CgkJaWYgKCR0aGlzLT5z
a2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1
bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKSkgewoJCQlyZXR1cm47CgkJfQoJCSR0aGlzLT5Db250
cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
dC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXIt
PkVtYWlsVGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+
Q29udHJvbGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9s
bGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0
aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhl
IG1lc3NhZ2UnKSk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9kZWJ1ZyA9IHRy
dWU7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRz
bXRwU2VydmVyID0gU01UUF9TRVJWRVI7CgkJJGV4cGVjdCA9IDw8PFRFTVBET0MKPHByZT5Ib3N0
OiAkc210cFNlcnZlcgpQb3J0OiAyNQpUaW1lb3V0OiAzMApUbzogcG9zdG1hc3RlckBsb2NhbGhv
c3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApIZWFk
ZXI6CgpUbzogcG9zdG1hc3RlckBsb2NhbGhvc3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpS
ZXBseS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApYLU1h
aWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1U
eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVz
c2FnZQoKPC9wcmU+ClRFTVBET0M7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsK
CQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01l
c3NhZ2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgog
KiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwog
KiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kKCkg
ewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNN
VFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
PnRvID0gJ3Bvc3RtYXN0ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5mcm9tID0gJ25vcmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5F
bWFpbFRlc3QtPnN1YmplY3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
bnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWyd1c2VybmFtZSddID0gJ3Rlc3QnOwoJCSR0aGlzLT5D
b250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydwYXNzd29yZCddID0gJ3Rlc3Rpbmcn
OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkk
cmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZScpOwoJCSRjb2RlID0gc3Vic3RyKCR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnNtdHBFcnJvciwgMCwgMyk7CgkJJHRoaXMtPnNraXBJZighJGNvZGUsICcl
cyBBdXRoZW50aWNhdGlvbiBub3QgZW5hYmxlZCBvbiBzZXJ2ZXInKTsKCgkJJHRoaXMtPmFzc2Vy
dEZhbHNlKCRyZXN1bHQpOwoJCS8vJHRoaXMtPmFzc2VydEVxdWFsKCRjb2RlLCAnNTM1Jyk7IC8v
R290IFNNVFAgNTAyIENvbW1hbmQgTm90IGltcGxlbWVudGVkCgl9Ci8qKgogKiB0ZXN0U2VuZEZv
cm1hdHMgbWV0aG9kCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1
bmN0aW9uIHRlc3RTZW5kRm9ybWF0cygpIHsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Bvc3RtYXN0
ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tID0gJ25v
cmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1Ympl
Y3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJl
cGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRl
bGl2ZXJ5ID0gJ2RlYnVnJzsKCgkJJG1lc3NhZ2UgPSA8PDxNU0dCTE9DCjxwcmU+VG86IHBvc3Rt
YXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVjdDogQ2FrZSBT
TVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBseS1Ubzogbm9y
ZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1W
ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBv
ZiB0aGUgbWVzc2FnZQoKPC9wcmU+Ck1TR0JMT0M7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRleHBlY3QgPSBzdHJfcmVwbGFjZSgne0NPTlRFTlRU
WVBFfScsICd0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04JywgJG1lc3NhZ2UpOwoJCSR0aGlzLT5h
c3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhl
IGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250
cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJHRoaXMtPl9f
b3NGaXgoJGV4cGVjdCkpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMg
PSAnaHRtbCc7CgkJJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09OVEVOVFRZUEV9JywgJ3RleHQv
aHRtbDsgY2hhcnNldD1VVEYtOCcsICRtZXNzYWdlKTsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhp
cy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBt
ZXNzYWdlJykpOwoJCSR0aGlzLT5hc3NlcnRFcXVhbCgkdGhpcy0+Q29udHJvbGxlci0+U2Vzc2lv
bi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICR0aGlzLT5fX29zRml4KCRleHBlY3Qp
KTsKCgkJLy8gVE9ETzogYmV0dGVyIHRlc3QgZm9yIGZvcm1hdCBvZiBtZXNzYWdlIHNlbnQ/CgkJ
JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ2JvdGgnOwoKCQkkdGhpcy0+
YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRo
ZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCS8vJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09O
VEVOVFRZUEV9JywgJ211bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9ImFsdC0nLiR0aGlz
LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fYm91bmRhcnkuJyInLCAkbWVzc2FnZSk7CgkJLy8k
dGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3Nh
Z2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgogKiB0
ZXN0VGVtcGxhdGVzIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQK
ICovCglmdW5jdGlvbiB0ZXN0VGVtcGxhdGVzKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9z
dG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20g
PSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
dC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCgkJJHRoaXMtPkNvbnRyb2xsZXIt
PkVtYWlsVGVzdC0+ZGVsaXZlcnkgPSAnZGVidWcnOwoKCQkkaGVhZGVyID0gPDw8SEVBREJMT0MK
VG86IHBvc3RtYXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVj
dDogQ2FrZSBTTVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBs
eS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25l
bnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQt
VHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKCkhFQURCTE9D
OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5sYXlvdXQgPSAnZGVmYXVsdCc7CgkJ
JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSAnZGVmYXVsdCc7CgoJCSR0
ZXh0ID0gPDw8VEVYVEJMT0MKClRoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UKClRoaXMg
ZW1haWwgd2FzIHNlbnQgdXNpbmcgdGhlIENha2VQSFAgRnJhbWV3b3JrLCBodHRwOi8vY2FrZXBo
cC5vcmcuCgpURVhUQkxPQzsKCgkJJGh0bWwgPSA8PDxIVE1MQkxPQwo8IURPQ1RZUEUgaHRtbCBQ
VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+
RW1haWxUZXN0PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KCTxwPiBUaGlzIGlzIHRoZSBib2R5IG9m
IHRoZSBtZXNzYWdlPC9wPjxwPiA8L3A+Cgk8cD5UaGlzIGVtYWlsIHdhcyBzZW50IHVzaW5nIHRo
ZSA8YSBocmVmPSJodHRwOi8vY2FrZXBocC5vcmciPkNha2VQSFAgRnJhbWV3b3JrPC9hPjwvcD4K
PC9ib2R5Pgo8L2h0bWw+CkhUTUxCTE9DOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
LT5zZW5kQXMgPSAndGV4dCc7CgkJLy9jYWxsIHRoZSBMb3R1c0xpdmUgY3VzdG9temllZCBmdW5j
dGlvbiB0byBiYXNlNjRfZW5jb2RlIHRoZSBlbWFpbCBib2R5CgkJJHRleHQgPSAkdGhpcy0+Q29u
dHJvbGxlci0+RW1haWxUZXN0LT5fX3dyYXBsaW5lZmVlZHMoJHRleHQpOwoJCSRleHBlY3QgPSAn
PHByZT4nIC4gc3RyX3JlcGxhY2UoJ3tDT05URU5UVFlQRX0nLCAndGV4dC9wbGFpbjsgY2hhcnNl
dD1VVEYtOCcsICRoZWFkZXIpIC4gJHRleHQgLiAiXG4iIC4gJzwvcHJlPic7CgkJJHRoaXMtPmFz
c2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZScpKTsKCQkvL25vIG5lZWQgdG8gY2FsbCAkdGhpcy0+X19vc0Zp
eCgkZXhwZWN0KSwgYmVjYXVzZSBfX3dyYXBsaW5lZmVlZHMoKSBhbHJlYWR5IGRlYWxzIHdpdGgg
YmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250cm9sbGVyLT5T
ZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJGV4cGVjdCk7CgoJCSR0aGlz
LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkvL2NhbGwgdGhlIExv
dHVzTGl2ZSBjdXN0b216aWVkIGZ1bmN0aW9uIHRvIGJhc2U2NF9lbmNvZGUgdGhlIGVtYWlsIGJv
ZHkKCQkkaHRtbCA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fd3JhcGxpbmVmZWVk
cygkaHRtbCk7CgkJJGV4cGVjdCA9ICc8cHJlPicgLiBzdHJfcmVwbGFjZSgne0NPTlRFTlRUWVBF
fScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnLCAkaGVhZGVyKSAuICRodG1sIC4gIlxuIiAu
ICc8L3ByZT4nOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRl
c3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJLy9ubyBuZWVk
IHRvIGNhbGwgJHRoaXMtPl9fb3NGaXgoJGV4cGVjdCksIGJlY2F1c2UgX3dyYXBsaW5lZmVlZHMo
KSBhbHJlYWR5IGRlYWxzIHdpdGggYmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFs
KCR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2Un
KSwgJGV4cGVjdCk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdi
b3RoJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5z
ZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCQoJCSRleHBlY3QgPSBz
dHJfcmVwbGFjZSgne0NPTlRFTlRUWVBFfScsICdtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5k
YXJ5PSJhbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LiciJywg
JGhlYWRlcik7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNo
YXJzZXQ9VVRGLTgnIC4gIlxuIiAuICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQn
IC4gIlxuXG4iIC4gJHRleHQgLiAiXG5cbiI7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+
Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5
cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcgLiAiXG4iIC4gJ0NvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6IGJhc2U2NCcgLiAiXG5cbiIgLiAkaHRtbCAuICJcblxuIjsKCQkkZXhwZWN0IC49
ICctLWFsdC0nLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4gIi0t
XG5cblxuXG4tLSIgLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4g
Ii0tXG4iOwoJCSRleHBlY3QgPSAnPHByZT4nIC4gJGV4cGVjdCAuICc8L3ByZT4nOwoKCQkvLyRl
eHBlY3QgY29udGFpbnMgZW1haWwgYm9keSBpbiBib3RoIGh0bWwgYW5kIHRleHQgZm9ybWF0LCBh
bHJlYWR5IGJhc2U2NF9lbmNvZGVkIGJ5IF93cmFwbGluZWZlZWRzKCkKCQkkdGhpcy0+YXNzZXJ0
RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVz
c2FnZScpLCAkZXhwZWN0KTsKCX0KLyoqCiAqIHRlc3RTbXRwU2VuZFNvY2tldCBtZXRob2QKICoK
ICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVzdFNtdHBT
ZW5kU29ja2V0KCkgewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1
KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkk
dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSRzb2NrZXQgPSYgbmV3IENh
a2VTb2NrZXQoYXJyYXlfbWVyZ2UoYXJyYXkoJ3Byb3RvY29sJz0+J3NtdHAnKSwgJHRoaXMtPkNv
bnRyb2xsZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnMpKTsKCQkkdGhpcy0+Q29udHJvbGxlci0+
RW1haWxUZXN0LT5zZXRDb25uZWN0aW9uU29ja2V0KCRzb2NrZXQpOwoKCQkkdGhpcy0+YXNzZXJ0
VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5nZXRDb25uZWN0aW9uU29ja2V0KCkp
OwoKCQkvLyRyZXNwb25zZSA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBTZW5k
KCdIRUxPJywgJzI1MCcpOwoJCS8vJHRoaXMtPmFzc2VydFBhdHRlcm4oJy81MDEgU3ludGF4OiBI
RUxPIGhvc3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7
CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHJlc3BvbnNlID0g
JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c210cFNlbmQoJ0hFTE8gc29tZWhvc3RuYW1l
JywgJzI1MCcpOwoJCSR0aGlzLT5hc3NlcnROb1BhdHRlcm4oJy81MDEgU3ludGF4OiBIRUxPIGhv
c3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7Cgl9Ci8q
KgogKiB0ZXN0U2VuZERlYnVnIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U2VuZERlYnVnKCkgewoJCSR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8g
PSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
PmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVt
YWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
bWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVnJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+
Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNz
YWdlJykpOwoJfQovKioKICogdGVzdENvbnRlbnRTdHJpcHBpbmcgbWV0aG9kCiAqCiAqIEBhY2Nl
c3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1bmN0aW9uIHRlc3RDb250ZW50U3RyaXBw
aW5nKCkgewoJCSRjb250ZW50ID0gIlByZXZpb3VzIGNvbnRlbnRcbi0tYWx0LVxuQ29udGVudC1U
eXBlQ29udGVudC1UeXBlOjogdGV4dC9odG1sOyBjaGFyc2V0Y2hhcnNldD09dXRmLThcbkNvbnRl
bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQiOwoJCSRjb250ZW50IC49ICJcblxuPHA+TXkgb3du
IGh0bWwgY29udGVudDwvcD4iOwoKCQkkcmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+c3RyaXAoJGNvbnRlbnQsIHRydWUpOwoJCSRleHBlY3RlZCA9ICJQcmV2aW91cyBjb250
ZW50XG4tLWFsdC1cbiB0ZXh0L2h0bWw7IHV0Zi04XG4gN2JpdFxuXG48cD5NeSBvd24gaHRtbCBj
b250ZW50PC9wPiI7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCRyZXN1bHQsICRleHBlY3RlZCk7CgoJ
CSRjb250ZW50ID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gPGEgaHJlZj0ibWFpbHRv
OnRlc3RAZXhhbXBsZS5jb20iPmVtYWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5D
b250cm9sbGVyLT5FbWFpbFRlc3QtPnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQg
PSAkY29udGVudDsKCQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgkJ
JGNvbnRlbnQgID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gJzsKCQkkY29udGVudCAu
PSAnPGEgaHJlZj0ibWFpbHRvOnRlc3RAZXhhbXBsZS5jb20sdGVzdDJAZXhhbXBsZS5jb20iPmVt
YWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
PnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQgPSAkY29udGVudDsKCQkkdGhpcy0+
YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgl9Ci8qKgogKiB0ZXN0TXVsdGlieXRl
IG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlv
biB0ZXN0TXVsdGlieXRlKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0
KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2Nh
bGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBl
eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICfZ
h9iw2Ycg2LHYs9in2YTYqSDYqNi52YbZiNin2YYg2LfZiNmK2YQg2YXYsdiz2YQg2YTZhNmF2LPY
qtmE2YUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBs
eUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUg
PSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVn
JzsKCgkJJHN1YmplY3QgPSAnPT9VVEYtOD9CPzJZZllzTm1ISU5peDJMUFlwOW1FMktrZzJLall1
ZG1HMllqWXA5bUdJTmkzMllqWml0bUVJTm1GMkxFPT89JyAuICJcclxuIiAuICcgPT9VVEYtOD9C
PzJMUFpoQ0RaaE5tRTJZWFlzOWlxMllUWmhRPT0/PSc7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
bWFpbFRlc3QtPnNlbmRBcyA9ICd0ZXh0JzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29u
dHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdl
JykpOwovLwkJcHJlZ19tYXRjaCgnL1N1YmplY3Q6ICguKilIZWFkZXI6L3MnLCAkdGhpcy0+Q29u
dHJvbGxlci0+U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICRtYXRjaGVz
KTsKLy8JCSR0aGlzLT5hc3NlcnRFcXVhbCh0cmltKCRtYXRjaGVzWzFdKSwgJHN1YmplY3QpOwoK
CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMgPSAnaHRtbCc7CgkJJHRoaXMt
PmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0
aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsKLy8JCXByZWdfbWF0Y2goJy9TdWJqZWN0OiAoLiop
SGVhZGVyOi9zJywgJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1h
aWwubWVzc2FnZScpLCAkbWF0Y2hlcyk7Ci8vCQkkdGhpcy0+YXNzZXJ0RXF1YWwodHJpbSgkbWF0
Y2hlc1sxXSksICRzdWJqZWN0KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2Vu
ZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7Ci8vCQlwcmVn
X21hdGNoKCcvU3ViamVjdDogKC4qKUhlYWRlcjovcycsICR0aGlzLT5Db250cm9sbGVyLT5TZXNz
aW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJG1hdGNoZXMpOwovLwkJJHRoaXMt
PmFzc2VydEVxdWFsKHRyaW0oJG1hdGNoZXNbMV0pLCAkc3ViamVjdCk7Cgl9Ci8qKgogKiB1bmRv
Y3VtZW50ZWQgZnVuY3Rpb24KICoKICogQHJldHVybiB2b2lkCiAqIEBhY2Nlc3MgcHVibGljCiAq
LwoJZnVuY3Rpb24gdGVzdFNlbmRBc0lzTm90SWdub3JlZElmQXR0YWNobWVudHNQcmVzZW50KCkg
ewoJCWlmICgkdGhpcy0+c2tpcElmKCFAZnNvY2tvcGVuKFNNVFBfU0VSVkVSLCAyNSksICclcyBO
byBTTVRQIHNlcnZlciBydW5uaW5nIG9uICcgLiBTTVRQX1NFUlZFUikpIHsKCQkJCQlyZXR1cm47
CgkJfQoJCQoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMt
PkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0
aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7
CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICdBdHRhY2htZW50IFRl
c3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBl
eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBu
dWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwkv
LydkZWJ1Zycgb3IgJ21haWwnIHdvdWxkIGZhaWwKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5hdHRhY2htZW50cyA9IGFycmF5KF9fRklMRV9fKTsKCQkkYm9keSA9ICc8cD5UaGlzIGlz
IHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlPC9wPic7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT5zZW5kKCRib2R5KSk7Ci8vCQkkbXNnID0gJHRoaXMtPkNvbnRyb2xs
ZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVzc2FnZScpOwovLwkJJHRoaXMtPmFz
c2VydE5vUGF0dGVybignL3RleHRcL3BsYWluLycsICRtc2cpOwovLwkJJHRoaXMtPmFzc2VydFBh
dHRlcm4oJy90ZXh0XC9odG1sLycsICRtc2cpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5zZW5kQXMgPSAndGV4dCc7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+c2VuZCgkYm9keSkpOwovLwkJJG1zZyA9ICR0aGlzLT5Db250cm9sbGVy
LT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKTsKLy8JCSR0aGlzLT5hc3Nl
cnRQYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9QYXR0
ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
dC0+c2VuZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnNlbmQoJGJvZHkpKTsKLy8JCSRtc2cgPSAkdGhpcy0+Q29udHJvbGxlci0+
U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyk7Ci8vCi8vCQkkdGhpcy0+YXNz
ZXJ0Tm9QYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9Q
YXR0ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKLy8JCSR0aGlzLT5hc3NlcnRQYXR0ZXJuKCcv
bXVsdGlwYXJ0XC9hbHRlcm5hdGl2ZS8nLCAkbXNnKTsKCX0KLyoqCiAqIHRlc3RSZXNldCBtZXRo
b2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVz
dFJlc2V0KCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRlbXBsYXRlID0gJ3Rl
c3RfdGVtcGxhdGUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Rlc3Qu
cmVjaXBpZW50QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5m
cm9tID0gJ3Rlc3Quc2VuZGVyQGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1h
aWxUZXN0LT5yZXBseVRvID0gJ3Rlc3QucmVwbHl0b0BleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
bnRyb2xsZXItPkVtYWlsVGVzdC0+cmV0dXJuID0gJ3Rlc3QucmV0dXJuQGV4YW1wbGUuY29tJzsK
CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5jYyA9IGFycmF5KCdjYzFAZXhhbXBsZS5j
b20nLCAnY2MyQGV4YW1wbGUuY29tJyk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
YmNjID0gYXJyYXkoJ2JjYzFAZXhhbXBsZS5jb20nLCAnYmNjMkBleGFtcGxlLmNvbScpOwoJCSR0
aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1YmplY3QgPSAnVGVzdCBzdWJqZWN0JzsKCQkk
dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zID0gJ1gtYWRkaXRp
b25hbC1oZWFkZXInOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0g
J3NtdHAnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydob3N0
J10gPSAnYmxhaCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+YXR0YWNobWVudHMg
PSBhcnJheSgnYXR0YWNobWVudDEnLCAnYXR0YWNobWVudDInKTsKCgkJJHRoaXMtPmFzc2VydEZh
bHNlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1Nob3VsZCBub3Qgd29yaycp
KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+cmVzZXQoKTsKCgkJJHRoaXMtPmFz
c2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUpOwoJCSR0aGlz
LT5hc3NlcnROdWxsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvKTsKCQkkdGhpcy0+
YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tKTsKCQkkdGhpcy0+
YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXBseVRvKTsKCQkkdGhp
cy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXR1cm4pOwoJCSR0
aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Y2MsIGFy
cmF5KCkpOwoJCSR0aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+YmNjLCBhcnJheSgpKTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxl
ci0+RW1haWxUZXN0LT5zdWJqZWN0KTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zKTsKCQkkdGhpcy0+YXNzZXJ0SWRlbnRp
Y2FsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmdldEhlYWRlcnMoKSwgYXJyYXkoKSk7
CgkJJHRoaXMtPmFzc2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Z2V0Qm91
bmRhcnkoKSk7CgkJJHRoaXMtPmFzc2VydElkZW50aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1h
aWxUZXN0LT5nZXRNZXNzYWdlKCksIGFycmF5KCkpOwoJCSR0aGlzLT5hc3NlcnROdWxsKCR0aGlz
LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7CgkJJHRoaXMtPmFzc2VydElkZW50
aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hdHRhY2htZW50cywgYXJyYXkoKSk7
Cgl9Ci8qKgogKiBvc0ZpeCBtZXRob2QKICoKICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAqIEBh
Y2Nlc3MgcHJpdmF0ZQogKiBAcmV0dXJuIHN0cmluZwogKi8KCWZ1bmN0aW9uIF9fb3NGaXgoJHN0
cmluZykgewoJCXJldHVybiBzdHJfcmVwbGFjZShhcnJheSgiXHJcbiIsICJcciIpLCAiXG4iLCAk
c3RyaW5nKTsKCX0KfQo/Pg==
--026a2bea167826bf111c47c4213d68b1--



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Updated] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stephen Kruger updated EMAIL-110:
---------------------------------

    Attachment: crashfix.eml

The email message which crashes Commons email parser.
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Priority: Blocker
>         Attachments: crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> The message which can repeatedly cause this issue is pasted below (this form shows no attachment capability) :
> Received: from somedomain.test.com (somedomain.test.com [99.168.1.33])
>         by smtp.myserver.com with SMTP (BlueBox)
>         for postmaster@localhost;
>         Fri, 07 Oct 2011 10:35:04 -0400 (EDT)
> To: postmaster@localhost
> From: [hidden email]
> Reply-To: [hidden email]
> Subject: Attachment Test
> X-Mailer: CakePHP Email Component
> MIME-Version: 1.0
> Content-Type: multipart/mixed; boundary="026a2bea167826bf111c47c4213d68b1"
> This part of the E-mail should never be seen. If:
> you are reading this, consider upgrading your e-mail:
> client to a MIME-compatible client.:
> Content-Transfer-Encoding: base64
> --026a2bea167826bf111c47c4213d68b1
> Content-Type: multipart/alternative; boundary="alt-026a2bea167826bf111c47c4213d68b1"
> Content-Transfer-Encoding: 7bit
> <p>This is the body of the message</p>
> --026a2bea167826bf111c47c4213d68b1
> Content-Type: application/octet-stream
> Content-Transfer-Encoding: base64
> Content-Disposition: attachment; filename="email.test.php"
> PD9waHAKLyogU1ZOIEZJTEU6ICRJZCQgKi8KLyoqCiAqIEVtYWlsQ29tcG9uZW50VGVzdCBmaWxl
> CiAqCiAqIFNlcmllcyBvZiB0ZXN0cyBmb3IgZW1haWwgY29tcG9uZW50LgogKgogKiBQSFAgdmVy
> c2lvbnMgNCBhbmQgNQogKgogKiBDYWtlUEhQKHRtKSBUZXN0cyA8aHR0cHM6Ly90cmFjLmNha2Vw
> aHAub3JnL3dpa2kvRGV2ZWxvcGVtZW50L1Rlc3RTdWl0ZT4KICogQ29weXJpZ2h0IDIwMDUtMjAw
> OCwgQ2FrZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIChodHRwOi8vd3d3LmNha2Vmb3VuZGF0
> aW9uLm9yZykKICoKICogIExpY2Vuc2VkIHVuZGVyIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUg
> TGljZW5zZQogKiAgUmVkaXN0cmlidXRpb25zIG9mIGZpbGVzIG11c3QgcmV0YWluIHRoZSBhYm92
> ZSBjb3B5cmlnaHQgbm90aWNlLgogKgogKiBAZmlsZXNvdXJjZQogKiBAY29weXJpZ2h0ICAgICBD
> b3B5cmlnaHQgMjAwNS0yMDA4LCBDYWtlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gKGh0dHA6
> Ly93d3cuY2FrZWZvdW5kYXRpb24ub3JnKQogKiBAbGluayAgICAgICAgICBodHRwczovL3RyYWMu
> Y2FrZXBocC5vcmcvd2lraS9EZXZlbG9wZW1lbnQvVGVzdFN1aXRlIENha2VQSFAodG0pIFRlc3Rz
> CiAqIEBwYWNrYWdlICAgICAgIGNha2UKICogQHN1YnBhY2thZ2UgICAgY2FrZS5jYWtlLnRlc3Rz
> LmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqIEBzaW5jZSAgICAgICAgIENha2VQ
> SFAodG0pIHYgMS4yLjAuNTM0NwogKiBAdmVyc2lvbiAgICAgICAkUmV2aXNpb24kCiAqIEBtb2Rp
> ZmllZGJ5ICAgICRMYXN0Q2hhbmdlZEJ5JAogKiBAbGFzdG1vZGlmaWVkICAkRGF0ZSQKICogQGxp
> Y2Vuc2UgICAgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9vcGVuZ3JvdXAu
> cGhwIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUgTGljZW5zZQogKi8KaWYgKCFkZWZpbmVkKCdS
> VU5OSU5HX0VNQUlMX1VOSVRfVEVTVFMnKSkgZGVmaW5lKCdSVU5OSU5HX0VNQUlMX1VOSVRfVEVT
> VFMnLHRydWUpOwpBcHA6OmltcG9ydCgnQ29tcG9uZW50JywgJ0VtYWlsJyk7Ci8qKgogKiBFbWFp
> bFRlc3RDb21wb25lbnQgY2xhc3MKICoKICogQHBhY2thZ2UgICAgICAgY2FrZQogKiBAc3VicGFj
> a2FnZSAgICBjYWtlLnRlc3RzLmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqLwpj
> bGFzcyBFbWFpbFRlc3RDb21wb25lbnQgZXh0ZW5kcyBFbWFpbENvbXBvbmVudCB7Ci8qKgogKiBu
> YW1lIHByb3BlcnR5CiAqCiAqIEB2YXIgc3RyaW5nICdFbWFpbFRlc3RDb21wb25lbnQnCiAqIEBh
> Y2Nlc3MgcHVibGljCiAqLwoJdmFyICRuYW1lID0gJ0VtYWlsVGVzdENvbXBvbmVudCc7Ci8qKgog
> KiBMaXN0IG9mIG9wdGlvbnMgdG8gdXNlIGZvciBzbXRwIG1haWwgbWV0aG9kLCBvdmVycmlkZSBm
> b3IgdGVzdGluZwogKgogKiBPcHRpb25zIGlzOgogKiAtIHBvcnQKICogLSBob3N0CiAqIC0gdGlt
> ZW91dAogKiAtIHVzZXJuYW1lCiAqIC0gcGFzc3dvcmQKICoKICogQHZhciBhcnJheQogKiBAYWNj
> ZXNzIHB1YmxpYwogKi8KCXZhciAkc210cE9wdGlvbnMgPSBhcnJheSgKCQkncG9ydCc9PiAyNSwg
> J2hvc3QnID0+IFNNVFBfU0VSVkVSLCAndGltZW91dCcgPT4gMzAKCSk7Ci8qKgogKiBzbXRwU2Vu
> ZCBtZXRob2Qgb3ZlcnJpZGUgZm9yIHRlc3RpbmcKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJl
> dHVybiBtaXhlZAogKi8KCWZ1bmN0aW9uIHNtdHBTZW5kKCRkYXRhLCAkY29kZSA9ICcyNTAnKSB7
> CgkJcmV0dXJuIHBhcmVudDo6X19zbXRwU2VuZCgkZGF0YSwgJGNvZGUpOwoJfQovKioKICogQ29u
> dmVuaWVuY2Ugc2V0dGVyIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
> ICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gc2V0Q29ubmVjdGlvblNvY2tldCgmJHNvY2tl
> dCkgewoJCSR0aGlzLT5fX3NtdHBDb25uZWN0aW9uID0gJHNvY2tldDsKCX0KLyoqCiAqIENvbnZl
> bmllbmNlIGdldHRlciBtZXRob2QgZm9yIHRlc3RpbmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAq
> IEByZXR1cm4gbWl4ZWQKICovCglmdW5jdGlvbiBnZXRDb25uZWN0aW9uU29ja2V0KCkgewoJCXJl
> dHVybiAkdGhpcy0+X19zbXRwQ29ubmVjdGlvbjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRl
> ciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
> ZnVuY3Rpb24gc2V0SGVhZGVycygkaGVhZGVycykgewoJCSR0aGlzLT5fX2hlYWRlciArPSAkaGVh
> ZGVyczsKCX0KLyoqCiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFj
> Y2VzcyBwdWJsaWMKICogQHJldHVybiBhcnJheQogKi8KCWZ1bmN0aW9uIGdldEhlYWRlcnMoKSB7
> CgkJcmV0dXJuICR0aGlzLT5fX2hlYWRlcjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRlciBm
> b3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVu
> Y3Rpb24gc2V0Qm91bmRhcnkoKSB7CgkJJHRoaXMtPl9fY3JlYXRlQm91bmRhcnkoKTsKCX0KLyoq
> CiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
> ICogQHJldHVybiBzdHJpbmcKICovCglmdW5jdGlvbiBnZXRCb3VuZGFyeSgpIHsKCQlyZXR1cm4g
> JHRoaXMtPl9fYm91bmRhcnk7Cgl9Ci8qKgogKiBDb252ZW5pZW5jZSBnZXR0ZXIgZm9yIHRlc3Rp
> bmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gc3RyaW5nCiAqLwoJZnVuY3Rpb24g
> Z2V0TWVzc2FnZSgpIHsKCQlyZXR1cm4gJHRoaXMtPl9fbWVzc2FnZTsKCX0KLyoqCiAqIENvbnZl
> bmllbmNlIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVy
> biBzdHJpbmcKICovCglmdW5jdGlvbiBzdHJpcCgkY29udGVudCwgJG1lc3NhZ2UgPSBmYWxzZSkg
> ewoJCXJldHVybiBwYXJlbnQ6Ol9fc3RyaXAoJGNvbnRlbnQsICRtZXNzYWdlKTsKCX0KfQovKioK
> ICogRW1haWxUZXN0Q29udHJvbGxlciBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAq
> IEBzdWJwYWNrYWdlICAgIGNha2UudGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVu
> dHMKICovCmNsYXNzIEVtYWlsVGVzdENvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyIHsKLyoq
> CiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcgJ0VtYWlsVGVzdCcKICogQGFjY2Vz
> cyBwdWJsaWMKICovCgl2YXIgJG5hbWUgPSAnRW1haWxUZXN0JzsKLyoqCiAqIHVzZXMgcHJvcGVy
> dHkKICoKICogQHZhciBtaXhlZCBudWxsCiAqIEBhY2Nlc3MgcHVibGljCiAqLwoJdmFyICR1c2Vz
> ID0gbnVsbDsKLyoqCiAqIGNvbXBvbmVudHMgcHJvcGVydHkKICoKICogQHZhciBhcnJheQogKiBA
> YWNjZXNzIHB1YmxpYwogKi8KCXZhciAkY29tcG9uZW50cyA9IGFycmF5KCdFbWFpbFRlc3QnKTsK
> LyoqCiAqIHBhZ2VUaXRsZSBwcm9wZXJ0eQogKgogKiBAdmFyIHN0cmluZwogKiBAYWNjZXNzIHB1
> YmxpYwogKi8KCXZhciAkcGFnZVRpdGxlID0gJ0VtYWlsVGVzdCc7Cn0KLyoqCiAqIEVtYWlsVGVz
> dCBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAqIEBzdWJwYWNrYWdlICAgIGNha2Uu
> dGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVudHMKICovCmNsYXNzIEVtYWlsQ29t
> cG9uZW50VGVzdCBleHRlbmRzIENha2VUZXN0Q2FzZSB7Ci8qKgogKiBDb250cm9sbGVyIHByb3Bl
> cnR5CiAqCiAqIEB2YXIgRW1haWxUZXN0Q29udHJvbGxlcgogKiBAYWNjZXNzIHB1YmxpYwogKi8K
> CXZhciAkQ29udHJvbGxlcjsKLyoqCiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcg
> J0VtYWlsJwogKiBAYWNjZXNzIHB1YmxpYwogKi8KCXZhciAkbmFtZSA9ICdFbWFpbCc7Ci8qKgog
> KiBzZXRVcCBtZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
> ZnVuY3Rpb24gc2V0VXAoKSB7CgkJJHRoaXMtPl9hcHBFbmNvZGluZyA9IENvbmZpZ3VyZTo6cmVh
> ZCgnQXBwLmVuY29kaW5nJyk7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJ1VU
> Ri04Jyk7CgoJCSR0aGlzLT5Db250cm9sbGVyID0mIG5ldyBFbWFpbFRlc3RDb250cm9sbGVyKCk7
> CgoJCXJlc3RvcmVfZXJyb3JfaGFuZGxlcigpOwoJCUAkdGhpcy0+Q29udHJvbGxlci0+Q29tcG9u
> ZW50LT5pbml0KCR0aGlzLT5Db250cm9sbGVyKTsKCQlzZXRfZXJyb3JfaGFuZGxlcignc2ltcGxl
> VGVzdEVycm9ySGFuZGxlcicpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5pbml0
> aWFsaXplKCR0aGlzLT5Db250cm9sbGVyLCBhcnJheSgpKTsKCQlDbGFzc1JlZ2lzdHJ5OjphZGRP
> YmplY3QoJ3ZpZXcnLCBuZXcgVmlldygkdGhpcy0+Q29udHJvbGxlcikpOwoKCQkkdGhpcy0+X3Zp
> ZXdQYXRocyA9IENvbmZpZ3VyZTo6cmVhZCgndmlld1BhdGhzJyk7CgkJQ29uZmlndXJlOjp3cml0
> ZSgndmlld1BhdGhzJywgYXJyYXkoVEVTVF9DQUtFX0NPUkVfSU5DTFVERV9QQVRIIC4gJ3Rlc3Rz
> JyAuIERTIC4gJ3Rlc3RfYXBwJyAuIERTIC4gJ3ZpZXdzJy4gRFMpKTsKCgkJJHRoaXMtPkNvbnRy
> b2xsZXItPlNlc3Npb24tPmFjdGl2YXRlKCdNZXNzYWdlJyk7Cgl9Ci8qKgogKiB0ZWFyRG93biBt
> ZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24g
> dGVhckRvd24oKSB7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJHRoaXMtPl9h
> cHBFbmNvZGluZyk7CgkJQ29uZmlndXJlOjp3cml0ZSgndmlld1BhdGhzJywgJHRoaXMtPl92aWV3
> UGF0aHMpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5kZWwoJ01lc3NhZ2UnKTsKCQly
> ZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKCQlDbGFzc1JlZ2lzdHJ5OjpmbHVzaCgpOwoJfQovKioK
> ICogdGVzdEJhZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
> IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QmFkU210cFNlbmQoKSB7CgkJJHRoaXMtPkNvbnRyb2xs
> ZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnNbJ2hvc3QnXSA9ICdibGFoJzsKCQkkdGhpcy0+Q29u
> dHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkkdGhpcy0+YXNzZXJ0RmFs
> c2UoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnU2hvdWxkIG5vdCB3b3JrJykp
> OwoJfQovKioKICogdGVzdFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBA
> cmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U210cFNlbmQoKSB7CgkJaWYgKCR0aGlzLT5z
> a2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1
> bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKSkgewoJCQlyZXR1cm47CgkJfQoJCSR0aGlzLT5Db250
> cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
> dC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
> bFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXIt
> PkVtYWlsVGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xs
> ZXItPkVtYWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+
> Q29udHJvbGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9s
> bGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0
> aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhl
> IG1lc3NhZ2UnKSk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9kZWJ1ZyA9IHRy
> dWU7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRz
> bXRwU2VydmVyID0gU01UUF9TRVJWRVI7CgkJJGV4cGVjdCA9IDw8PFRFTVBET0MKPHByZT5Ib3N0
> OiAkc210cFNlcnZlcgpQb3J0OiAyNQpUaW1lb3V0OiAzMApUbzogcG9zdG1hc3RlckBsb2NhbGhv
> c3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApIZWFk
> ZXI6CgpUbzogcG9zdG1hc3RlckBsb2NhbGhvc3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpS
> ZXBseS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApYLU1h
> aWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1U
> eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
> IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVz
> c2FnZQoKPC9wcmU+ClRFTVBET0M7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
> ZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsK
> CQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01l
> c3NhZ2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgog
> KiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwog
> KiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kKCkg
> ewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNN
> VFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkkdGhpcy0+Q29udHJv
> bGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
> PnRvID0gJ3Bvc3RtYXN0ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
> ZXN0LT5mcm9tID0gJ25vcmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5F
> bWFpbFRlc3QtPnN1YmplY3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
> bnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWyd1c2VybmFtZSddID0gJ3Rlc3QnOwoJCSR0aGlzLT5D
> b250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydwYXNzd29yZCddID0gJ3Rlc3Rpbmcn
> OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkk
> cmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
> Ym9keSBvZiB0aGUgbWVzc2FnZScpOwoJCSRjb2RlID0gc3Vic3RyKCR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnNtdHBFcnJvciwgMCwgMyk7CgkJJHRoaXMtPnNraXBJZighJGNvZGUsICcl
> cyBBdXRoZW50aWNhdGlvbiBub3QgZW5hYmxlZCBvbiBzZXJ2ZXInKTsKCgkJJHRoaXMtPmFzc2Vy
> dEZhbHNlKCRyZXN1bHQpOwoJCS8vJHRoaXMtPmFzc2VydEVxdWFsKCRjb2RlLCAnNTM1Jyk7IC8v
> R290IFNNVFAgNTAyIENvbW1hbmQgTm90IGltcGxlbWVudGVkCgl9Ci8qKgogKiB0ZXN0U2VuZEZv
> cm1hdHMgbWV0aG9kCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1
> bmN0aW9uIHRlc3RTZW5kRm9ybWF0cygpIHsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
> LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Bvc3RtYXN0
> ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tID0gJ25v
> cmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1Ympl
> Y3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJl
> cGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRl
> bGl2ZXJ5ID0gJ2RlYnVnJzsKCgkJJG1lc3NhZ2UgPSA8PDxNU0dCTE9DCjxwcmU+VG86IHBvc3Rt
> YXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVjdDogQ2FrZSBT
> TVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBseS1Ubzogbm9y
> ZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1W
> ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQtVHJhbnNmZXIt
> RW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBv
> ZiB0aGUgbWVzc2FnZQoKPC9wcmU+Ck1TR0JMT0M7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRleHBlY3QgPSBzdHJfcmVwbGFjZSgne0NPTlRFTlRU
> WVBFfScsICd0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04JywgJG1lc3NhZ2UpOwoJCSR0aGlzLT5h
> c3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhl
> IGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250
> cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJHRoaXMtPl9f
> b3NGaXgoJGV4cGVjdCkpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMg
> PSAnaHRtbCc7CgkJJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09OVEVOVFRZUEV9JywgJ3RleHQv
> aHRtbDsgY2hhcnNldD1VVEYtOCcsICRtZXNzYWdlKTsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhp
> cy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBt
> ZXNzYWdlJykpOwoJCSR0aGlzLT5hc3NlcnRFcXVhbCgkdGhpcy0+Q29udHJvbGxlci0+U2Vzc2lv
> bi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICR0aGlzLT5fX29zRml4KCRleHBlY3Qp
> KTsKCgkJLy8gVE9ETzogYmV0dGVyIHRlc3QgZm9yIGZvcm1hdCBvZiBtZXNzYWdlIHNlbnQ/CgkJ
> JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ2JvdGgnOwoKCQkkdGhpcy0+
> YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRo
> ZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCS8vJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09O
> VEVOVFRZUEV9JywgJ211bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9ImFsdC0nLiR0aGlz
> LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fYm91bmRhcnkuJyInLCAkbWVzc2FnZSk7CgkJLy8k
> dGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3Nh
> Z2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgogKiB0
> ZXN0VGVtcGxhdGVzIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQK
> ICovCglmdW5jdGlvbiB0ZXN0VGVtcGxhdGVzKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
> bFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9z
> dG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20g
> PSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
> c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
> dC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCgkJJHRoaXMtPkNvbnRyb2xsZXIt
> PkVtYWlsVGVzdC0+ZGVsaXZlcnkgPSAnZGVidWcnOwoKCQkkaGVhZGVyID0gPDw8SEVBREJMT0MK
> VG86IHBvc3RtYXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVj
> dDogQ2FrZSBTTVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBs
> eS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25l
> bnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQt
> VHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKCkhFQURCTE9D
> OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5sYXlvdXQgPSAnZGVmYXVsdCc7CgkJ
> JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSAnZGVmYXVsdCc7CgoJCSR0
> ZXh0ID0gPDw8VEVYVEJMT0MKClRoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UKClRoaXMg
> ZW1haWwgd2FzIHNlbnQgdXNpbmcgdGhlIENha2VQSFAgRnJhbWV3b3JrLCBodHRwOi8vY2FrZXBo
> cC5vcmcuCgpURVhUQkxPQzsKCgkJJGh0bWwgPSA8PDxIVE1MQkxPQwo8IURPQ1RZUEUgaHRtbCBQ
> VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+
> RW1haWxUZXN0PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KCTxwPiBUaGlzIGlzIHRoZSBib2R5IG9m
> IHRoZSBtZXNzYWdlPC9wPjxwPiA8L3A+Cgk8cD5UaGlzIGVtYWlsIHdhcyBzZW50IHVzaW5nIHRo
> ZSA8YSBocmVmPSJodHRwOi8vY2FrZXBocC5vcmciPkNha2VQSFAgRnJhbWV3b3JrPC9hPjwvcD4K
> PC9ib2R5Pgo8L2h0bWw+CkhUTUxCTE9DOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
> LT5zZW5kQXMgPSAndGV4dCc7CgkJLy9jYWxsIHRoZSBMb3R1c0xpdmUgY3VzdG9temllZCBmdW5j
> dGlvbiB0byBiYXNlNjRfZW5jb2RlIHRoZSBlbWFpbCBib2R5CgkJJHRleHQgPSAkdGhpcy0+Q29u
> dHJvbGxlci0+RW1haWxUZXN0LT5fX3dyYXBsaW5lZmVlZHMoJHRleHQpOwoJCSRleHBlY3QgPSAn
> PHByZT4nIC4gc3RyX3JlcGxhY2UoJ3tDT05URU5UVFlQRX0nLCAndGV4dC9wbGFpbjsgY2hhcnNl
> dD1VVEYtOCcsICRoZWFkZXIpIC4gJHRleHQgLiAiXG4iIC4gJzwvcHJlPic7CgkJJHRoaXMtPmFz
> c2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
> Ym9keSBvZiB0aGUgbWVzc2FnZScpKTsKCQkvL25vIG5lZWQgdG8gY2FsbCAkdGhpcy0+X19vc0Zp
> eCgkZXhwZWN0KSwgYmVjYXVzZSBfX3dyYXBsaW5lZmVlZHMoKSBhbHJlYWR5IGRlYWxzIHdpdGgg
> YmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250cm9sbGVyLT5T
> ZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJGV4cGVjdCk7CgoJCSR0aGlz
> LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkvL2NhbGwgdGhlIExv
> dHVzTGl2ZSBjdXN0b216aWVkIGZ1bmN0aW9uIHRvIGJhc2U2NF9lbmNvZGUgdGhlIGVtYWlsIGJv
> ZHkKCQkkaHRtbCA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fd3JhcGxpbmVmZWVk
> cygkaHRtbCk7CgkJJGV4cGVjdCA9ICc8cHJlPicgLiBzdHJfcmVwbGFjZSgne0NPTlRFTlRUWVBF
> fScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnLCAkaGVhZGVyKSAuICRodG1sIC4gIlxuIiAu
> ICc8L3ByZT4nOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRl
> c3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJLy9ubyBuZWVk
> IHRvIGNhbGwgJHRoaXMtPl9fb3NGaXgoJGV4cGVjdCksIGJlY2F1c2UgX3dyYXBsaW5lZmVlZHMo
> KSBhbHJlYWR5IGRlYWxzIHdpdGggYmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFs
> KCR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2Un
> KSwgJGV4cGVjdCk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdi
> b3RoJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5z
> ZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCQoJCSRleHBlY3QgPSBz
> dHJfcmVwbGFjZSgne0NPTlRFTlRUWVBFfScsICdtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5k
> YXJ5PSJhbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LiciJywg
> JGhlYWRlcik7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
> ZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNo
> YXJzZXQ9VVRGLTgnIC4gIlxuIiAuICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQn
> IC4gIlxuXG4iIC4gJHRleHQgLiAiXG5cbiI7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+
> Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5
> cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcgLiAiXG4iIC4gJ0NvbnRlbnQtVHJhbnNmZXIt
> RW5jb2Rpbmc6IGJhc2U2NCcgLiAiXG5cbiIgLiAkaHRtbCAuICJcblxuIjsKCQkkZXhwZWN0IC49
> ICctLWFsdC0nLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4gIi0t
> XG5cblxuXG4tLSIgLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4g
> Ii0tXG4iOwoJCSRleHBlY3QgPSAnPHByZT4nIC4gJGV4cGVjdCAuICc8L3ByZT4nOwoKCQkvLyRl
> eHBlY3QgY29udGFpbnMgZW1haWwgYm9keSBpbiBib3RoIGh0bWwgYW5kIHRleHQgZm9ybWF0LCBh
> bHJlYWR5IGJhc2U2NF9lbmNvZGVkIGJ5IF93cmFwbGluZWZlZWRzKCkKCQkkdGhpcy0+YXNzZXJ0
> RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVz
> c2FnZScpLCAkZXhwZWN0KTsKCX0KLyoqCiAqIHRlc3RTbXRwU2VuZFNvY2tldCBtZXRob2QKICoK
> ICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVzdFNtdHBT
> ZW5kU29ja2V0KCkgewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1
> KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkk
> dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSRzb2NrZXQgPSYgbmV3IENh
> a2VTb2NrZXQoYXJyYXlfbWVyZ2UoYXJyYXkoJ3Byb3RvY29sJz0+J3NtdHAnKSwgJHRoaXMtPkNv
> bnRyb2xsZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnMpKTsKCQkkdGhpcy0+Q29udHJvbGxlci0+
> RW1haWxUZXN0LT5zZXRDb25uZWN0aW9uU29ja2V0KCRzb2NrZXQpOwoKCQkkdGhpcy0+YXNzZXJ0
> VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5nZXRDb25uZWN0aW9uU29ja2V0KCkp
> OwoKCQkvLyRyZXNwb25zZSA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBTZW5k
> KCdIRUxPJywgJzI1MCcpOwoJCS8vJHRoaXMtPmFzc2VydFBhdHRlcm4oJy81MDEgU3ludGF4OiBI
> RUxPIGhvc3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7
> CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHJlc3BvbnNlID0g
> JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c210cFNlbmQoJ0hFTE8gc29tZWhvc3RuYW1l
> JywgJzI1MCcpOwoJCSR0aGlzLT5hc3NlcnROb1BhdHRlcm4oJy81MDEgU3ludGF4OiBIRUxPIGhv
> c3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7Cgl9Ci8q
> KgogKiB0ZXN0U2VuZERlYnVnIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
> IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U2VuZERlYnVnKCkgewoJCSR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8g
> PSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
> PmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVt
> YWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJv
> bGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
> bWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVnJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+
> Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNz
> YWdlJykpOwoJfQovKioKICogdGVzdENvbnRlbnRTdHJpcHBpbmcgbWV0aG9kCiAqCiAqIEBhY2Nl
> c3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1bmN0aW9uIHRlc3RDb250ZW50U3RyaXBw
> aW5nKCkgewoJCSRjb250ZW50ID0gIlByZXZpb3VzIGNvbnRlbnRcbi0tYWx0LVxuQ29udGVudC1U
> eXBlQ29udGVudC1UeXBlOjogdGV4dC9odG1sOyBjaGFyc2V0Y2hhcnNldD09dXRmLThcbkNvbnRl
> bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQiOwoJCSRjb250ZW50IC49ICJcblxuPHA+TXkgb3du
> IGh0bWwgY29udGVudDwvcD4iOwoKCQkkcmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+c3RyaXAoJGNvbnRlbnQsIHRydWUpOwoJCSRleHBlY3RlZCA9ICJQcmV2aW91cyBjb250
> ZW50XG4tLWFsdC1cbiB0ZXh0L2h0bWw7IHV0Zi04XG4gN2JpdFxuXG48cD5NeSBvd24gaHRtbCBj
> b250ZW50PC9wPiI7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCRyZXN1bHQsICRleHBlY3RlZCk7CgoJ
> CSRjb250ZW50ID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gPGEgaHJlZj0ibWFpbHRv
> OnRlc3RAZXhhbXBsZS5jb20iPmVtYWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5D
> b250cm9sbGVyLT5FbWFpbFRlc3QtPnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQg
> PSAkY29udGVudDsKCQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgkJ
> JGNvbnRlbnQgID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gJzsKCQkkY29udGVudCAu
> PSAnPGEgaHJlZj0ibWFpbHRvOnRlc3RAZXhhbXBsZS5jb20sdGVzdDJAZXhhbXBsZS5jb20iPmVt
> YWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
> PnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQgPSAkY29udGVudDsKCQkkdGhpcy0+
> YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgl9Ci8qKgogKiB0ZXN0TXVsdGlieXRl
> IG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlv
> biB0ZXN0TXVsdGlieXRlKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0
> KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2Nh
> bGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBl
> eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICfZ
> h9iw2Ycg2LHYs9in2YTYqSDYqNi52YbZiNin2YYg2LfZiNmK2YQg2YXYsdiz2YQg2YTZhNmF2LPY
> qtmE2YUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBs
> eUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUg
> PSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVn
> JzsKCgkJJHN1YmplY3QgPSAnPT9VVEYtOD9CPzJZZllzTm1ISU5peDJMUFlwOW1FMktrZzJLall1
> ZG1HMllqWXA5bUdJTmkzMllqWml0bUVJTm1GMkxFPT89JyAuICJcclxuIiAuICcgPT9VVEYtOD9C
> PzJMUFpoQ0RaaE5tRTJZWFlzOWlxMllUWmhRPT0/PSc7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
> bWFpbFRlc3QtPnNlbmRBcyA9ICd0ZXh0JzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29u
> dHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdl
> JykpOwovLwkJcHJlZ19tYXRjaCgnL1N1YmplY3Q6ICguKilIZWFkZXI6L3MnLCAkdGhpcy0+Q29u
> dHJvbGxlci0+U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICRtYXRjaGVz
> KTsKLy8JCSR0aGlzLT5hc3NlcnRFcXVhbCh0cmltKCRtYXRjaGVzWzFdKSwgJHN1YmplY3QpOwoK
> CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMgPSAnaHRtbCc7CgkJJHRoaXMt
> PmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0
> aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsKLy8JCXByZWdfbWF0Y2goJy9TdWJqZWN0OiAoLiop
> SGVhZGVyOi9zJywgJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1h
> aWwubWVzc2FnZScpLCAkbWF0Y2hlcyk7Ci8vCQkkdGhpcy0+YXNzZXJ0RXF1YWwodHJpbSgkbWF0
> Y2hlc1sxXSksICRzdWJqZWN0KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2Vu
> ZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFp
> bFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7Ci8vCQlwcmVn
> X21hdGNoKCcvU3ViamVjdDogKC4qKUhlYWRlcjovcycsICR0aGlzLT5Db250cm9sbGVyLT5TZXNz
> aW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJG1hdGNoZXMpOwovLwkJJHRoaXMt
> PmFzc2VydEVxdWFsKHRyaW0oJG1hdGNoZXNbMV0pLCAkc3ViamVjdCk7Cgl9Ci8qKgogKiB1bmRv
> Y3VtZW50ZWQgZnVuY3Rpb24KICoKICogQHJldHVybiB2b2lkCiAqIEBhY2Nlc3MgcHVibGljCiAq
> LwoJZnVuY3Rpb24gdGVzdFNlbmRBc0lzTm90SWdub3JlZElmQXR0YWNobWVudHNQcmVzZW50KCkg
> ewoJCWlmICgkdGhpcy0+c2tpcElmKCFAZnNvY2tvcGVuKFNNVFBfU0VSVkVSLCAyNSksICclcyBO
> byBTTVRQIHNlcnZlciBydW5uaW5nIG9uICcgLiBTTVRQX1NFUlZFUikpIHsKCQkJCQlyZXR1cm47
> CgkJfQoJCQoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMt
> PkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0
> aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7
> CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICdBdHRhY2htZW50IFRl
> c3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBl
> eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBu
> dWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwkv
> LydkZWJ1Zycgb3IgJ21haWwnIHdvdWxkIGZhaWwKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
> ZXN0LT5hdHRhY2htZW50cyA9IGFycmF5KF9fRklMRV9fKTsKCQkkYm9keSA9ICc8cD5UaGlzIGlz
> IHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlPC9wPic7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
> bFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJv
> bGxlci0+RW1haWxUZXN0LT5zZW5kKCRib2R5KSk7Ci8vCQkkbXNnID0gJHRoaXMtPkNvbnRyb2xs
> ZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVzc2FnZScpOwovLwkJJHRoaXMtPmFz
> c2VydE5vUGF0dGVybignL3RleHRcL3BsYWluLycsICRtc2cpOwovLwkJJHRoaXMtPmFzc2VydFBh
> dHRlcm4oJy90ZXh0XC9odG1sLycsICRtc2cpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
> ZXN0LT5zZW5kQXMgPSAndGV4dCc7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
> ZXItPkVtYWlsVGVzdC0+c2VuZCgkYm9keSkpOwovLwkJJG1zZyA9ICR0aGlzLT5Db250cm9sbGVy
> LT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKTsKLy8JCSR0aGlzLT5hc3Nl
> cnRQYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9QYXR0
> ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
> dC0+c2VuZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnNlbmQoJGJvZHkpKTsKLy8JCSRtc2cgPSAkdGhpcy0+Q29udHJvbGxlci0+
> U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyk7Ci8vCi8vCQkkdGhpcy0+YXNz
> ZXJ0Tm9QYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9Q
> YXR0ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKLy8JCSR0aGlzLT5hc3NlcnRQYXR0ZXJuKCcv
> bXVsdGlwYXJ0XC9hbHRlcm5hdGl2ZS8nLCAkbXNnKTsKCX0KLyoqCiAqIHRlc3RSZXNldCBtZXRo
> b2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVz
> dFJlc2V0KCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRlbXBsYXRlID0gJ3Rl
> c3RfdGVtcGxhdGUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Rlc3Qu
> cmVjaXBpZW50QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5m
> cm9tID0gJ3Rlc3Quc2VuZGVyQGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1h
> aWxUZXN0LT5yZXBseVRvID0gJ3Rlc3QucmVwbHl0b0BleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
> bnRyb2xsZXItPkVtYWlsVGVzdC0+cmV0dXJuID0gJ3Rlc3QucmV0dXJuQGV4YW1wbGUuY29tJzsK
> CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5jYyA9IGFycmF5KCdjYzFAZXhhbXBsZS5j
> b20nLCAnY2MyQGV4YW1wbGUuY29tJyk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
> YmNjID0gYXJyYXkoJ2JjYzFAZXhhbXBsZS5jb20nLCAnYmNjMkBleGFtcGxlLmNvbScpOwoJCSR0
> aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1YmplY3QgPSAnVGVzdCBzdWJqZWN0JzsKCQkk
> dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zID0gJ1gtYWRkaXRp
> b25hbC1oZWFkZXInOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0g
> J3NtdHAnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydob3N0
> J10gPSAnYmxhaCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+YXR0YWNobWVudHMg
> PSBhcnJheSgnYXR0YWNobWVudDEnLCAnYXR0YWNobWVudDInKTsKCgkJJHRoaXMtPmFzc2VydEZh
> bHNlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1Nob3VsZCBub3Qgd29yaycp
> KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+cmVzZXQoKTsKCgkJJHRoaXMtPmFz
> c2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUpOwoJCSR0aGlz
> LT5hc3NlcnROdWxsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvKTsKCQkkdGhpcy0+
> YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tKTsKCQkkdGhpcy0+
> YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXBseVRvKTsKCQkkdGhp
> cy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXR1cm4pOwoJCSR0
> aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Y2MsIGFy
> cmF5KCkpOwoJCSR0aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+YmNjLCBhcnJheSgpKTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxl
> ci0+RW1haWxUZXN0LT5zdWJqZWN0KTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJv
> bGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zKTsKCQkkdGhpcy0+YXNzZXJ0SWRlbnRp
> Y2FsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmdldEhlYWRlcnMoKSwgYXJyYXkoKSk7
> CgkJJHRoaXMtPmFzc2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Z2V0Qm91
> bmRhcnkoKSk7CgkJJHRoaXMtPmFzc2VydElkZW50aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1h
> aWxUZXN0LT5nZXRNZXNzYWdlKCksIGFycmF5KCkpOwoJCSR0aGlzLT5hc3NlcnROdWxsKCR0aGlz
> LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7CgkJJHRoaXMtPmFzc2VydElkZW50
> aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hdHRhY2htZW50cywgYXJyYXkoKSk7
> Cgl9Ci8qKgogKiBvc0ZpeCBtZXRob2QKICoKICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAqIEBh
> Y2Nlc3MgcHJpdmF0ZQogKiBAcmV0dXJuIHN0cmluZwogKi8KCWZ1bmN0aW9uIF9fb3NGaXgoJHN0
> cmluZykgewoJCXJldHVybiBzdHJfcmVwbGFjZShhcnJheSgiXHJcbiIsICJcciIpLCAiXG4iLCAk
> c3RyaW5nKTsKCX0KfQo/Pg==
> --026a2bea167826bf111c47c4213d68b1--

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Updated] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stephen Kruger updated EMAIL-110:
---------------------------------

    Description:
I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
The stack trace is :
java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:2786)
        at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
        at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
        at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
        at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
        at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
        at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
        at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
        at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
        at javax.mail.Transport.send(Transport.java:76)
        at javax.mail.Transport.send(Transport.java:48)

There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

  was:
I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
The stack trace is :
java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:2786)
        at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
        at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
        at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
        at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
        at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
        at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
        at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
        at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
        at javax.mail.Transport.send(Transport.java:76)
        at javax.mail.Transport.send(Transport.java:48)

The message which can repeatedly cause this issue is pasted below (this form shows no attachment capability) :

Received: from somedomain.test.com (somedomain.test.com [99.168.1.33])
        by smtp.myserver.com with SMTP (BlueBox)
        for postmaster@localhost;
        Fri, 07 Oct 2011 10:35:04 -0400 (EDT)
To: postmaster@localhost
From: [hidden email]
Reply-To: [hidden email]
Subject: Attachment Test
X-Mailer: CakePHP Email Component
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="026a2bea167826bf111c47c4213d68b1"
This part of the E-mail should never be seen. If:
you are reading this, consider upgrading your e-mail:
client to a MIME-compatible client.:
Content-Transfer-Encoding: base64

--026a2bea167826bf111c47c4213d68b1
Content-Type: multipart/alternative; boundary="alt-026a2bea167826bf111c47c4213d68b1"
Content-Transfer-Encoding: 7bit
<p>This is the body of the message</p>
--026a2bea167826bf111c47c4213d68b1
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="email.test.php"
PD9waHAKLyogU1ZOIEZJTEU6ICRJZCQgKi8KLyoqCiAqIEVtYWlsQ29tcG9uZW50VGVzdCBmaWxl
CiAqCiAqIFNlcmllcyBvZiB0ZXN0cyBmb3IgZW1haWwgY29tcG9uZW50LgogKgogKiBQSFAgdmVy
c2lvbnMgNCBhbmQgNQogKgogKiBDYWtlUEhQKHRtKSBUZXN0cyA8aHR0cHM6Ly90cmFjLmNha2Vw
aHAub3JnL3dpa2kvRGV2ZWxvcGVtZW50L1Rlc3RTdWl0ZT4KICogQ29weXJpZ2h0IDIwMDUtMjAw
OCwgQ2FrZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIChodHRwOi8vd3d3LmNha2Vmb3VuZGF0
aW9uLm9yZykKICoKICogIExpY2Vuc2VkIHVuZGVyIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUg
TGljZW5zZQogKiAgUmVkaXN0cmlidXRpb25zIG9mIGZpbGVzIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlLgogKgogKiBAZmlsZXNvdXJjZQogKiBAY29weXJpZ2h0ICAgICBD
b3B5cmlnaHQgMjAwNS0yMDA4LCBDYWtlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gKGh0dHA6
Ly93d3cuY2FrZWZvdW5kYXRpb24ub3JnKQogKiBAbGluayAgICAgICAgICBodHRwczovL3RyYWMu
Y2FrZXBocC5vcmcvd2lraS9EZXZlbG9wZW1lbnQvVGVzdFN1aXRlIENha2VQSFAodG0pIFRlc3Rz
CiAqIEBwYWNrYWdlICAgICAgIGNha2UKICogQHN1YnBhY2thZ2UgICAgY2FrZS5jYWtlLnRlc3Rz
LmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqIEBzaW5jZSAgICAgICAgIENha2VQ
SFAodG0pIHYgMS4yLjAuNTM0NwogKiBAdmVyc2lvbiAgICAgICAkUmV2aXNpb24kCiAqIEBtb2Rp
ZmllZGJ5ICAgICRMYXN0Q2hhbmdlZEJ5JAogKiBAbGFzdG1vZGlmaWVkICAkRGF0ZSQKICogQGxp
Y2Vuc2UgICAgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9vcGVuZ3JvdXAu
cGhwIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUgTGljZW5zZQogKi8KaWYgKCFkZWZpbmVkKCdS
VU5OSU5HX0VNQUlMX1VOSVRfVEVTVFMnKSkgZGVmaW5lKCdSVU5OSU5HX0VNQUlMX1VOSVRfVEVT
VFMnLHRydWUpOwpBcHA6OmltcG9ydCgnQ29tcG9uZW50JywgJ0VtYWlsJyk7Ci8qKgogKiBFbWFp
bFRlc3RDb21wb25lbnQgY2xhc3MKICoKICogQHBhY2thZ2UgICAgICAgY2FrZQogKiBAc3VicGFj
a2FnZSAgICBjYWtlLnRlc3RzLmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqLwpj
bGFzcyBFbWFpbFRlc3RDb21wb25lbnQgZXh0ZW5kcyBFbWFpbENvbXBvbmVudCB7Ci8qKgogKiBu
YW1lIHByb3BlcnR5CiAqCiAqIEB2YXIgc3RyaW5nICdFbWFpbFRlc3RDb21wb25lbnQnCiAqIEBh
Y2Nlc3MgcHVibGljCiAqLwoJdmFyICRuYW1lID0gJ0VtYWlsVGVzdENvbXBvbmVudCc7Ci8qKgog
KiBMaXN0IG9mIG9wdGlvbnMgdG8gdXNlIGZvciBzbXRwIG1haWwgbWV0aG9kLCBvdmVycmlkZSBm
b3IgdGVzdGluZwogKgogKiBPcHRpb25zIGlzOgogKiAtIHBvcnQKICogLSBob3N0CiAqIC0gdGlt
ZW91dAogKiAtIHVzZXJuYW1lCiAqIC0gcGFzc3dvcmQKICoKICogQHZhciBhcnJheQogKiBAYWNj
ZXNzIHB1YmxpYwogKi8KCXZhciAkc210cE9wdGlvbnMgPSBhcnJheSgKCQkncG9ydCc9PiAyNSwg
J2hvc3QnID0+IFNNVFBfU0VSVkVSLCAndGltZW91dCcgPT4gMzAKCSk7Ci8qKgogKiBzbXRwU2Vu
ZCBtZXRob2Qgb3ZlcnJpZGUgZm9yIHRlc3RpbmcKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJl
dHVybiBtaXhlZAogKi8KCWZ1bmN0aW9uIHNtdHBTZW5kKCRkYXRhLCAkY29kZSA9ICcyNTAnKSB7
CgkJcmV0dXJuIHBhcmVudDo6X19zbXRwU2VuZCgkZGF0YSwgJGNvZGUpOwoJfQovKioKICogQ29u
dmVuaWVuY2Ugc2V0dGVyIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
ICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gc2V0Q29ubmVjdGlvblNvY2tldCgmJHNvY2tl
dCkgewoJCSR0aGlzLT5fX3NtdHBDb25uZWN0aW9uID0gJHNvY2tldDsKCX0KLyoqCiAqIENvbnZl
bmllbmNlIGdldHRlciBtZXRob2QgZm9yIHRlc3RpbmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAq
IEByZXR1cm4gbWl4ZWQKICovCglmdW5jdGlvbiBnZXRDb25uZWN0aW9uU29ja2V0KCkgewoJCXJl
dHVybiAkdGhpcy0+X19zbXRwQ29ubmVjdGlvbjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRl
ciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
ZnVuY3Rpb24gc2V0SGVhZGVycygkaGVhZGVycykgewoJCSR0aGlzLT5fX2hlYWRlciArPSAkaGVh
ZGVyczsKCX0KLyoqCiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFj
Y2VzcyBwdWJsaWMKICogQHJldHVybiBhcnJheQogKi8KCWZ1bmN0aW9uIGdldEhlYWRlcnMoKSB7
CgkJcmV0dXJuICR0aGlzLT5fX2hlYWRlcjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRlciBm
b3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVu
Y3Rpb24gc2V0Qm91bmRhcnkoKSB7CgkJJHRoaXMtPl9fY3JlYXRlQm91bmRhcnkoKTsKCX0KLyoq
CiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
ICogQHJldHVybiBzdHJpbmcKICovCglmdW5jdGlvbiBnZXRCb3VuZGFyeSgpIHsKCQlyZXR1cm4g
JHRoaXMtPl9fYm91bmRhcnk7Cgl9Ci8qKgogKiBDb252ZW5pZW5jZSBnZXR0ZXIgZm9yIHRlc3Rp
bmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gc3RyaW5nCiAqLwoJZnVuY3Rpb24g
Z2V0TWVzc2FnZSgpIHsKCQlyZXR1cm4gJHRoaXMtPl9fbWVzc2FnZTsKCX0KLyoqCiAqIENvbnZl
bmllbmNlIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVy
biBzdHJpbmcKICovCglmdW5jdGlvbiBzdHJpcCgkY29udGVudCwgJG1lc3NhZ2UgPSBmYWxzZSkg
ewoJCXJldHVybiBwYXJlbnQ6Ol9fc3RyaXAoJGNvbnRlbnQsICRtZXNzYWdlKTsKCX0KfQovKioK
ICogRW1haWxUZXN0Q29udHJvbGxlciBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAq
IEBzdWJwYWNrYWdlICAgIGNha2UudGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVu
dHMKICovCmNsYXNzIEVtYWlsVGVzdENvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyIHsKLyoq
CiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcgJ0VtYWlsVGVzdCcKICogQGFjY2Vz
cyBwdWJsaWMKICovCgl2YXIgJG5hbWUgPSAnRW1haWxUZXN0JzsKLyoqCiAqIHVzZXMgcHJvcGVy
dHkKICoKICogQHZhciBtaXhlZCBudWxsCiAqIEBhY2Nlc3MgcHVibGljCiAqLwoJdmFyICR1c2Vz
ID0gbnVsbDsKLyoqCiAqIGNvbXBvbmVudHMgcHJvcGVydHkKICoKICogQHZhciBhcnJheQogKiBA
YWNjZXNzIHB1YmxpYwogKi8KCXZhciAkY29tcG9uZW50cyA9IGFycmF5KCdFbWFpbFRlc3QnKTsK
LyoqCiAqIHBhZ2VUaXRsZSBwcm9wZXJ0eQogKgogKiBAdmFyIHN0cmluZwogKiBAYWNjZXNzIHB1
YmxpYwogKi8KCXZhciAkcGFnZVRpdGxlID0gJ0VtYWlsVGVzdCc7Cn0KLyoqCiAqIEVtYWlsVGVz
dCBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAqIEBzdWJwYWNrYWdlICAgIGNha2Uu
dGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVudHMKICovCmNsYXNzIEVtYWlsQ29t
cG9uZW50VGVzdCBleHRlbmRzIENha2VUZXN0Q2FzZSB7Ci8qKgogKiBDb250cm9sbGVyIHByb3Bl
cnR5CiAqCiAqIEB2YXIgRW1haWxUZXN0Q29udHJvbGxlcgogKiBAYWNjZXNzIHB1YmxpYwogKi8K
CXZhciAkQ29udHJvbGxlcjsKLyoqCiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcg
J0VtYWlsJwogKiBAYWNjZXNzIHB1YmxpYwogKi8KCXZhciAkbmFtZSA9ICdFbWFpbCc7Ci8qKgog
KiBzZXRVcCBtZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
ZnVuY3Rpb24gc2V0VXAoKSB7CgkJJHRoaXMtPl9hcHBFbmNvZGluZyA9IENvbmZpZ3VyZTo6cmVh
ZCgnQXBwLmVuY29kaW5nJyk7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJ1VU
Ri04Jyk7CgoJCSR0aGlzLT5Db250cm9sbGVyID0mIG5ldyBFbWFpbFRlc3RDb250cm9sbGVyKCk7
CgoJCXJlc3RvcmVfZXJyb3JfaGFuZGxlcigpOwoJCUAkdGhpcy0+Q29udHJvbGxlci0+Q29tcG9u
ZW50LT5pbml0KCR0aGlzLT5Db250cm9sbGVyKTsKCQlzZXRfZXJyb3JfaGFuZGxlcignc2ltcGxl
VGVzdEVycm9ySGFuZGxlcicpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5pbml0
aWFsaXplKCR0aGlzLT5Db250cm9sbGVyLCBhcnJheSgpKTsKCQlDbGFzc1JlZ2lzdHJ5OjphZGRP
YmplY3QoJ3ZpZXcnLCBuZXcgVmlldygkdGhpcy0+Q29udHJvbGxlcikpOwoKCQkkdGhpcy0+X3Zp
ZXdQYXRocyA9IENvbmZpZ3VyZTo6cmVhZCgndmlld1BhdGhzJyk7CgkJQ29uZmlndXJlOjp3cml0
ZSgndmlld1BhdGhzJywgYXJyYXkoVEVTVF9DQUtFX0NPUkVfSU5DTFVERV9QQVRIIC4gJ3Rlc3Rz
JyAuIERTIC4gJ3Rlc3RfYXBwJyAuIERTIC4gJ3ZpZXdzJy4gRFMpKTsKCgkJJHRoaXMtPkNvbnRy
b2xsZXItPlNlc3Npb24tPmFjdGl2YXRlKCdNZXNzYWdlJyk7Cgl9Ci8qKgogKiB0ZWFyRG93biBt
ZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24g
dGVhckRvd24oKSB7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJHRoaXMtPl9h
cHBFbmNvZGluZyk7CgkJQ29uZmlndXJlOjp3cml0ZSgndmlld1BhdGhzJywgJHRoaXMtPl92aWV3
UGF0aHMpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5kZWwoJ01lc3NhZ2UnKTsKCQly
ZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKCQlDbGFzc1JlZ2lzdHJ5OjpmbHVzaCgpOwoJfQovKioK
ICogdGVzdEJhZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QmFkU210cFNlbmQoKSB7CgkJJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnNbJ2hvc3QnXSA9ICdibGFoJzsKCQkkdGhpcy0+Q29u
dHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkkdGhpcy0+YXNzZXJ0RmFs
c2UoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnU2hvdWxkIG5vdCB3b3JrJykp
OwoJfQovKioKICogdGVzdFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBA
cmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U210cFNlbmQoKSB7CgkJaWYgKCR0aGlzLT5z
a2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1
bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKSkgewoJCQlyZXR1cm47CgkJfQoJCSR0aGlzLT5Db250
cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
dC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXIt
PkVtYWlsVGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+
Q29udHJvbGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9s
bGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0
aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhl
IG1lc3NhZ2UnKSk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9kZWJ1ZyA9IHRy
dWU7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRz
bXRwU2VydmVyID0gU01UUF9TRVJWRVI7CgkJJGV4cGVjdCA9IDw8PFRFTVBET0MKPHByZT5Ib3N0
OiAkc210cFNlcnZlcgpQb3J0OiAyNQpUaW1lb3V0OiAzMApUbzogcG9zdG1hc3RlckBsb2NhbGhv
c3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApIZWFk
ZXI6CgpUbzogcG9zdG1hc3RlckBsb2NhbGhvc3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpS
ZXBseS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApYLU1h
aWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1U
eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVz
c2FnZQoKPC9wcmU+ClRFTVBET0M7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsK
CQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01l
c3NhZ2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgog
KiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwog
KiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kKCkg
ewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNN
VFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
PnRvID0gJ3Bvc3RtYXN0ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5mcm9tID0gJ25vcmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5F
bWFpbFRlc3QtPnN1YmplY3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
bnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWyd1c2VybmFtZSddID0gJ3Rlc3QnOwoJCSR0aGlzLT5D
b250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydwYXNzd29yZCddID0gJ3Rlc3Rpbmcn
OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkk
cmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZScpOwoJCSRjb2RlID0gc3Vic3RyKCR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnNtdHBFcnJvciwgMCwgMyk7CgkJJHRoaXMtPnNraXBJZighJGNvZGUsICcl
cyBBdXRoZW50aWNhdGlvbiBub3QgZW5hYmxlZCBvbiBzZXJ2ZXInKTsKCgkJJHRoaXMtPmFzc2Vy
dEZhbHNlKCRyZXN1bHQpOwoJCS8vJHRoaXMtPmFzc2VydEVxdWFsKCRjb2RlLCAnNTM1Jyk7IC8v
R290IFNNVFAgNTAyIENvbW1hbmQgTm90IGltcGxlbWVudGVkCgl9Ci8qKgogKiB0ZXN0U2VuZEZv
cm1hdHMgbWV0aG9kCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1
bmN0aW9uIHRlc3RTZW5kRm9ybWF0cygpIHsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Bvc3RtYXN0
ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tID0gJ25v
cmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1Ympl
Y3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJl
cGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRl
bGl2ZXJ5ID0gJ2RlYnVnJzsKCgkJJG1lc3NhZ2UgPSA8PDxNU0dCTE9DCjxwcmU+VG86IHBvc3Rt
YXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVjdDogQ2FrZSBT
TVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBseS1Ubzogbm9y
ZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1W
ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBv
ZiB0aGUgbWVzc2FnZQoKPC9wcmU+Ck1TR0JMT0M7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRleHBlY3QgPSBzdHJfcmVwbGFjZSgne0NPTlRFTlRU
WVBFfScsICd0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04JywgJG1lc3NhZ2UpOwoJCSR0aGlzLT5h
c3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhl
IGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250
cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJHRoaXMtPl9f
b3NGaXgoJGV4cGVjdCkpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMg
PSAnaHRtbCc7CgkJJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09OVEVOVFRZUEV9JywgJ3RleHQv
aHRtbDsgY2hhcnNldD1VVEYtOCcsICRtZXNzYWdlKTsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhp
cy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBt
ZXNzYWdlJykpOwoJCSR0aGlzLT5hc3NlcnRFcXVhbCgkdGhpcy0+Q29udHJvbGxlci0+U2Vzc2lv
bi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICR0aGlzLT5fX29zRml4KCRleHBlY3Qp
KTsKCgkJLy8gVE9ETzogYmV0dGVyIHRlc3QgZm9yIGZvcm1hdCBvZiBtZXNzYWdlIHNlbnQ/CgkJ
JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ2JvdGgnOwoKCQkkdGhpcy0+
YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRo
ZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCS8vJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09O
VEVOVFRZUEV9JywgJ211bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9ImFsdC0nLiR0aGlz
LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fYm91bmRhcnkuJyInLCAkbWVzc2FnZSk7CgkJLy8k
dGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3Nh
Z2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgogKiB0
ZXN0VGVtcGxhdGVzIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQK
ICovCglmdW5jdGlvbiB0ZXN0VGVtcGxhdGVzKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9z
dG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20g
PSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
dC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCgkJJHRoaXMtPkNvbnRyb2xsZXIt
PkVtYWlsVGVzdC0+ZGVsaXZlcnkgPSAnZGVidWcnOwoKCQkkaGVhZGVyID0gPDw8SEVBREJMT0MK
VG86IHBvc3RtYXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVj
dDogQ2FrZSBTTVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBs
eS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25l
bnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQt
VHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKCkhFQURCTE9D
OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5sYXlvdXQgPSAnZGVmYXVsdCc7CgkJ
JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSAnZGVmYXVsdCc7CgoJCSR0
ZXh0ID0gPDw8VEVYVEJMT0MKClRoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UKClRoaXMg
ZW1haWwgd2FzIHNlbnQgdXNpbmcgdGhlIENha2VQSFAgRnJhbWV3b3JrLCBodHRwOi8vY2FrZXBo
cC5vcmcuCgpURVhUQkxPQzsKCgkJJGh0bWwgPSA8PDxIVE1MQkxPQwo8IURPQ1RZUEUgaHRtbCBQ
VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+
RW1haWxUZXN0PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KCTxwPiBUaGlzIGlzIHRoZSBib2R5IG9m
IHRoZSBtZXNzYWdlPC9wPjxwPiA8L3A+Cgk8cD5UaGlzIGVtYWlsIHdhcyBzZW50IHVzaW5nIHRo
ZSA8YSBocmVmPSJodHRwOi8vY2FrZXBocC5vcmciPkNha2VQSFAgRnJhbWV3b3JrPC9hPjwvcD4K
PC9ib2R5Pgo8L2h0bWw+CkhUTUxCTE9DOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
LT5zZW5kQXMgPSAndGV4dCc7CgkJLy9jYWxsIHRoZSBMb3R1c0xpdmUgY3VzdG9temllZCBmdW5j
dGlvbiB0byBiYXNlNjRfZW5jb2RlIHRoZSBlbWFpbCBib2R5CgkJJHRleHQgPSAkdGhpcy0+Q29u
dHJvbGxlci0+RW1haWxUZXN0LT5fX3dyYXBsaW5lZmVlZHMoJHRleHQpOwoJCSRleHBlY3QgPSAn
PHByZT4nIC4gc3RyX3JlcGxhY2UoJ3tDT05URU5UVFlQRX0nLCAndGV4dC9wbGFpbjsgY2hhcnNl
dD1VVEYtOCcsICRoZWFkZXIpIC4gJHRleHQgLiAiXG4iIC4gJzwvcHJlPic7CgkJJHRoaXMtPmFz
c2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZScpKTsKCQkvL25vIG5lZWQgdG8gY2FsbCAkdGhpcy0+X19vc0Zp
eCgkZXhwZWN0KSwgYmVjYXVzZSBfX3dyYXBsaW5lZmVlZHMoKSBhbHJlYWR5IGRlYWxzIHdpdGgg
YmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250cm9sbGVyLT5T
ZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJGV4cGVjdCk7CgoJCSR0aGlz
LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkvL2NhbGwgdGhlIExv
dHVzTGl2ZSBjdXN0b216aWVkIGZ1bmN0aW9uIHRvIGJhc2U2NF9lbmNvZGUgdGhlIGVtYWlsIGJv
ZHkKCQkkaHRtbCA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fd3JhcGxpbmVmZWVk
cygkaHRtbCk7CgkJJGV4cGVjdCA9ICc8cHJlPicgLiBzdHJfcmVwbGFjZSgne0NPTlRFTlRUWVBF
fScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnLCAkaGVhZGVyKSAuICRodG1sIC4gIlxuIiAu
ICc8L3ByZT4nOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRl
c3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJLy9ubyBuZWVk
IHRvIGNhbGwgJHRoaXMtPl9fb3NGaXgoJGV4cGVjdCksIGJlY2F1c2UgX3dyYXBsaW5lZmVlZHMo
KSBhbHJlYWR5IGRlYWxzIHdpdGggYmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFs
KCR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2Un
KSwgJGV4cGVjdCk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdi
b3RoJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5z
ZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCQoJCSRleHBlY3QgPSBz
dHJfcmVwbGFjZSgne0NPTlRFTlRUWVBFfScsICdtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5k
YXJ5PSJhbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LiciJywg
JGhlYWRlcik7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNo
YXJzZXQ9VVRGLTgnIC4gIlxuIiAuICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQn
IC4gIlxuXG4iIC4gJHRleHQgLiAiXG5cbiI7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+
Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5
cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcgLiAiXG4iIC4gJ0NvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6IGJhc2U2NCcgLiAiXG5cbiIgLiAkaHRtbCAuICJcblxuIjsKCQkkZXhwZWN0IC49
ICctLWFsdC0nLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4gIi0t
XG5cblxuXG4tLSIgLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4g
Ii0tXG4iOwoJCSRleHBlY3QgPSAnPHByZT4nIC4gJGV4cGVjdCAuICc8L3ByZT4nOwoKCQkvLyRl
eHBlY3QgY29udGFpbnMgZW1haWwgYm9keSBpbiBib3RoIGh0bWwgYW5kIHRleHQgZm9ybWF0LCBh
bHJlYWR5IGJhc2U2NF9lbmNvZGVkIGJ5IF93cmFwbGluZWZlZWRzKCkKCQkkdGhpcy0+YXNzZXJ0
RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVz
c2FnZScpLCAkZXhwZWN0KTsKCX0KLyoqCiAqIHRlc3RTbXRwU2VuZFNvY2tldCBtZXRob2QKICoK
ICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVzdFNtdHBT
ZW5kU29ja2V0KCkgewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1
KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkk
dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSRzb2NrZXQgPSYgbmV3IENh
a2VTb2NrZXQoYXJyYXlfbWVyZ2UoYXJyYXkoJ3Byb3RvY29sJz0+J3NtdHAnKSwgJHRoaXMtPkNv
bnRyb2xsZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnMpKTsKCQkkdGhpcy0+Q29udHJvbGxlci0+
RW1haWxUZXN0LT5zZXRDb25uZWN0aW9uU29ja2V0KCRzb2NrZXQpOwoKCQkkdGhpcy0+YXNzZXJ0
VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5nZXRDb25uZWN0aW9uU29ja2V0KCkp
OwoKCQkvLyRyZXNwb25zZSA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBTZW5k
KCdIRUxPJywgJzI1MCcpOwoJCS8vJHRoaXMtPmFzc2VydFBhdHRlcm4oJy81MDEgU3ludGF4OiBI
RUxPIGhvc3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7
CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHJlc3BvbnNlID0g
JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c210cFNlbmQoJ0hFTE8gc29tZWhvc3RuYW1l
JywgJzI1MCcpOwoJCSR0aGlzLT5hc3NlcnROb1BhdHRlcm4oJy81MDEgU3ludGF4OiBIRUxPIGhv
c3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7Cgl9Ci8q
KgogKiB0ZXN0U2VuZERlYnVnIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U2VuZERlYnVnKCkgewoJCSR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8g
PSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
PmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVt
YWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
bWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVnJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+
Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNz
YWdlJykpOwoJfQovKioKICogdGVzdENvbnRlbnRTdHJpcHBpbmcgbWV0aG9kCiAqCiAqIEBhY2Nl
c3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1bmN0aW9uIHRlc3RDb250ZW50U3RyaXBw
aW5nKCkgewoJCSRjb250ZW50ID0gIlByZXZpb3VzIGNvbnRlbnRcbi0tYWx0LVxuQ29udGVudC1U
eXBlQ29udGVudC1UeXBlOjogdGV4dC9odG1sOyBjaGFyc2V0Y2hhcnNldD09dXRmLThcbkNvbnRl
bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQiOwoJCSRjb250ZW50IC49ICJcblxuPHA+TXkgb3du
IGh0bWwgY29udGVudDwvcD4iOwoKCQkkcmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+c3RyaXAoJGNvbnRlbnQsIHRydWUpOwoJCSRleHBlY3RlZCA9ICJQcmV2aW91cyBjb250
ZW50XG4tLWFsdC1cbiB0ZXh0L2h0bWw7IHV0Zi04XG4gN2JpdFxuXG48cD5NeSBvd24gaHRtbCBj
b250ZW50PC9wPiI7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCRyZXN1bHQsICRleHBlY3RlZCk7CgoJ
CSRjb250ZW50ID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gPGEgaHJlZj0ibWFpbHRv
OnRlc3RAZXhhbXBsZS5jb20iPmVtYWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5D
b250cm9sbGVyLT5FbWFpbFRlc3QtPnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQg
PSAkY29udGVudDsKCQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgkJ
JGNvbnRlbnQgID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gJzsKCQkkY29udGVudCAu
PSAnPGEgaHJlZj0ibWFpbHRvOnRlc3RAZXhhbXBsZS5jb20sdGVzdDJAZXhhbXBsZS5jb20iPmVt
YWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
PnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQgPSAkY29udGVudDsKCQkkdGhpcy0+
YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgl9Ci8qKgogKiB0ZXN0TXVsdGlieXRl
IG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlv
biB0ZXN0TXVsdGlieXRlKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0
KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2Nh
bGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBl
eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICfZ
h9iw2Ycg2LHYs9in2YTYqSDYqNi52YbZiNin2YYg2LfZiNmK2YQg2YXYsdiz2YQg2YTZhNmF2LPY
qtmE2YUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBs
eUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUg
PSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVn
JzsKCgkJJHN1YmplY3QgPSAnPT9VVEYtOD9CPzJZZllzTm1ISU5peDJMUFlwOW1FMktrZzJLall1
ZG1HMllqWXA5bUdJTmkzMllqWml0bUVJTm1GMkxFPT89JyAuICJcclxuIiAuICcgPT9VVEYtOD9C
PzJMUFpoQ0RaaE5tRTJZWFlzOWlxMllUWmhRPT0/PSc7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
bWFpbFRlc3QtPnNlbmRBcyA9ICd0ZXh0JzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29u
dHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdl
JykpOwovLwkJcHJlZ19tYXRjaCgnL1N1YmplY3Q6ICguKilIZWFkZXI6L3MnLCAkdGhpcy0+Q29u
dHJvbGxlci0+U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICRtYXRjaGVz
KTsKLy8JCSR0aGlzLT5hc3NlcnRFcXVhbCh0cmltKCRtYXRjaGVzWzFdKSwgJHN1YmplY3QpOwoK
CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMgPSAnaHRtbCc7CgkJJHRoaXMt
PmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0
aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsKLy8JCXByZWdfbWF0Y2goJy9TdWJqZWN0OiAoLiop
SGVhZGVyOi9zJywgJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1h
aWwubWVzc2FnZScpLCAkbWF0Y2hlcyk7Ci8vCQkkdGhpcy0+YXNzZXJ0RXF1YWwodHJpbSgkbWF0
Y2hlc1sxXSksICRzdWJqZWN0KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2Vu
ZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7Ci8vCQlwcmVn
X21hdGNoKCcvU3ViamVjdDogKC4qKUhlYWRlcjovcycsICR0aGlzLT5Db250cm9sbGVyLT5TZXNz
aW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJG1hdGNoZXMpOwovLwkJJHRoaXMt
PmFzc2VydEVxdWFsKHRyaW0oJG1hdGNoZXNbMV0pLCAkc3ViamVjdCk7Cgl9Ci8qKgogKiB1bmRv
Y3VtZW50ZWQgZnVuY3Rpb24KICoKICogQHJldHVybiB2b2lkCiAqIEBhY2Nlc3MgcHVibGljCiAq
LwoJZnVuY3Rpb24gdGVzdFNlbmRBc0lzTm90SWdub3JlZElmQXR0YWNobWVudHNQcmVzZW50KCkg
ewoJCWlmICgkdGhpcy0+c2tpcElmKCFAZnNvY2tvcGVuKFNNVFBfU0VSVkVSLCAyNSksICclcyBO
byBTTVRQIHNlcnZlciBydW5uaW5nIG9uICcgLiBTTVRQX1NFUlZFUikpIHsKCQkJCQlyZXR1cm47
CgkJfQoJCQoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMt
PkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0
aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7
CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICdBdHRhY2htZW50IFRl
c3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBl
eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBu
dWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwkv
LydkZWJ1Zycgb3IgJ21haWwnIHdvdWxkIGZhaWwKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5hdHRhY2htZW50cyA9IGFycmF5KF9fRklMRV9fKTsKCQkkYm9keSA9ICc8cD5UaGlzIGlz
IHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlPC9wPic7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT5zZW5kKCRib2R5KSk7Ci8vCQkkbXNnID0gJHRoaXMtPkNvbnRyb2xs
ZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVzc2FnZScpOwovLwkJJHRoaXMtPmFz
c2VydE5vUGF0dGVybignL3RleHRcL3BsYWluLycsICRtc2cpOwovLwkJJHRoaXMtPmFzc2VydFBh
dHRlcm4oJy90ZXh0XC9odG1sLycsICRtc2cpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5zZW5kQXMgPSAndGV4dCc7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+c2VuZCgkYm9keSkpOwovLwkJJG1zZyA9ICR0aGlzLT5Db250cm9sbGVy
LT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKTsKLy8JCSR0aGlzLT5hc3Nl
cnRQYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9QYXR0
ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
dC0+c2VuZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnNlbmQoJGJvZHkpKTsKLy8JCSRtc2cgPSAkdGhpcy0+Q29udHJvbGxlci0+
U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyk7Ci8vCi8vCQkkdGhpcy0+YXNz
ZXJ0Tm9QYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9Q
YXR0ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKLy8JCSR0aGlzLT5hc3NlcnRQYXR0ZXJuKCcv
bXVsdGlwYXJ0XC9hbHRlcm5hdGl2ZS8nLCAkbXNnKTsKCX0KLyoqCiAqIHRlc3RSZXNldCBtZXRo
b2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVz
dFJlc2V0KCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRlbXBsYXRlID0gJ3Rl
c3RfdGVtcGxhdGUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Rlc3Qu
cmVjaXBpZW50QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5m
cm9tID0gJ3Rlc3Quc2VuZGVyQGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1h
aWxUZXN0LT5yZXBseVRvID0gJ3Rlc3QucmVwbHl0b0BleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
bnRyb2xsZXItPkVtYWlsVGVzdC0+cmV0dXJuID0gJ3Rlc3QucmV0dXJuQGV4YW1wbGUuY29tJzsK
CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5jYyA9IGFycmF5KCdjYzFAZXhhbXBsZS5j
b20nLCAnY2MyQGV4YW1wbGUuY29tJyk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
YmNjID0gYXJyYXkoJ2JjYzFAZXhhbXBsZS5jb20nLCAnYmNjMkBleGFtcGxlLmNvbScpOwoJCSR0
aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1YmplY3QgPSAnVGVzdCBzdWJqZWN0JzsKCQkk
dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zID0gJ1gtYWRkaXRp
b25hbC1oZWFkZXInOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0g
J3NtdHAnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydob3N0
J10gPSAnYmxhaCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+YXR0YWNobWVudHMg
PSBhcnJheSgnYXR0YWNobWVudDEnLCAnYXR0YWNobWVudDInKTsKCgkJJHRoaXMtPmFzc2VydEZh
bHNlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1Nob3VsZCBub3Qgd29yaycp
KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+cmVzZXQoKTsKCgkJJHRoaXMtPmFz
c2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUpOwoJCSR0aGlz
LT5hc3NlcnROdWxsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvKTsKCQkkdGhpcy0+
YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tKTsKCQkkdGhpcy0+
YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXBseVRvKTsKCQkkdGhp
cy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXR1cm4pOwoJCSR0
aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Y2MsIGFy
cmF5KCkpOwoJCSR0aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+YmNjLCBhcnJheSgpKTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxl
ci0+RW1haWxUZXN0LT5zdWJqZWN0KTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zKTsKCQkkdGhpcy0+YXNzZXJ0SWRlbnRp
Y2FsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmdldEhlYWRlcnMoKSwgYXJyYXkoKSk7
CgkJJHRoaXMtPmFzc2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Z2V0Qm91
bmRhcnkoKSk7CgkJJHRoaXMtPmFzc2VydElkZW50aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1h
aWxUZXN0LT5nZXRNZXNzYWdlKCksIGFycmF5KCkpOwoJCSR0aGlzLT5hc3NlcnROdWxsKCR0aGlz
LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7CgkJJHRoaXMtPmFzc2VydElkZW50
aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hdHRhY2htZW50cywgYXJyYXkoKSk7
Cgl9Ci8qKgogKiBvc0ZpeCBtZXRob2QKICoKICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAqIEBh
Y2Nlc3MgcHJpdmF0ZQogKiBAcmV0dXJuIHN0cmluZwogKi8KCWZ1bmN0aW9uIF9fb3NGaXgoJHN0
cmluZykgewoJCXJldHVybiBzdHJfcmVwbGFjZShhcnJheSgiXHJcbiIsICJcciIpLCAiXG4iLCAk
c3RyaW5nKTsKCX0KfQo/Pg==
--026a2bea167826bf111c47c4213d68b1--



   

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Priority: Blocker
>         Attachments: crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13167074#comment-13167074 ]

Maurizio Cucchiara commented on EMAIL-110:
------------------------------------------

Honestly, OOME are common in many situations and not necessarily related to commons. Sometimes increase the heap space fixes the problem.
But in order to detect your issue, I think it could be helpful if you provide some more details:
# what are you trying to achieve?
# could you provide a code chunk you are trying to execute?
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Priority: Blocker
>         Attachments: crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Updated] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stephen Kruger updated EMAIL-110:
---------------------------------

    Attachment: MailBug.zip

Small Eclipse / Maven project which reproduces the problem.
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13167119#comment-13167119 ]

Stephen Kruger commented on EMAIL-110:
--------------------------------------

The test mail I'm trying to send is way too  small to warrant increasing heap space. It's definitely a loop termination problem where it's looking for some termination chars which are not there (perhaps erroneously on the part of the test mail).

I've attached a simple Eclipse project (Maven based) which recreates the problem entirely.
My apologies if the issue turns out to be in one of the other dependencies - since you all use javax.mail it's hard to understand whose implementation is actually being used.
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13167148#comment-13167148 ]

Maurizio Cucchiara commented on EMAIL-110:
------------------------------------------

Good starting point, I can confirm the issue now.
But unfortunately, I can also confirm that the issue is not commons-related.
In fact reducing the dependencies list, it works as expected.
For the sake of completeness, I made a few changes:
{code}
mail.smtp.host: localhost (Utils.java)
mail.smtp.port: 25

To:mcucchiara@localhost (crashfix.eml)
{code}

Looks like it is abdera-related (removing that dependency make it works)
{code:xml|title:pom.xml}
<dependencies>                                
    <dependency>                              
        <groupId>junit</groupId>              
        <artifactId>junit</artifactId>        
        <version>4.10</version>                
        <scope>compile</scope>                
    </dependency>                              
                                               
    <dependency>                              
        <groupId>org.apache.commons</groupId>  
        <artifactId>commons-email</artifactId>
        <version>1.2</version>                
    </dependency>                              
</dependencies>                                
{code}

               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Updated] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stephen Kruger updated EMAIL-110:
---------------------------------


I did notice the failure went away without the Abdera dep.
But still - it's not right that including a dep can cause such a failure in commons-email, or are you saying that the javax.mail.internet.MimeMultipart where the failure happens is not the commons-email one?
Perhaps it's pulling in a Sun implementation of that class? Could you debug to see whose implementation is being used when using the Abdera dep? I specifically excluded the javax.mail inherited by Abdera ;
                        <exclusions>
                                <exclusion>
                                        <artifactId>mail</artifactId>
                                        <groupId>javax.mail</groupId>
                                </exclusion>
                        </exclusions>

thanks
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184121#comment-13184121 ]

Siegfried Goeschl commented on EMAIL-110:
-----------------------------------------

Checking the dependency tree using "mvn dependency:tree" allows you to see what is included where. Don't know Abdera but in the past there were known issues when "geronimo-spec-javamail" was included since it did not implement the whole functionality of javamail
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184124#comment-13184124 ]

Siegfried Goeschl commented on EMAIL-110:
-----------------------------------------

One more note - I checked the "crashfix.eml" using "http://tools.ietf.org/tools/msglint/" and "http://www.mimevalidator.net/" and both tools are not very happy. While I have never seen an email in the wild passing those tests I still think that something is wrong with the email
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Assignee: Siegfried Goeschl
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Issue Comment Edited] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184121#comment-13184121 ]

Siegfried Goeschl edited comment on EMAIL-110 at 1/11/12 3:23 PM:
------------------------------------------------------------------

Checking the dependency tree using "mvn dependency:tree" allows you to see what is included where. Don't know Abdera but in the past there were known issues when "geronimo-spec-javamail" was included since it did not implement the whole functionality of javamail.

Assuming that Abdera is actually Apache Abdera it includes

<dependency>
  <groupId>org.apache.geronimo.specs</groupId>
  <artifactId>geronimo-activation_1.1_spec</artifactId>
  <version>1.1</version>  
</dependency>

which could cause the problem

               
      was (Author: sgoeschl):
    Checking the dependency tree using "mvn dependency:tree" allows you to see what is included where. Don't know Abdera but in the past there were known issues when "geronimo-spec-javamail" was included since it did not implement the whole functionality of javamail
                 

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Assignee: Siegfried Goeschl
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184333#comment-13184333 ]

Thomas Pummer commented on EMAIL-110:
-------------------------------------

I've checked the RFC 822 http://www.ietf.org/rfc/rfc822.txt 
In appendix B.2 it is stated that the header has to be seperated from the content by a null line. The eml file given with this issue is missing this seperating line.
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Assignee: Siegfried Goeschl
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184396#comment-13184396 ]

Sebb commented on EMAIL-110:
----------------------------

The current pom no longer depends on abdera or geronimo specs; it depends on javamail and activation.
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Assignee: Siegfried Goeschl
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184464#comment-13184464 ]

Siegfried Goeschl commented on EMAIL-110:
-----------------------------------------

In order to avoid confusion

* commons-email depends on javamail and activation
* Stephan Kruger mentioned "Abdera" dependencies and it could be the Apache Abdera project which uses the geronimo libraries (see http://svn.apache.org/repos/asf/abdera/abdera2/pom.xml) and excludes javamail (see the Axis deps)
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Assignee: Siegfried Goeschl
>            Priority: Blocker
>         Attachments: MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Updated] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Pummer updated EMAIL-110:
--------------------------------

    Attachment: EMAIL-110.patch

New MimeMessageParser test to verify that it can parse the eml file without getting OOM.
Reproduced an other eml file with the same defect, tested with the Maven project given by Stephen Kruger to ensure that the OOM error occures with it too.

The eml file is corrupt, as mentioned in my comment above. So the MimeMessageParser cannot detect any attachment within it.
As an other example, Outlook Express cannot read it too. It shows the Attachment with a size of 0 Bytes
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Assignee: Siegfried Goeschl
>            Priority: Blocker
>         Attachments: EMAIL-110.patch, MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Issue Comment Edited] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13185526#comment-13185526 ]

Thomas Pummer edited comment on EMAIL-110 at 1/13/12 9:57 AM:
--------------------------------------------------------------

Added a Patch:
New MimeMessageParser test to verify that it can parse the eml file without getting OOM.
Reproduced an other eml file with the same defect, tested with the Maven project given by Stephen Kruger to ensure that the OOM error occures with it too.

The eml file is corrupt, as mentioned in my comment above. So the MimeMessageParser cannot detect any attachment within it.
As an other example, Outlook Express cannot read it too. It shows the Attachment with a size of 0 Bytes
               
      was (Author: thefake):
    New MimeMessageParser test to verify that it can parse the eml file without getting OOM.
Reproduced an other eml file with the same defect, tested with the Maven project given by Stephen Kruger to ensure that the OOM error occures with it too.

The eml file is corrupt, as mentioned in my comment above. So the MimeMessageParser cannot detect any attachment within it.
As an other example, Outlook Express cannot read it too. It shows the Attachment with a size of 0 Bytes
                 

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Assignee: Siegfried Goeschl
>            Priority: Blocker
>         Attachments: EMAIL-110.patch, MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Resolved] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Siegfried Goeschl resolved EMAIL-110.
-------------------------------------

    Resolution: Cannot Reproduce

Get no OutOfMemoryException and the mail message is actually invaslid
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Assignee: Siegfried Goeschl
>            Priority: Blocker
>         Attachments: EMAIL-110.patch, MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Closed] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Siegfried Goeschl closed EMAIL-110.
-----------------------------------


Applied patch to trunk
               

> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Assignee: Siegfried Goeschl
>            Priority: Blocker
>         Attachments: EMAIL-110.patch, MailBug.zip, crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> at java.util.Arrays.copyOf(Arrays.java:2786)
> at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> at javax.mail.Transport.send(Transport.java:76)
> at javax.mail.Transport.send(Transport.java:48)
> There are many public threads illustrating this same error, but they never pinpoint the code to Commons Email, I'm guessing I'm using the code in a way which exhibits this behaviour :
> http://stackoverflow.com/questions/3177092/uploading-to-blobstore-gives-a-java-heap-outofmemoryerror
> http://stackoverflow.com/questions/2994031/outofmemoryerror-trying-to-upload-to-blobstore-locally

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira