<?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>144809</bug_id>
          
          <creation_ts>2015-05-08 13:10:04 -0700</creation_ts>
          <short_desc>Fix possible race condition in BitmapImage::cacheFrame()</short_desc>
          <delta_ts>2015-05-14 09:02:13 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <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="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1093273</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-08 13:10:04 -0700</bug_when>
    <thetext>In BitmapImage::cacheFrame(), we should check the frame metadata loading status before, asking the image source to provide information about its metadata. A crash was reported on iOS with the following call stack:

CGImageSourceCopyPropertiesAtIndex()
WebCore::ImageSource::frameDurationAtIndex(unsigned long)
WebCore::BitmapImage::cacheFrameInfo(unsigned long)

The crash happens in CGImageSourceCopyPropertiesAtIndex() when it is called from ImageSource::frameDurationAtIndex(). But before BitmapImage::cacheFrameInfo() calls ImageSource::frameDurationAtIndex(), it calls ImageSource::orientationAtIndex() which calls CGImageSourceCopyPropertiesAtIndex() with exactly the same parameters. Two possible scenarios may have happened here:

1) The frame metadata was not complete when CGImageSourceCopyPropertiesAtIndex() was called the first time so it returns null and we fall back to the default value case in ImageSource::orientationAtIndex(). But in the second time, the image metadata loading was in progress but not complete, so we end up reading from still not allocated memory buffer.
2) The frame metadata was complete when CGImageSourceCopyPropertiesAtIndex() was called the first time but the frame itself was freed when the second call was made, so end up reading from a freed memory block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093274</commentid>
    <comment_count>1</comment_count>
      <attachid>252738</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-08 13:13:22 -0700</bug_when>
    <thetext>Created attachment 252738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093279</commentid>
    <comment_count>2</comment_count>
      <attachid>252741</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-08 13:24:16 -0700</bug_when>
    <thetext>Created attachment 252741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093313</commentid>
    <comment_count>3</comment_count>
      <attachid>252749</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-08 14:55:02 -0700</bug_when>
    <thetext>Created attachment 252749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094814</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-05-14 09:02:13 -0700</bug_when>
    <thetext>The crash I suspected to be the result of this race condition has been fixed in one of the MacOS/iOS components. So this is not an issue anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252738</attachid>
            <date>2015-05-08 13:13:22 -0700</date>
            <delta_ts>2015-05-08 13:24:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144809-20150508131204.patch</filename>
            <type>text/plain</type>
            <size>4211</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA1LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHBvc3Np
YmxlIHJhY2UgY29uZGl0aW9uIGluIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDgwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEJpdG1hcEltYWdlOjpj
YWNoZUZyYW1lKCksIHdlIHNob3VsZCBjaGVjayB0aGUgZnJhbWUgbWV0YWRhdGEgbG9hZGluZwor
ICAgICAgICBzdGF0dXMgYmVmb3JlLCBhc2tpbmcgdGhlIGltYWdlIHNvdXJjZSB0byBwcm92aWRl
IGluZm9ybWF0aW9uIGFib3V0IGl0cworICAgICAgICBtZXRhZGF0YS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lTWV0YWRhdGFJc0NvbXBsZXRl
QXRJbmRleCk6CisKIDIwMTUtMDUtMDggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2hlcyBpbiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpjbG9zZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAkocmV2aXNpb24gMTgzOTU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTkgKzIwMCwyMSBAQCB2
b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRlCiAgICAgICAgICAgICBjaGVj
a0ZvclNvbGlkQ29sb3IoKTsKICAgICB9CiAKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRh
dGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9mcmFtZXNb
aW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9pc0Nv
bXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Ci0KLSAgICBp
ZiAocmVwZXRpdGlvbkNvdW50KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9m
cmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChp
bmRleCk7Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1fc291cmNlLmZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
ID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwot
Ci0gICAgY29uc3QgSW50U2l6ZSBmcmFtZVNpemUoaW5kZXggPyBtX3NvdXJjZS5mcmFtZVNpemVB
dEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG1fc2l6ZSk7Ci0gICAgaWYgKCFzdWJz
YW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3NpemUpCi0gICAgICAgIG1faGFzVW5pZm9y
bUZyYW1lU2l6ZSA9IGZhbHNlOworICAgIGlmIChtX3NvdXJjZS5mcmFtZU1ldGFkYXRhSXNDb21w
bGV0ZUF0SW5kZXgoaW5kZXgpKSB7CisgICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0
aW9uID0gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyAgICAgICAgbV9mcmFt
ZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhd
Lm1faXNDb21wbGV0ZSA9IG1fc291cmNlLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwor
CisgICAgICAgIGlmIChyZXBldGl0aW9uQ291bnQoZmFsc2UpICE9IGNBbmltYXRpb25Ob25lKQor
ICAgICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1
cmF0aW9uQXRJbmRleChpbmRleCk7CisKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxw
aGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fZnJh
bWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCk7CisKKyAgICAgICAgY29uc3QgSW50U2l6ZSBmcmFtZVNpemUo
aW5kZXggPyBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
KSA6IG1fc2l6ZSk7CisgICAgICAgIGlmICghc3Vic2FtcGxpbmdMZXZlbCAmJiBmcmFtZVNpemUg
IT0gbV9zaXplKQorICAgICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7Cisg
ICAgfQogCiAgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7CiAgICAgICAgIGludCBk
ZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAkocmV2aXNpb24gMTgzOTU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw3IEBAIHB1YmxpYzoK
IAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFt
ZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0
dWFsbHkgdXNlZCBhbnkgYWxwaGEuCisgICAgYm9vbCBmcmFtZU1ldGFkYXRhSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsg
Ly8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGlzIGNvbXBsZXRlbHkgZGVjb2RlZC4KICAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElG
IGltYWdlIG9yaWVudGF0aW9uCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCShyZXZpc2lvbiAxODM5NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzg3LDYgKzM4NywxMiBAQCBDR0ltYWdlUmVmIEltYWdlU291cmNl
OjpjcmVhdGVGcmFtZUF0SW5kCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlLmxlYWtSZWYoKTsKIH0K
IAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVNZXRhZGF0YUlzQ29tcGxldGVBdEluZGV4KHNpemVf
dCBpbmRleCkKK3sKKyAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKKyAgICByZXR1cm4gQ0dJbWFn
ZVNvdXJjZUdldFN0YXR1c0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCkgPiBrQ0dJbWFnZVN0YXR1
c1JlYWRpbmdIZWFkZXI7Cit9CisKIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIEFTU0VSVChmcmFtZUNvdW50KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252741</attachid>
            <date>2015-05-08 13:24:16 -0700</date>
            <delta_ts>2015-05-08 14:55:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144809-20150508132258.patch</filename>
            <type>text/plain</type>
            <size>4808</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA1LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHBvc3Np
YmxlIHJhY2UgY29uZGl0aW9uIGluIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDgwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEJpdG1hcEltYWdlOjpj
YWNoZUZyYW1lKCksIHdlIHNob3VsZCBjaGVjayB0aGUgZnJhbWUgbWV0YWRhdGEgbG9hZGluZwor
ICAgICAgICBzdGF0dXMgYmVmb3JlLCBhc2tpbmcgdGhlIGltYWdlIHNvdXJjZSB0byBwcm92aWRl
IGluZm9ybWF0aW9uIGFib3V0IGl0cworICAgICAgICBtZXRhZGF0YS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lTWV0YWRhdGFJc0NvbXBsZXRl
QXRJbmRleCk6CisKIDIwMTUtMDUtMDggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2hlcyBpbiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpjbG9zZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAkocmV2aXNpb24gMTgzOTU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTkgKzIwMCwyMSBAQCB2
b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRlCiAgICAgICAgICAgICBjaGVj
a0ZvclNvbGlkQ29sb3IoKTsKICAgICB9CiAKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRh
dGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9mcmFtZXNb
aW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9pc0Nv
bXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Ci0KLSAgICBp
ZiAocmVwZXRpdGlvbkNvdW50KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9m
cmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChp
bmRleCk7Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1fc291cmNlLmZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
ID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwot
Ci0gICAgY29uc3QgSW50U2l6ZSBmcmFtZVNpemUoaW5kZXggPyBtX3NvdXJjZS5mcmFtZVNpemVB
dEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG1fc2l6ZSk7Ci0gICAgaWYgKCFzdWJz
YW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3NpemUpCi0gICAgICAgIG1faGFzVW5pZm9y
bUZyYW1lU2l6ZSA9IGZhbHNlOworICAgIGlmIChtX3NvdXJjZS5mcmFtZU1ldGFkYXRhSXNDb21w
bGV0ZUF0SW5kZXgoaW5kZXgpKSB7CisgICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0
aW9uID0gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyAgICAgICAgbV9mcmFt
ZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhd
Lm1faXNDb21wbGV0ZSA9IG1fc291cmNlLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwor
CisgICAgICAgIGlmIChyZXBldGl0aW9uQ291bnQoZmFsc2UpICE9IGNBbmltYXRpb25Ob25lKQor
ICAgICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1
cmF0aW9uQXRJbmRleChpbmRleCk7CisKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxw
aGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fZnJh
bWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCk7CisKKyAgICAgICAgY29uc3QgSW50U2l6ZSBmcmFtZVNpemUo
aW5kZXggPyBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
KSA6IG1fc2l6ZSk7CisgICAgICAgIGlmICghc3Vic2FtcGxpbmdMZXZlbCAmJiBmcmFtZVNpemUg
IT0gbV9zaXplKQorICAgICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7Cisg
ICAgfQogCiAgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7CiAgICAgICAgIGludCBk
ZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAJKHJldmlzaW9uIDE4Mzk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNywxMSBAQCBi
b29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4CiAgICAgcmV0dXJuIGJ1ZmZl
ciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CiB9CiAK
K2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lTWV0YWRhdGFJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qg
aW5kZXgpCit7CisgICAgcmV0dXJuIG1fZGVjb2RlcjsKK30KKwogdW5zaWduZWQgSW1hZ2VTb3Vy
Y2U6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29u
c3QKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkocmV2aXNpb24gMTgzOTU5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMTUwLDYgKzE1MCw3IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBX
aGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCisgICAgYm9v
bCBmcmFtZU1ldGFkYXRhSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1l
SXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGlz
IGNvbXBsZXRlbHkgZGVjb2RlZC4KICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0cuY3BwCShyZXZpc2lvbiAxODM5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg3LDYgKzM4Nywx
MiBAQCBDR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kCiAgICAgcmV0dXJu
IG1hc2tlZEltYWdlLmxlYWtSZWYoKTsKIH0KIAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVNZXRh
ZGF0YUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQoZnJhbWVD
b3VudCgpKTsKKyAgICByZXR1cm4gQ0dJbWFnZVNvdXJjZUdldFN0YXR1c0F0SW5kZXgobV9kZWNv
ZGVyLCBpbmRleCkgPiBrQ0dJbWFnZVN0YXR1c1JlYWRpbmdIZWFkZXI7Cit9CisKIGJvb2wgSW1h
Z2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIEFT
U0VSVChmcmFtZUNvdW50KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252749</attachid>
            <date>2015-05-08 14:55:02 -0700</date>
            <delta_ts>2015-05-08 14:55:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144809-20150508145344.patch</filename>
            <type>text/plain</type>
            <size>4802</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA1LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHBvc3Np
YmxlIHJhY2UgY29uZGl0aW9uIGluIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDgwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEJpdG1hcEltYWdlOjpj
YWNoZUZyYW1lKCksIHdlIHNob3VsZCBjaGVjayB0aGUgZnJhbWUgbWV0YWRhdGEgbG9hZGluZwor
ICAgICAgICBzdGF0dXMgYmVmb3JlLCBhc2tpbmcgdGhlIGltYWdlIHNvdXJjZSB0byBwcm92aWRl
IGluZm9ybWF0aW9uIGFib3V0IGl0cworICAgICAgICBtZXRhZGF0YS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lTWV0YWRhdGFJc0NvbXBsZXRl
QXRJbmRleCk6CisKIDIwMTUtMDUtMDggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2hlcyBpbiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpjbG9zZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAkocmV2aXNpb24gMTgzOTU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTkgKzIwMCwyMSBAQCB2
b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRlCiAgICAgICAgICAgICBjaGVj
a0ZvclNvbGlkQ29sb3IoKTsKICAgICB9CiAKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRh
dGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9mcmFtZXNb
aW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9pc0Nv
bXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Ci0KLSAgICBp
ZiAocmVwZXRpdGlvbkNvdW50KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9m
cmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChp
bmRleCk7Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1fc291cmNlLmZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
ID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwot
Ci0gICAgY29uc3QgSW50U2l6ZSBmcmFtZVNpemUoaW5kZXggPyBtX3NvdXJjZS5mcmFtZVNpemVB
dEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG1fc2l6ZSk7Ci0gICAgaWYgKCFzdWJz
YW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3NpemUpCi0gICAgICAgIG1faGFzVW5pZm9y
bUZyYW1lU2l6ZSA9IGZhbHNlOworICAgIGlmIChtX3NvdXJjZS5mcmFtZU1ldGFkYXRhSXNDb21w
bGV0ZUF0SW5kZXgoaW5kZXgpKSB7CisgICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0
aW9uID0gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyAgICAgICAgbV9mcmFt
ZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhd
Lm1faXNDb21wbGV0ZSA9IG1fc291cmNlLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwor
CisgICAgICAgIGlmIChyZXBldGl0aW9uQ291bnQoZmFsc2UpICE9IGNBbmltYXRpb25Ob25lKQor
ICAgICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1
cmF0aW9uQXRJbmRleChpbmRleCk7CisKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxw
aGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fZnJh
bWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCk7CisKKyAgICAgICAgY29uc3QgSW50U2l6ZSBmcmFtZVNpemUo
aW5kZXggPyBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
KSA6IG1fc2l6ZSk7CisgICAgICAgIGlmICghc3Vic2FtcGxpbmdMZXZlbCAmJiBmcmFtZVNpemUg
IT0gbV9zaXplKQorICAgICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7Cisg
ICAgfQogCiAgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7CiAgICAgICAgIGludCBk
ZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAJKHJldmlzaW9uIDE4Mzk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNywxMSBAQCBi
b29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4CiAgICAgcmV0dXJuIGJ1ZmZl
ciAmJiBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CiB9CiAK
K2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lTWV0YWRhdGFJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qp
Cit7CisgICAgcmV0dXJuIG1fZGVjb2RlcjsKK30KKwogdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fZGVjb2RlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkocmV2aXNpb24gMTgzOTU5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTUw
LDYgKzE1MCw3IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNp
emVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVy
IG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCisgICAgYm9vbCBmcmFt
ZU1ldGFkYXRhSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGlzIGNvbXBs
ZXRlbHkgZGVjb2RlZC4KICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChz
aXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
CShyZXZpc2lvbiAxODM5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg3LDYgKzM4NywxMiBAQCBD
R0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kCiAgICAgcmV0dXJuIG1hc2tl
ZEltYWdlLmxlYWtSZWYoKTsKIH0KIAorYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVNZXRhZGF0YUlz
Q29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQoZnJhbWVDb3VudCgp
KTsKKyAgICByZXR1cm4gQ0dJbWFnZVNvdXJjZUdldFN0YXR1c0F0SW5kZXgobV9kZWNvZGVyLCBp
bmRleCkgPiBrQ0dJbWFnZVN0YXR1c1JlYWRpbmdIZWFkZXI7Cit9CisKIGJvb2wgSW1hZ2VTb3Vy
Y2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIEFTU0VSVChm
cmFtZUNvdW50KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>