func: static void CVE_2012_3377_VULN_Ogg_DecodePacket( demux_t logical_stream_t ogg_packet *p_oggpacket ) if ( ! p_oggpacket -> bytes )  if ( p_oggpacket -> bytes >= 7 && ! memcmp ( p_oggpacket -> packet , "Annodex" , 7 ) )  if ( p_oggpacket -> bytes >= 7 && ! memcmp ( p_oggpacket -> packet , "AnxData" , 7 ) )  if ( p_stream -> fmt . i_codec == VLC_CODEC_SUBT && p_oggpacket -> packet [ 0 ] & PACKET_TYPE_BITS )  if ( p_stream -> b_force_backup )  bool b_xiph ; p_stream -> i_packets_backup ++; switch ( p_stream -> fmt . i_codec )  if ( p_stream -> i_packets_backup == 3 )  p_stream -> b_force_backup = 0; b_xiph = true; if ( ! p_stream -> fmt . audio . i_rate && p_stream -> i_packets_backup == 2 )  p_stream -> b_force_backup = 0; if ( p_stream -> fmt . audio . i_rate )  p_stream -> b_force_backup = 0; if ( p_oggpacket -> bytes >= 9 )  p_oggpacket -> packet += 9; p_oggpacket -> bytes -= 9; b_xiph = false; if ( p_stream -> i_packets_backup == p_stream -> i_kate_num_headers )  p_stream -> b_force_backup = 0; b_xiph = true; p_stream -> b_force_backup = 0; b_xiph = false; if ( ! b_xiph )  p_stream -> i_headers += p_oggpacket -> bytes; p_stream -> p_headers = realloc ( p_stream -> p_headers , p_stream -> i_headers ); if ( p_stream -> p_headers )  p_stream -> i_headers = 0; p_stream -> p_headers = NULL; if ( xiph_AppendHeaders ( & p_stream -> i_headers , & p_stream -> p_headers , p_oggpacket -> bytes , p_oggpacket -> packet ) )  p_stream -> i_headers = 0; p_stream -> p_headers = NULL; if ( p_stream -> i_headers > 0 )  if ( ! p_stream -> b_force_backup )  free ( p_stream -> fmt . p_extra ); 