picture_pool: factorize the code to clone a picture for Wait/Get
[vlc.git] / modules / access / dcp / dcpdecrypt.cpp
index 4590c62..0531b3d 100644 (file)
@@ -99,13 +99,13 @@ int KDM::Parse()
     msg_Dbg( this->p_demux, "parsing KDM..." );
 
     /* read first node and check if it is a KDM */
-    if( ! ( ( XML_READER_STARTELEM == XmlFile::ReadNextNode( this->p_xmlReader, s_node ) ) && ( s_node == s_root_node ) ) )
+    if( ! ( ( XML_READER_STARTELEM == XmlFile::ReadNextNode( this->p_demux, this->p_xmlReader, s_node ) ) && ( s_node == s_root_node ) ) )
     {
         msg_Err( this->p_demux, "not a valid XML KDM" );
         goto error;
     }
 
-    while( ( type = XmlFile::ReadNextNode( this->p_xmlReader, s_node ) ) > 0 )
+    while( ( type = XmlFile::ReadNextNode( this->p_demux, this->p_xmlReader, s_node ) ) > 0 )
         if( type == XML_READER_STARTELEM && s_node == "AuthenticatedPrivate" )
         {
             _p_key_list = new (nothrow) AESKeyList;
@@ -146,12 +146,12 @@ int KDM::ParsePrivate( const string _s_node, int _i_type )
         goto error;
 
     /* loop on EncryptedKey nodes */
-    while( ( i_type = XmlFile::ReadNextNode( this->p_xmlReader, s_node ) ) > 0 )
+    while( ( i_type = XmlFile::ReadNextNode( this->p_demux, this->p_xmlReader, s_node ) ) > 0 )
     {
         switch( i_type )
         {
             case XML_READER_STARTELEM:
-                if( s_node != "enc:EncryptedKey" )
+                if( s_node != "EncryptedKey" )
                     goto error;
                 p_key = new (nothrow) AESKey( this->p_demux );
                 if( unlikely( p_key == NULL ) )
@@ -192,17 +192,17 @@ int AESKey::Parse( xml_reader_t *p_xml_reader, string _s_node, int _i_type)
 
     if( _i_type != XML_READER_STARTELEM)
         goto error;
-    if( _s_node != "enc:EncryptedKey" )
+    if( _s_node != "EncryptedKey" )
         goto error;
 
-    while( ( i_type = XmlFile::ReadNextNode( p_xml_reader, s_node ) ) > 0 )
+    while( ( i_type = XmlFile::ReadNextNode( this->p_demux, p_xml_reader, s_node ) ) > 0 )
     {
         switch( i_type )
         {
             case XML_READER_STARTELEM:
-                if( s_node == "enc:CipherValue" )
+                if( s_node == "CipherValue" )
                 {
-                    if( XmlFile::ReadEndNode( p_xml_reader, s_node, i_type, s_value ) )
+                    if( XmlFile::ReadEndNode( this->p_demux, p_xml_reader, s_node, i_type, s_value ) )
                         goto error;
                     if( this->decryptRSA( s_value ) )
                         return VLC_EGENERIC;
@@ -327,7 +327,7 @@ int AESKey::decryptRSA( string s_cipher_text_b64 )
             if( this->extractInfo( ps_plain_text, false ) )
                 goto end;
             break;
-        case -1:
+        case static_cast<size_t>( -1 ):
             msg_Err( this->p_demux, "could not decrypt" );
             goto end;
         default:
@@ -523,9 +523,8 @@ error:
 int RSAKey::readDER( unsigned char const* ps_data_der, size_t length )
 {
     struct tag_info tag_inf;
-    gcry_mpi_t key_params[8];
+    gcry_mpi_t key_params[8] = { NULL };
     gcry_error_t err;
-    int i;
 
     /* parse the ASN1 structure */
     if( parseTag( &ps_data_der, &length, &tag_inf )
@@ -539,7 +538,7 @@ int RSAKey::readDER( unsigned char const* ps_data_der, size_t length )
     ps_data_der += tag_inf.length;
     length -= tag_inf.length;
 
-    for( i = 0; i < 8; i++ )
+    for( int i = 0; i < 8; i++ )
     {
         if( parseTag( &ps_data_der, &length, &tag_inf )
                 || tag_inf.tag != TAG_INTEGER || tag_inf.class_ || tag_inf.cons || tag_inf.ndef )
@@ -575,7 +574,7 @@ int RSAKey::readDER( unsigned char const* ps_data_der, size_t length )
     }
 
     /* clear data */
-    for( i = 0; i < 8; i++ )
+    for( int i = 0; i < 8; i++ )
         gcry_mpi_release( key_params[i] );
     return VLC_SUCCESS;
 
@@ -583,7 +582,7 @@ bad_asn1:
     msg_Err( this->p_demux, "could not parse ASN1 structure; key might be corrupted" );
 
 error:
-    for( i = 0; i < 8; i++ )
+    for( int i = 0; i < 8; i++ )
         gcry_mpi_release( key_params[i] );
     return VLC_EGENERIC;
 }