html: fix strcpy bug in convert_query_hexchar
The source and destination strings in strcpy() may not overlap. Instead, use memmove(), which allows overlap. This fixes test t0104, where 'url=foo%2bbar/tree' was being parsed improperly. Signed-off-by: Mark Lodato <lodatom@gmail.com>
此提交包含在:
		
							
								
								
									
										9
									
								
								html.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								html.c
									
									
									
									
									
								
							| @@ -240,19 +240,20 @@ int hextoint(char c) | ||||
|  | ||||
| char *convert_query_hexchar(char *txt) | ||||
| { | ||||
| 	int d1, d2; | ||||
| 	if (strlen(txt) < 3) { | ||||
| 	int d1, d2, n; | ||||
| 	n = strlen(txt); | ||||
| 	if (n < 3) { | ||||
| 		*txt = '\0'; | ||||
| 		return txt-1; | ||||
| 	} | ||||
| 	d1 = hextoint(*(txt+1)); | ||||
| 	d2 = hextoint(*(txt+2)); | ||||
| 	if (d1<0 || d2<0) { | ||||
| 		strcpy(txt, txt+3); | ||||
| 		memmove(txt, txt+3, n-3); | ||||
| 		return txt-1; | ||||
| 	} else { | ||||
| 		*txt = d1 * 16 + d2; | ||||
| 		strcpy(txt+1, txt+3); | ||||
| 		memmove(txt+1, txt+3, n-2); | ||||
| 		return txt; | ||||
| 	} | ||||
| } | ||||
|   | ||||
		新增問題並參考
	
	封鎖使用者
	 Mark Lodato
					Mark Lodato