<?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>73896</bug_id>
          
          <creation_ts>2011-12-06 02:03:52 -0800</creation_ts>
          <short_desc>REGRESSION(r101713): KURL(ParsedURLStringTag, const String&amp; url) breaks with null strings</short_desc>
          <delta_ts>2011-12-06 02:22:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>73874</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515740</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-06 02:03:52 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/101713 changed the behaviour of calling
KURL::KURL(ParsedURLStringTag, const String&amp; url) with a null string, causing

     ASSERT(url == m_string);

to fail.

Example backtrace:


Program received signal SIGSEGV, Segmentation fault.
0x00007ffff3863fca in WebCore::KURL::KURL (this=0x7fffffffc370, url=...) at /home/shausman/src/webkit/trunk/Source/WebCore/platform/KURL.cpp:334
334         ASSERT(url == m_string);
(gdb) bt
#0  0x00007ffff3863fca in WebCore::KURL::KURL (this=0x7fffffffc370, url=...) at /home/shausman/src/webkit/trunk/Source/WebCore/platform/KURL.cpp:334
#1  0x00007ffff7988f22 in CoreIPC::ArgumentCoder&lt;WebCore::ResourceResponse&gt;::decode (decoder=0x7db120, resourceResponse=...) at /home/shausman/src/webkit/trunk/Source/WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp:74
#2  0x00007ffff795f18b in CoreIPC::ArgumentDecoder::decode&lt;WebCore::ResourceResponse&gt; (this=0x7db120, t=...) at ../../../../Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.h:89
#3  0x00007ffff7b6cc12 in CoreIPC::Arguments4&lt;unsigned long, unsigned long, WebCore::ResourceRequest, WebCore::ResourceResponse&gt;::decode (decoder=0x7db120, result=...) at ../../../../Source/WebKit2/Platform/CoreIPC/Arguments.h:203
#4  0x00007ffff7b6bf52 in CoreIPC::ArgumentCoder&lt;CoreIPC::Arguments4&lt;unsigned long, unsigned long, WebCore::ResourceRequest, WebCore::ResourceResponse&gt; &gt;::decode (decoder=0x7db120, t=...)
    at ../../../../Source/WebKit2/Platform/CoreIPC/ArgumentCoder.h:44
#5  0x00007ffff7b69dfd in CoreIPC::ArgumentDecoder::decode&lt;CoreIPC::Arguments4&lt;unsigned long, unsigned long, WebCore::ResourceRequest, WebCore::ResourceResponse&gt; &gt; (this=0x7db120, t=...)
    at ../../../../Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.h:89
#6  0x00007ffff7b66234 in CoreIPC::handleMessage&lt;Messages::WebPageProxy::DidSendRequestForResource, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long, unsigned long, WebCore::ResourceRequest const&amp;, WebCore::ResourceResponse const&amp;)&gt; (argumentDecoder=0x7db120, object=0x7fff9c001760, function=


This patch in the original change


-                m_string = originalString ? *originalString : url;
+                m_string = !originalString.isNull() ? originalString : url;

now causes m_string to be assigned to url instead of originalString in this case.
url was allocated in KURL::parse(const String&amp; string) and is non-null, causing

    KURL::m_string to be an _empty_ string (with impl pointer) and originalString remaining
the null string passed to the KURL constructor. Hence the failing assertion.

It seems that the fix is to just use

    m_string = originalString;

instead of the !originalString.isNull() ? originalString : url; snippet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515744</commentid>
    <comment_count>1</comment_count>
      <attachid>118010</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-06 02:08:41 -0800</bug_when>
    <thetext>Created attachment 118010
REGRESSION(r101713): KURL(ParsedURLStringTag, const String&amp; url) breaks with null strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515747</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-06 02:20:43 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 73874 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515750</commentid>
    <comment_count>3</comment_count>
      <attachid>118010</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-06 02:21:37 -0800</bug_when>
    <thetext>Comment on attachment 118010
REGRESSION(r101713): KURL(ParsedURLStringTag, const String&amp; url) breaks with null strings

This is a bad idea, you can have an url, and no originalString.
73874 isn&apos;t great either but that will do for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515752</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-06 02:22:26 -0800</bug_when>
    <thetext>By the way, 73874 miss a test. It would be nice if you have one! :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118010</attachid>
            <date>2011-12-06 02:08:41 -0800</date>
            <delta_ts>2011-12-06 02:21:36 -0800</delta_ts>
            <desc>REGRESSION(r101713): KURL(ParsedURLStringTag, const String&amp; url) breaks with null strings</desc>
            <filename>bug-73896-20111206110841.patch</filename>
            <type>text/plain</type>
            <size>3287</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA5ZjIxMjliMzcwZjc2
MjVmN2EyZTI3MWM3OGY5NThlOGVkZThmNS4uNjc0ODJhOWE4ZjBiNmUwZWY2MjA5NzU5YWY0ZDhk
ODg0ZWFjN2I4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTEyLTA2ICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSRUdSRVNT
SU9OKHIxMDE3MTMpOiBLVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwp
IGJyZWFrcyB3aXRoIG51bGwgc3RyaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM4OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBcyBpbnRlbmRlZCBpbiByMTAxNzEzLCBzZXQgbV9zdHJpbmcgdG8g
dGhlIG9yaWdpbmFsIGlucHV0IHN0cmluZyBpZiB0aGUgdXJsIGlzIHZhbGlkIGFuZCBub3QKKyAg
ICAgICAgdG8gdGhlIHRlbXBvcmFyeSBjaGFyIGJ1ZmZlci4gRm9yIG51bGwgaW5wdXQgc3RyaW5n
cyB0aGF0IGNoYXIgYnVmZmVyIGlzIF9ub3RfIG51bGwsIGNhdXNpbmcKKyAgICAgICAgbV9zdHJp
bmcgdG8gYmUgYW4gZW1wdHkgc3RyaW5nLiBUaGF0IGluIHR1cm4gY2F1c2VzIEFTU0VSVChtX3N0
cmluZyA9PSBvcmlnaW5hbFN0cmluZykgdG8gZmFpbCwKKyAgICAgICAgYmVjYXVzZSB0aGUgZm9y
bWVyIGlzIGVtcHR5IGFuZCB0aGUgbGF0dGVyIGlzIG51bGwuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9LVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnBhcnNlKToKKwogMjAxMS0xMi0w
NSAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtN
dXRhdGlvbk9ic2VydmVyc10gU3VwcG9ydCAnYXR0cmlidXRlcycgbXV0YXRpb24gcmVjb3JkcyBm
b3IgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKaW5kZXgg
MDI2YzI1Nzc4M2IwMGU1NDYzZThiZTgzMzA4YTg5MWVmN2Y5ZTc5Yi4uNzM3OWI3ZDUzZmRjMzYz
OGRkYjk1NjBjNTJiOWNkZDVmNzU0Y2ViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKQEAg
LTExMTUsMTQgKzExMTUsMTQgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxTdHJpbmcpCiB7CiAgICAgaWYgKCF1cmwgfHwgdXJsWzBdID09
ICdcMCcpIHsKICAgICAgICAgLy8gdmFsaWQgVVJMIG11c3QgYmUgbm9uLWVtcHR5Ci0gICAgICAg
IG1fc3RyaW5nID0gIW9yaWdpbmFsU3RyaW5nLmlzTnVsbCgpID8gb3JpZ2luYWxTdHJpbmcgOiB1
cmw7CisgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmc7CiAgICAgICAgIGludmFsaWRh
dGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghaXNTY2hlbWVGaXJzdENo
YXIodXJsWzBdKSkgewogICAgICAgICAvLyBzY2hlbWUgbXVzdCBzdGFydCB3aXRoIGFuIGFscGhh
YmV0aWMgY2hhcmFjdGVyCi0gICAgICAgIG1fc3RyaW5nID0gIW9yaWdpbmFsU3RyaW5nLmlzTnVs
bCgpID8gb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxT
dHJpbmc7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTExMzIsNyArMTEzMiw3IEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsU3RyaW5nKQogICAgICAgICBzY2hlbWVFbmQrKzsKIAogICAgIGlm
ICh1cmxbc2NoZW1lRW5kXSAhPSAnOicpIHsKLSAgICAgICAgbV9zdHJpbmcgPSAhb3JpZ2luYWxT
dHJpbmcuaXNOdWxsKCkgPyBvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgbV9zdHJpbmcg
PSBvcmlnaW5hbFN0cmluZzsKICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFy
KiB1cmwsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxTdHJpbmcpCiAgICAgICAgICAgICBob3N0U3Rh
cnQgPSB1c2VyU3RhcnQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBpbnZhbGlk
IGNoYXJhY3RlcgotICAgICAgICAgICAgbV9zdHJpbmcgPSAhb3JpZ2luYWxTdHJpbmcuaXNOdWxs
KCkgPyBvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2lu
YWxTdHJpbmc7CiAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTEyMTQsNyArMTIxNCw3IEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3Qg
Y2hhciogdXJsLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsU3RyaW5nKQogICAgICAgICAgICAgICAg
IGhvc3RFbmQrKzsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIGludmFs
aWQgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgbV9zdHJpbmcgPSAhb3JpZ2luYWxTdHJpbmcu
aXNOdWxsKCkgPyBvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgICAgICAgICBtX3N0cmlu
ZyA9IG9yaWdpbmFsU3RyaW5nOwogICAgICAgICAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xMjM1LDcgKzEyMzUsNyBAQCB2
b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0
cmluZykKIAogICAgICAgICBpZiAoIWlzUGF0aFNlZ21lbnRFbmRDaGFyKHVybFtwb3J0RW5kXSkp
IHsKICAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCi0gICAgICAgICAgICBtX3N0cmlu
ZyA9ICFvcmlnaW5hbFN0cmluZy5pc051bGwoKSA/IG9yaWdpbmFsU3RyaW5nIDogdXJsOworICAg
ICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZzsKICAgICAgICAgICAgIGludmFsaWRh
dGUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="117656"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>