<?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>159639</bug_id>
          
          <creation_ts>2016-07-11 12:36:54 -0700</creation_ts>
          <short_desc>Possible null dereference under SourceBuffer::sourceBufferPrivateDidReceiveSample()</short_desc>
          <delta_ts>2017-03-31 15:48:57 -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>Media</component>
          <version>WebKit 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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209749</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-11 12:36:54 -0700</bug_when>
    <thetext>Possible null dereference under SourceBuffer::sourceBufferPrivateDidReceiveSample():
Thread[0] EXC_BAD_ACCESS (SIGSEGV) (KERN_INVALID_ADDRESS at 0x0000000000000000)
[  0] 0x00007fffa678ee35 WebCore`WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample(WebCore::SourceBufferPrivate*, WTF::PassRefPtr&lt;WebCore::MediaSample&gt;) + 2085 at SourceBuffer.cpp:1464:21
       1460	                // spliced audio frame.
       1461	                // FIXME: Add support for sample splicing.
       1462	
       1463	                // If track buffer contains video coded frames:
    -&gt; 1464	                if (trackBuffer.description-&gt;isVideo()) {
       1465	                    // 1.14.2.1 Let overlapped frame presentation timestamp equal the presentation timestamp
       1466	                    // of overlapped frame.
       1467	                    MediaTime overlappedFramePresentationTimestamp = overlappedFrame-&gt;presentationTime();
       1468	
    

     0x00007fffa678ee26:    testq %rbx, %rbx
     0x00007fffa678ee29:       je 0xe39e2e             ; &lt;+2078&gt; [inlined] WTF::RefPtr&lt;WebCore::MediaDescription&gt;::operator-&gt;() const at SourceBuffer.cpp:1464
     0x00007fffa678ee2b:     incl 0x8(%rbx)
     0x00007fffa678ee2e:     movq 0xb0(%r14), %rdi
 -&gt;  0x00007fffa678ee35:     movq (%rdi), %rax
     0x00007fffa678ee38:    callq *0x18(%rax)
     0x00007fffa678ee3b:    testb %al, %al
     0x00007fffa678ee3d:       je 0xe39ef9             ; &lt;+2281&gt; at SourceBuffer.cpp:1477
     0x00007fffa678ee43:     movq %r12, -0x300(%rbp)

[  1] 0x00007fffa6795c79 WebCore`WebCore::SourceBufferPrivateAVFObjC::processCodedFrame(int, opaqueCMSampleBuffer*, WTF::String const&amp;) + 217 at SourceBufferPrivateAVFObjC.mm:699:9
       695 	
       696 	    if (m_client) {
       697 	        RefPtr&lt;MediaSample&gt; mediaSample = MediaSampleAVFObjC::create(sampleBuffer, trackID);
       698 	        LOG(MediaSourceSamples, &quot;SourceBufferPrivateAVFObjC::processCodedFrame(%p) - sample(%s)&quot;, this, toString(*mediaSample).utf8().data());
    -&gt; 699 	        m_client-&gt;sourceBufferPrivateDidReceiveSample(this, WTFMove(mediaSample));
       700 	    }
       701 	
       702 	    return true;
       703 	}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209750</commentid>
    <comment_count>1</comment_count>
      <attachid>283333</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-11 12:38:08 -0700</bug_when>
    <thetext>Created attachment 283333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209751</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-07-11 12:39:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/27282945&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209861</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-11 16:24:24 -0700</bug_when>
    <thetext>Jer, it looks like you wrote this code, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209955</commentid>
    <comment_count>4</comment_count>
      <attachid>283333</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-07-11 23:33:12 -0700</bug_when>
    <thetext>Comment on attachment 283333
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Add a null check for trackBuffer.description before dereferencing as it seems

Test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210119</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-12 11:52:27 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 283333 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=283333&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Add a null check for trackBuffer.description before dereferencing as it seems
&gt; 
&gt; Test?

I&apos;ll talk to Jer as I have no idea how to exercise this code path. We have seen this crash in the wild but I have not been able to reproduce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221910</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-22 11:19:29 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Test?
&gt; 
&gt; I&apos;ll talk to Jer as I have no idea how to exercise this code path. We have
&gt; seen this crash in the wild but I have not been able to reproduce.

It&apos;s been a month -- any update?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293338</commentid>
    <comment_count>7</comment_count>
      <attachid>283333</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-31 15:48:54 -0700</bug_when>
    <thetext>Comment on attachment 283333
Patch

Clearing flags on attachment: 283333

Committed r214693: &lt;http://trac.webkit.org/changeset/214693&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293339</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-31 15:48:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283333</attachid>
            <date>2016-07-11 12:38:08 -0700</date>
            <delta_ts>2017-03-31 15:48:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159639-20160711123727.patch</filename>
            <type>text/plain</type>
            <size>1870</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI1NzUyZTQ4NjZlYzc0
MjhkNDUyYTk0ZWI5NTUyMTQ4NzFmNjA2NS4uYzcyZjNiODg3NzRmNmQyYjEyOWE0YWQ3NjNhYjMy
MTNlOTFmZGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTA3LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9zc2libGUgbnVsbCBkZXJl
ZmVyZW5jZSB1bmRlciBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
U2FtcGxlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG51bGwgY2hlY2sgZm9yIHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uIGJlZm9yZSBkZXJl
ZmVyZW5jaW5nIGFzIGl0IHNlZW1zCisgICAgICAgIGl0IGNhbiBiZSBudWxsLgorCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSk6CisK
IDIwMTYtMDctMTEgIE5hZWwgT3VlZHJhb2dvICA8bmFlbC5vdWVkcmFvZ29AY3JmLmNhbm9uLmZy
PgogCiAgICAgICAgIHRvTmF0aXZlIGZ1bmN0aW9ucyBpbiBKU0RPTUJpbmRpbmcuaCBzaG91bGQg
dGFrZSBhbiBFeGVjU3RhdGUgcmVmZXJlbmNlIGluc3RlYWQgb2YgcG9pbnRlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4
IGJkMWExMTBhZTY2MmI4Mjc4YThlNjlmN2IwMzY1ZDI0ZGRiNWNlYzUuLjIyZmIwODkxNjkwMGE2
ZDZhOWE2NmIwNjUxMWE0NjgyMTAxODM1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTE0ODgsNyArMTQ4OCw3IEBA
IHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShT
b3VyY2VCdWZmZXJQcml2YXRlKiwgUGFzCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBzYW1wbGUgc3BsaWNpbmcuCiAKICAgICAgICAgICAgICAgICAvLyBJZiB0cmFj
ayBidWZmZXIgY29udGFpbnMgdmlkZW8gY29kZWQgZnJhbWVzOgotICAgICAgICAgICAgICAgIGlm
ICh0cmFja0J1ZmZlci5kZXNjcmlwdGlvbi0+aXNWaWRlbygpKSB7CisgICAgICAgICAgICAgICAg
aWYgKHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uICYmIHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uLT5p
c1ZpZGVvKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gMS4xNC4yLjEgTGV0IG92ZXJsYXBw
ZWQgZnJhbWUgcHJlc2VudGF0aW9uIHRpbWVzdGFtcCBlcXVhbCB0aGUgcHJlc2VudGF0aW9uIHRp
bWVzdGFtcAogICAgICAgICAgICAgICAgICAgICAvLyBvZiBvdmVybGFwcGVkIGZyYW1lLgogICAg
ICAgICAgICAgICAgICAgICBNZWRpYVRpbWUgb3ZlcmxhcHBlZEZyYW1lUHJlc2VudGF0aW9uVGlt
ZXN0YW1wID0gb3ZlcmxhcHBlZEZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>