<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>239840</bug_id>
          
          <creation_ts>2022-04-27 23:22:26 -0700</creation_ts>
          <short_desc>REGRESSION (iOS 15.4): Worker csp with script-src &apos;strict-dynamic&apos; and script-src-elem blocks importScripts that should pass</short_desc>
          <delta_ts>2022-06-23 12:03:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>Safari 15</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julian M">webkit</reporter>
          <assigned_to name="Patrick Griffis">pgriffis</assigned_to>
          <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>mkwst</cc>
    
    <cc>pgriffis</cc>
    
    <cc>seongil.wi</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865065</commentid>
    <comment_count>0</comment_count>
    <who name="Julian M">webkit</who>
    <bug_when>2022-04-27 23:22:26 -0700</bug_when>
    <thetext>Hi team,

I have encountered an issue in Safari 15.4 on iOS and macOS where a worker loaded with a CSP header calls importScripts to bring in a local script and fails unexpectedly. I was serving a worker script with the same CSP as used elsewhere in an application and encountered this issue.

I managed to boil it down to a CSP that fails but it&apos;s not obvious to me why, I think it&apos;s a bug but apologies if not.

A worker loaded with the following CSP fails to load a script via importScripts:
default-src &apos;self&apos;; script-src &apos;strict-dynamic&apos;; script-src-elem &apos;self&apos;;

Removing either &quot;&apos;strict-dynamic&apos;&quot; OR &quot;script-src-elem &apos;self&apos;;&quot; resolves the issue, e.g. either:
default-src &apos;self&apos;; script-src &apos;strict-dynamic&apos;;
default-src &apos;self&apos;; script-src-elem &apos;self&apos;;


I have a small test case that loads a worker that calls importScripts, none of these cases fail in Chrome/Firefox/Opera/Edge latest.

https://www.tests.massivedev.com/safari-worker-csp/?csp=1 - this fails in Safari 15.4
https://www.tests.massivedev.com/safari-worker-csp/?csp=2
https://www.tests.massivedev.com/safari-worker-csp/?csp=3
https://www.tests.massivedev.com/safari-worker-csp/?csp=4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865438</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-29 08:31:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/92525351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865439</commentid>
    <comment_count>2</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-04-29 08:33:40 -0700</bug_when>
    <thetext>Hi! Thank you for filing this! I just want to confirm I understand - this behavior worked as expected on previous versions of iOS and now fails on 15.4?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865440</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-29 08:33:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/92525435&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865567</commentid>
    <comment_count>4</comment_count>
    <who name="Julian M">webkit</who>
    <bug_when>2022-04-29 16:03:14 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #2)
&gt; Hi! Thank you for filing this! I just want to confirm I understand - this
&gt; behavior worked as expected on previous versions of iOS and now fails on
&gt; 15.4?

Yep! I&apos;m guessing based on the introduction of &apos;strict-dynamic&apos; support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865665</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-04-30 10:44:30 -0700</bug_when>
    <thetext>Didn&apos;t write a test for it yet and not sure this is the correct directive for everything that calls this method but the most direct fix:

diff --git a/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp b/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp
index 7d73ac8bfb97..c7466c36f437 100644
--- a/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp
+++ b/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp
@@ -408,8 +408,7 @@ const ContentSecurityPolicyDirective* ContentSecurityPolicyDirectiveList::violat
 
 const ContentSecurityPolicyDirective* ContentSecurityPolicyDirectiveList::violatedDirectiveForScript(const URL&amp; url, bool didReceiveRedirectResponse, const Vector&lt;ResourceCryptographicDigest&gt;&amp; subResourceIntegrityDigests, const String&amp; nonce) const
 {
-    auto* operativeDirective = this-&gt;operativeDirective(m_scriptSrc.get(), ContentSecurityPolicyDirectiveNames::scriptSrcElem);
+    auto* operativeDirective = this-&gt;operativeDirective(m_scriptSrcElem.get(), ContentSecurityPolicyDirectiveNames::scriptSrcElem);

     if (!operativeDirective
         || operativeDirective-&gt;containsAllHashes(subResourceIntegrityDigests)
         || checkNonce(operativeDirective, nonce)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866460</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-05-04 08:25:53 -0700</bug_when>
    <thetext>(In reply to Patrick Griffis from comment #5)
&gt; Didn&apos;t write a test for it yet and not sure this is the correct directive
&gt; for everything that calls this method but the most direct fix:
&gt; 
&gt; diff --git a/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp
&gt; b/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp
&gt; index 7d73ac8bfb97..c7466c36f437 100644
&gt; --- a/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp
&gt; +++ b/Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp
&gt; @@ -408,8 +408,7 @@ const ContentSecurityPolicyDirective*
&gt; ContentSecurityPolicyDirectiveList::violat
&gt;  
&gt;  const ContentSecurityPolicyDirective*
&gt; ContentSecurityPolicyDirectiveList::violatedDirectiveForScript(const URL&amp;
&gt; url, bool didReceiveRedirectResponse, const
&gt; Vector&lt;ResourceCryptographicDigest&gt;&amp; subResourceIntegrityDigests, const
&gt; String&amp; nonce) const
&gt;  {
&gt; -    auto* operativeDirective = this-&gt;operativeDirective(m_scriptSrc.get(),
&gt; ContentSecurityPolicyDirectiveNames::scriptSrcElem);
&gt; +    auto* operativeDirective =
&gt; this-&gt;operativeDirective(m_scriptSrcElem.get(),
&gt; ContentSecurityPolicyDirectiveNames::scriptSrcElem);
&gt; 
&gt;      if (!operativeDirective
&gt;          ||
&gt; operativeDirective-&gt;containsAllHashes(subResourceIntegrityDigests)
&gt;          || checkNonce(operativeDirective, nonce)

I think this will be fine because violatedDirectiveForScript is called for non-inline script sources which should all fall under script-src-elem. We will need to use operativeDirectiveScript to ensure we fall back to script-src if script-src-elem is not present.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866983</commentid>
    <comment_count>7</comment_count>
      <attachid>458912</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-05-05 14:04:22 -0700</bug_when>
    <thetext>Created attachment 458912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867416</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-06 18:39:21 -0700</bug_when>
    <thetext>Committed r293940 (250386@main): &lt;https://commits.webkit.org/250386@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458912.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1877749</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-06-23 12:03:43 -0700</bug_when>
    <thetext>*** Bug 241337 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458912</attachid>
            <date>2022-05-05 14:04:22 -0700</date>
            <delta_ts>2022-05-06 18:39:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239840-20220505160421.patch</filename>
            <type>text/plain</type>
            <size>4554</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRiNmU3NzQ5NTYzMTRh
YTc5ZjMwYmU3M2Q2YTRiODY4OTFmZDU2NC4uNzY2OGFmOTE0YmM2OTU5NjQxZjVkYTg4NmFkZWNl
Y2UzOWE3ZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA1LTA1ICBQYXRy
aWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENTUDogRml4IHNj
cmlwdC1zcmMtZWxlbSBwb2xpY2llcyBpbiB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk4NDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9zY3JpcHQtc3JjLXN0cmljdC1keW5hbWljLWFuZC1zY3JpcHQtc3Jj
LWVsZW0uaHRtbAorCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclNjcmlwdCBjb25zdCk6CisKIDIwMjIt
MDUtMDUgIFBhdHJpY2sgR3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
Q1NQOiBGaXggaW5jb3JyZWN0IGJsb2NrZWQtdXJpIGZvciBpbmxpbmUgc2NyaXB0cyBhbmQgc3Ry
aWN0LWR5bmFtaWMgcG9saWNpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKaW5kZXggN2Q3
M2FjOGJmYjk3NDEyN2Y2YWRiNzlkMWNkNWY1ZjZjYjgxNTJlZi4uMDdjNDgwMTNhODk0ZTAwYTc1
MjI5NmQ4YjM4ZmViY2I1NTM1ZDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKQEAg
LTQwOCw3ICs0MDgsNyBAQCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdAogCiBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0KGNvbnN0IFVSTCYgdXJsLCBib29sIGRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBWZWN0b3I8UmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0PiYgc3ViUmVzb3VyY2VJbnRlZ3JpdHlEaWdlc3RzLCBjb25zdCBTdHJpbmcmIG5vbmNl
KSBjb25zdAogewotICAgIGF1dG8qIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2
ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXM6OnNjcmlwdFNyY0VsZW0pOworICAgIGF1dG8qIG9wZXJhdGl2ZURpcmVjdGl2ZSA9
IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZVNjcmlwdChtX3NjcmlwdFNyY0VsZW0uZ2V0KCksIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmNFbGVtKTsKIAogICAg
IGlmICghb3BlcmF0aXZlRGlyZWN0aXZlCiAgICAgICAgIHx8IG9wZXJhdGl2ZURpcmVjdGl2ZS0+
Y29udGFpbnNBbGxIYXNoZXMoc3ViUmVzb3VyY2VJbnRlZ3JpdHlEaWdlc3RzKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFi
NTIyNzA0MWFhY2UwZjEzZDA1YmY1ODQyOTg5NTlkNThiNjk5MGQuLjg1ZTBhZDA5YjM2Mzk4MjNh
NzRiOGRmYmRlMWMzYTliODRiY2E4YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wNS0w
NSAgUGF0cmljayBHcmlmZmlzICA8cGdyaWZmaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1A6
IEZpeCBzY3JpcHQtc3JjLWVsZW0gcG9saWNpZXMgaW4gd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODQwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NQOiBGaXggc2NyaXB0LXNyYy1lbGVt
IHBvbGljaWVzIGluIHdvcmtlcnMKKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3NjcmlwdC1zcmMtc3RyaWN0LWR5bmFtaWMtYW5kLXNjcmlwdC1z
cmMtZWxlbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3NjcmlwdC1zcmMtc3RyaWN0LWR5bmFtaWMtYW5kLXNj
cmlwdC1zcmMtZWxlbS5odG1sOiBBZGRlZC4KKwogMjAyMi0wNS0wNSAgUGF0cmljayBHcmlmZmlz
ICA8cGdyaWZmaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBDU1A6IEZpeCBpbmNvcnJlY3QgYmxv
Y2tlZC11cmkgZm9yIGlubGluZSBzY3JpcHRzIGFuZCBzdHJpY3QtZHluYW1pYyBwb2xpY2llcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvc2NyaXB0LXNyYy1zdHJpY3QtZHluYW1pYy1hbmQtc2NyaXB0LXNyYy1lbGVtLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3NjcmlwdC1zcmMtc3RyaWN0LWR5bmFtaWMtYW5kLXNjcmlwdC1zcmMtZWxlbS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU2NTE5NjM3MTQ2YjVmMWMzN2M4NzFmZWE4YzEzMWQy
ZDc1NjcxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3NjcmlwdC1zcmMtc3RyaWN0LWR5bmFtaWMtYW5kLXNj
cmlwdC1zcmMtZWxlbS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitBTEVSVDogaW1wb3J0
U2NyaXB0cyBhbGxvd2VkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3NjcmlwdC1zcmMtc3RyaWN0LWR5bmFtaWMtYW5k
LXNjcmlwdC1zcmMtZWxlbS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvc2NyaXB0LXNyYy1zdHJpY3QtZHluYW1pYy1hbmQtc2NyaXB0
LXNyYy1lbGVtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk5ODkyMmIxOTFiY2U5YTQ5MzM5M2IxMjMwNGYz
YzJiMjlkOTk1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3NjcmlwdC1zcmMtc3RyaWN0LWR5bmFtaWMtYW5k
LXNjcmlwdC1zcmMtZWxlbS5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordHJ5IHsKKyAgICB2YXIg
d29ya2VyID0gbmV3IFdvcmtlcignaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLnB5P3R5cGU9aW1wb3J0c2NyaXB0cyZj
c3A9JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KCJz
Y3JpcHQtc3JjICdzdHJpY3QtZHluYW1pYyc7IHNjcmlwdC1zcmMtZWxlbSBsb2NhbGhvc3Q6ODAw
MCIpKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAg
IGFsZXJ0KGV2ZW50LmRhdGEpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9OworfSBjYXRjaCAoZSkgewor
ICAgIGFsZXJ0KGUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>