<?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>111219</bug_id>
          
          <creation_ts>2013-03-01 14:08:24 -0800</creation_ts>
          <short_desc>REGRESSION (r125809): CFStrings created via StringImpl::createCFString()  might reference freed memory when Objective-C garbage collection is enabled</short_desc>
          <delta_ts>2013-03-01 14:41:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</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="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>benjamin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>845488</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-03-01 14:08:24 -0800</bug_when>
    <thetext>CFStrings created via StringImpl::createCFString()  might reference freed memory when Objective-C garbage collection is enabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845496</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-03-01 14:15:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/12265868&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845497</commentid>
    <comment_count>2</comment_count>
      <attachid>191035</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-03-01 14:18:00 -0800</bug_when>
    <thetext>Created attachment 191035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845503</commentid>
    <comment_count>3</comment_count>
      <attachid>191035</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-01 14:24:39 -0800</bug_when>
    <thetext>Comment on attachment 191035
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=191035&amp;action=review

sorry about that!

&gt; Source/WebCore/ChangeLog:17
&gt; +        However, custom allocators aren&apos;t supported when Objective-C garbage
&gt; +        collection is enabled, so in this case we use the default CF allocator.
&gt; +        Since we can&apos;t guarantee the lifetime of the StringImpl in this case,
&gt; +        we should just fall back to copying the string.

You can add rXXXX stupidly broke this by not checking if StringWrapperCFAllocator::allocator returns something.

&gt; Source/WebCore/platform/text/cf/StringImplCF.cpp:38
&gt; +#if PLATFORM(MAC)

&amp;&amp; !PLATFORM(IOS)

&gt; Source/WebCore/platform/text/cf/StringImplCF.cpp:-123
&gt; -#if PLATFORM(MAC)
&gt;          // Since garbage collection isn&apos;t compatible with custom allocators, don&apos;t use this at all when garbage collection is active.
&gt; -        if (objc_collectingEnabled())
&gt; +        if (garbageCollectionEnabled())
&gt;              return 0;
&gt; -#endif

You should get rid of this and just ASSERT(!garbageCollectionEnabled)

The comment:
   // Since garbage collection isn&apos;t compatible with custom allocators, don&apos;t use this at all when garbage collection is active.
should be put before garbageCollectionEnabled() in StringImpl::createCFString() IMHO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845504</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-01 14:24:59 -0800</bug_when>
    <thetext>+ remove the static as asked on IRC :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845505</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-01 14:26:51 -0800</bug_when>
    <thetext>oh, + &quot;inline&quot; for static bool garbageCollectionEnabled() since the static can go away :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845517</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-03-01 14:41:40 -0800</bug_when>
    <thetext>Committed r144507: &lt;http://trac.webkit.org/changeset/144507&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191035</attachid>
            <date>2013-03-01 14:18:00 -0800</date>
            <delta_ts>2013-03-01 14:24:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111219-20130301141417.patch</filename>
            <type>text/plain</type>
            <size>3473</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNlN2I3NWIyYWFlMTVk
NDIxMzZkMDQ3MGJmNzhhOGE0NjliZGUzOC4uOGNkNzBjNGYwNTNmMDg5MjhjMWFhZjcxMDVlYjc3
Y2M2NDcyNzJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAzLTAxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBDRlN0cmluZ3MgY3JlYXRlZCB2
aWEgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKSAgbWlnaHQgcmVmZXJlbmNlIGZyZWVkIG1l
bW9yeSB3aGVuIE9iamVjdGl2ZS1DIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBlbmFibGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEyMTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJpbmdJbXBsOjpj
cmVhdGVDRlN0cmluZygpIHVzZXMgQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoKSBpbgor
ICAgICAgICBvcmRlciB0byBjcmVhdGUgQ0ZTdHJpbmcgd2l0aG91dCBtYWtpbmcgYW4gdW5uZWNl
c3NhcnkgY29weS4gSW4gb3JkZXIKKyAgICAgICAgdG8gZW5zdXJlIHRoYXQgdGhlIHRoZSBTdHJp
bmdJbXBsJ3MgYmFja2luZyBidWZmZXIgaXNuJ3QgZGVhbGxvY2F0ZWQKKyAgICAgICAgd2hpbGUg
dGhlIENGU3RyaW5nIGlzIHN0aWxsIGFsaXZlLCB3ZSB1c2UgYSBjdXN0b20gQ0ZBbGxvY2F0b3Ig
dG8KKyAgICAgICAgcmVmL2RlcmVmIHRoZSBTdHJpbmdJbXBsIGF0IHRoZSBhcHByb3ByaWF0ZSB0
aW1lcy4KKworICAgICAgICBIb3dldmVyLCBjdXN0b20gYWxsb2NhdG9ycyBhcmVuJ3Qgc3VwcG9y
dGVkIHdoZW4gT2JqZWN0aXZlLUMgZ2FyYmFnZQorICAgICAgICBjb2xsZWN0aW9uIGlzIGVuYWJs
ZWQsIHNvIGluIHRoaXMgY2FzZSB3ZSB1c2UgdGhlIGRlZmF1bHQgQ0YgYWxsb2NhdG9yLgorICAg
ICAgICBTaW5jZSB3ZSBjYW4ndCBndWFyYW50ZWUgdGhlIGxpZmV0aW1lIG9mIHRoZSBTdHJpbmdJ
bXBsIGluIHRoaXMgY2FzZSwKKyAgICAgICAgd2Ugc2hvdWxkIGp1c3QgZmFsbCBiYWNrIHRvIGNv
cHlpbmcgdGhlIHN0cmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcDoKKyAgICAgICAgKGdhcmJhZ2VDb2xsZWN0aW9uRW5hYmxlZCk6IE1vdmVkIHRoZSBj
aGVjayBmb3Igd2hldGhlciBnYXJiYWdlCisgICAgICAgIGNvbGxlY3Rpb24gaXMgZW5hYmxlZCBm
cm9tIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3JlYXRlKCkgdG8gaGVyZS4KKyAgICAgICAg
KFdURjo6U3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjcmVhdGUpOiBDYWxsIGdhcmJhZ2VDb2xs
ZWN0aW9uRW5hYmxlZCgpLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmlu
Zyk6IElmIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBlbmFibGVkLAorICAgICAgICBjYWxsIHRoZSB2
YXJpYW50cyBvZiBDRlN0cmluZ0NyZWF0ZSB0aGF0IGNvcHkgdGhlIHN0cmluZy4KKwogMjAxMy0w
Mi0yOCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3Rh
bGUgRnJhbWVTZWxlY3Rpb24gaW4gcmVtb3ZlZCBpZnJhbWUgY2F1c2VzIGNyYXNoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggMDA4
NDkzYmY2MTIyNzk3OGUwNWI3NzNhM2Q0NTZhMjk1ZjkwOTY4OS4uMjYwYWI3M2RkYzdmNTNiMzgx
OGMzMGIxZjUyZTQyM2E4NDQ4ODhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMzMsNiArMzMsMTYgQEAKICNpbmNsdWRlIDxv
YmpjL29iamMtYXV0by5oPgogI2VuZGlmCiAKK3N0YXRpYyBib29sIGdhcmJhZ2VDb2xsZWN0aW9u
RW5hYmxlZCgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBib29sIGdhcmJhZ2VD
b2xsZWN0aW9uRW5hYmxlZCA9IG9iamNfY29sbGVjdGluZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4g
Z2FyYmFnZUNvbGxlY3Rpb25FbmFibGVkOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKwogbmFtZXNwYWNlIFdURiB7CiAKIG5hbWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxv
Y2F0b3IgewpAQCAtMTE2LDExICsxMjYsOSBAQCBuYW1lc3BhY2UgU3RyaW5nV3JhcHBlckNGQWxs
b2NhdG9yIHsKIAogICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBjcmVhdGUoKQogICAgIHsKLSNp
ZiBQTEFURk9STShNQUMpCiAgICAgICAgIC8vIFNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc24n
dCBjb21wYXRpYmxlIHdpdGggY3VzdG9tIGFsbG9jYXRvcnMsIGRvbid0IHVzZSB0aGlzIGF0IGFs
bCB3aGVuIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBhY3RpdmUuCi0gICAgICAgIGlmIChvYmpjX2Nv
bGxlY3RpbmdFbmFibGVkKCkpCisgICAgICAgIGlmIChnYXJiYWdlQ29sbGVjdGlvbkVuYWJsZWQo
KSkKICAgICAgICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAgICAgICAgIENGQWxsb2NhdG9yQ29u
dGV4dCBjb250ZXh0ID0geyAwLCAwLCByZXRhaW4sIHJlbGVhc2UsIGNvcHlEZXNjcmlwdGlvbiwg
YWxsb2NhdGUsIHJlYWxsb2NhdGUsIGRlYWxsb2NhdGUsIHByZWZlcnJlZFNpemUgfTsKICAgICAg
ICAgcmV0dXJuIENGQWxsb2NhdG9yQ3JlYXRlKDAsICZjb250ZXh0KTsKICAgICB9CkBAIC0xMzUs
NyArMTQzLDcgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAKIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewotICAgIGlm
ICghbV9sZW5ndGggfHwgIWlzTWFpblRocmVhZCgpKSB7CisgICAgaWYgKCFtX2xlbmd0aCB8fCAh
aXNNYWluVGhyZWFkKCkgfHwgZ2FyYmFnZUNvbGxlY3Rpb25FbmFibGVkKCkpIHsKICAgICAgICAg
aWYgKGlzOEJpdCgpKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNoYXJhY3RlcnM4KCkp
LCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNlKSk7CiAgICAgICAg
IHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCkpOwo=
</data>
<flag name="review"
          id="211889"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>