]> git.sesse.net Git - vlc/commitdiff
Revert "RTMP: factorization"
authorRémi Duraffort <ivoire@videolan.org>
Wed, 18 Nov 2009 11:41:36 +0000 (12:41 +0100)
committerRémi Duraffort <ivoire@videolan.org>
Wed, 18 Nov 2009 11:41:36 +0000 (12:41 +0100)
This commit add a deref-after-free bug.

This reverts commit 25cbae45cda4530fc9968edf067fd0f59ee9d8fe.

modules/access/rtmp/access.c

index 24df9a466320e8751bcec4dfbefcc9d408310951..d68ec00f70150b31b14bee0cdeb4dcf038f0fec3 100644 (file)
@@ -404,15 +404,19 @@ static ssize_t Read( access_t *p_access, uint8_t *p_buffer, size_t i_len )
             tmp_buffer = rtmp_encode_packet( p_sys->p_thread, rtmp_packet );
 
             i_ret = net_Write( p_sys->p_thread, p_sys->p_thread->fd, NULL, tmp_buffer, rtmp_packet->length_encoded );
-            free( rtmp_packet->body->body );
-            free( rtmp_packet->body );
-            free( rtmp_packet );
-            free( tmp_buffer );
             if( i_ret != rtmp_packet->length_encoded )
             {
+                free( rtmp_packet->body->body );
+                free( rtmp_packet->body );
+                free( rtmp_packet );
+                free( tmp_buffer );
                 msg_Err( p_access, "failed send publish start" );
                 return -1;
             }
+            free( rtmp_packet->body->body );
+            free( rtmp_packet->body );
+            free( rtmp_packet );
+            free( tmp_buffer );
         }
 
         p_access->info.i_pos += i_len_tmp;
@@ -422,16 +426,19 @@ static ssize_t Read( access_t *p_access, uint8_t *p_buffer, size_t i_len )
         tmp_buffer = rtmp_encode_packet( p_sys->p_thread, rtmp_packet );
  
         i_ret = net_Write( p_sys->p_thread, p_sys->p_thread->fd, NULL, tmp_buffer, rtmp_packet->length_encoded );
-        free( rtmp_packet->body->body );
-        free( rtmp_packet->body );
-        free( rtmp_packet );
-        free( tmp_buffer );
-
         if( i_ret != rtmp_packet->length_encoded )
         {
+            free( rtmp_packet->body->body );
+            free( rtmp_packet->body );
+            free( rtmp_packet );
+            free( tmp_buffer );
             msg_Err( p_access, "failed send bytes read" );
             return -1;
         }
+        free( rtmp_packet->body->body );
+        free( rtmp_packet->body );
+        free( rtmp_packet );
+        free( tmp_buffer );
     }
 
     return i_len_tmp;