* gnu/packages/patches/gst-libav-64channels-stack-corruption.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/gstreamer.scm (gst-libav)[source]: Use it.
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Fix a stack corruption when handling files with more than 64 audio
 | |
| channels:
 | |
| 
 | |
| https://gstreamer.freedesktop.org/security/sa-2021-0005.html
 | |
| 
 | |
| Patch copied from upstream source repository:
 | |
| 
 | |
| https://gitlab.freedesktop.org/gstreamer/gst-libav/-/commit/dcea8baa14a5fc3b796d876baaf2f238546ba2b1
 | |
| 
 | |
| diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c
 | |
| index b5be4bb7a5f2712f78383da9319754a8849e3307..be22f22cf5c7c7b22b13e44b10999adaacbcca2b 100644
 | |
| --- a/ext/libav/gstavcodecmap.c
 | |
| +++ b/ext/libav/gstavcodecmap.c
 | |
| @@ -102,7 +102,7 @@ gst_ffmpeg_channel_layout_to_gst (guint64 channel_layout, gint channels,
 | |
|    guint nchannels = 0;
 | |
|    gboolean none_layout = FALSE;
 | |
|  
 | |
| -  if (channel_layout == 0) {
 | |
| +  if (channel_layout == 0 || channels > 64) {
 | |
|      nchannels = channels;
 | |
|      none_layout = TRUE;
 | |
|    } else {
 | |
| @@ -163,7 +163,7 @@ gst_ffmpeg_channel_layout_to_gst (guint64 channel_layout, gint channels,
 | |
|      } else {
 | |
|        guint i;
 | |
|  
 | |
| -      for (i = 0; i < nchannels; i++)
 | |
| +      for (i = 0; i < nchannels && i < 64; i++)
 | |
|          pos[i] = GST_AUDIO_CHANNEL_POSITION_NONE;
 | |
|      }
 | |
|    }
 |