archive/iso9660: skip empty filenames
Aparently, libcdio sometimes returns empty filenames, causing MPD crashes. This shouldn't really happen, and I consider this a libcdio bug - but if it happens, people blame MPD, so let's add a check. Closes https://github.com/MusicPlayerDaemon/MPD/issues/776
This commit is contained in:
		
							
								
								
									
										2
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,4 +1,6 @@
 | 
			
		||||
ver 0.21.21 (not yet released)
 | 
			
		||||
* archive
 | 
			
		||||
  - iso9660: skip empty file names to work around libcdio bug
 | 
			
		||||
* decoder
 | 
			
		||||
  - gme: ignore empty tags
 | 
			
		||||
* output
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,7 @@
 | 
			
		||||
#include "input/InputStream.hxx"
 | 
			
		||||
#include "fs/Path.hxx"
 | 
			
		||||
#include "util/RuntimeError.hxx"
 | 
			
		||||
#include "util/StringCompare.hxx"
 | 
			
		||||
 | 
			
		||||
#include <cdio/iso9660.h>
 | 
			
		||||
 | 
			
		||||
@@ -93,7 +94,9 @@ Iso9660ArchiveFile::Visit(char *path, size_t length, size_t capacity,
 | 
			
		||||
		auto *statbuf = (iso9660_stat_t *)
 | 
			
		||||
			_cdio_list_node_data(entnode);
 | 
			
		||||
		const char *filename = statbuf->filename;
 | 
			
		||||
		if (PathTraitsUTF8::IsSpecialFilename(filename))
 | 
			
		||||
		if (StringIsEmpty(filename) ||
 | 
			
		||||
		    PathTraitsUTF8::IsSpecialFilename(filename))
 | 
			
		||||
			/* skip empty names (libcdio bug?) */
 | 
			
		||||
			/* skip special names like "." and ".." */
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user