Changeset 767

Show
Ignore:
Timestamp:
01/15/08 10:56:32 (8 months ago)
Author:
astrange
Message:

Fix a possible null-pointer dereference.
If an AAC track is invalid (missing CodecPrivate?), use the default AAC-LC descriptor for now.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/perian-1.1/MatroskaCodecIDs.cpp

    r741 r767  
    427427} 
    428428 
     429static const unsigned char aac_lc_vos[] = {0x11, 0x90}; 
     430 
    429431static Handle CreateEsdsExt(KaxTrackEntry *tr_entry, bool audio) 
    430432{ 
     
    436438    uint8_t *vosBuf = codecPrivate ? codecPrivate->GetBuffer() : NULL; 
    437439        size_t esdsLen; 
     440         
     441        if (!vosBuf) { // minimal AAC-LC descriptor 
     442                vosBuf = (uint8_t*)aac_lc_vos; 
     443                vosLen = 2; 
     444        } 
    438445 
    439446        Handle esdsExt = NewHandleClear(4); 
  • branches/perian-1.1/MatroskaImportPrivate.cpp

    r766 r767  
    967967        bool replaceSoundDesc = false; 
    968968         
    969         switch ((*desc)->dataFormat) { 
    970                 case kAudioFormatAC3: 
    971                 case kAudioFormatAC3MS: 
    972                         replaceSoundDesc = parse_ac3_bitstream(&asbd, &acl, block.GetBuffer(0).Buffer(), block.GetFrameSize(0)); 
    973                         break; 
     969        if (desc) { 
     970                switch ((*desc)->dataFormat) { 
     971                        case kAudioFormatAC3: 
     972                        case kAudioFormatAC3MS: 
     973                                replaceSoundDesc = parse_ac3_bitstream(&asbd, &acl, block.GetBuffer(0).Buffer(), block.GetFrameSize(0)); 
     974                                break; 
     975                } 
    974976        } 
    975977