mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Fixed decoding filename characters in case there are not two hex digits after the '#'
This commit is contained in:
		| @@ -588,6 +588,8 @@ Helmut Auer <vdr@helmutauer.de> | ||||
|  is a recording going on or about to start, and the user insists in shutting down now | ||||
|  for suggesting to make the channel entry timeout configurable | ||||
|  for a patch that was used to implement the SVDRP command REMO | ||||
|  for reporting a possible crash in decoding filename characters in case there are | ||||
|  not two hex digits after the '#' | ||||
|  | ||||
| Jeremy Hall <jhall@UU.NET> | ||||
|  for fixing an incomplete initialization of the filter parameters in eit.c | ||||
|   | ||||
							
								
								
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -5516,3 +5516,5 @@ Video Disk Recorder Revision History | ||||
|   of their Makefiles. | ||||
| - Fixed a crash if no fonts are found (thanks to Mario Ivankovits and Clemens | ||||
|   Kirchgatterer). | ||||
| - Fixed decoding filename characters in case there are not two hex digits after | ||||
|   the '#' (reported by Helmut Auer). | ||||
|   | ||||
							
								
								
									
										11
									
								
								recording.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								recording.c
									
									
									
									
									
								
							| @@ -4,10 +4,11 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: recording.c 1.156 2007/10/14 10:21:54 kls Exp $ | ||||
|  * $Id: recording.c 1.157 2007/11/04 11:17:43 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #include "recording.h" | ||||
| #include <ctype.h> | ||||
| #include <dirent.h> | ||||
| #include <errno.h> | ||||
| #include <fcntl.h> | ||||
| @@ -448,12 +449,14 @@ char *ExchangeChars(char *s, bool ToFileSystem) | ||||
|                 case '/': *p = '~'; break; | ||||
|                 // encoded characters: | ||||
|                 case '#': { | ||||
|                      if (strlen(p) > 2) { | ||||
|                      if (strlen(p) > 2 && isxdigit(*(p + 1)) && isxdigit(*(p + 2))) { | ||||
|                         char buf[3]; | ||||
|                         sprintf(buf, "%c%c", *(p + 1), *(p + 2)); | ||||
|                         unsigned char c = strtol(buf, NULL, 16); | ||||
|                         *p = c; | ||||
|                         memmove(p + 1, p + 3, strlen(p) - 2); | ||||
|                         if (c) { | ||||
|                            *p = c; | ||||
|                            memmove(p + 1, p + 3, strlen(p) - 2); | ||||
|                            } | ||||
|                         } | ||||
|                      } | ||||
|                      break; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user