You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avformat/utils: make av_url_split search for hashmark as well to separate hostname
RFC 3986 states that the generic syntax uses the slash ("/"), question mark
("?"), and number sign ("#") characters to delimit components that are
significant to the generic parser's hierarchical interpretation of an
identifier.
Signed-off-by: Marton Balint <cus@passwd.hu>
			
			
This commit is contained in:
		| @@ -75,6 +75,7 @@ int main(void) | ||||
|     test2("https://1l-lh.a.net/i/1LIVE_HDS@179577/master.m3u8"); | ||||
|     test2("ftp://u:p%2B%2F2@ftp.pbt.com/ExportHD.mpg"); | ||||
|     test2("https://key.dns.com?key_id=2&model_id=12345&&access_key="); | ||||
|     test2("http://example.com#tag"); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|   | ||||
| @@ -4786,7 +4786,7 @@ void av_url_split(char *proto, int proto_size, | ||||
|                   char *hostname, int hostname_size, | ||||
|                   int *port_ptr, char *path, int path_size, const char *url) | ||||
| { | ||||
|     const char *p, *ls, *ls2, *at, *at2, *col, *brk; | ||||
|     const char *p, *ls, *at, *at2, *col, *brk; | ||||
|  | ||||
|     if (port_ptr) | ||||
|         *port_ptr = -1; | ||||
| @@ -4814,16 +4814,8 @@ void av_url_split(char *proto, int proto_size, | ||||
|     } | ||||
|  | ||||
|     /* separate path from hostname */ | ||||
|     ls = strchr(p, '/'); | ||||
|     ls2 = strchr(p, '?'); | ||||
|     if (!ls) | ||||
|         ls = ls2; | ||||
|     else if (ls && ls2) | ||||
|         ls = FFMIN(ls, ls2); | ||||
|     if (ls) | ||||
|         av_strlcpy(path, ls, path_size); | ||||
|     else | ||||
|         ls = &p[strlen(p)];  // XXX | ||||
|     ls = p + strcspn(p, "/?#"); | ||||
|     av_strlcpy(path, ls, path_size); | ||||
|  | ||||
|     /* the rest is hostname, use that to parse auth/port */ | ||||
|     if (ls != p) { | ||||
|   | ||||
| @@ -22,3 +22,4 @@ http://server/foo/bar?param=value/with/slashes               => http | ||||
| https://1l-lh.a.net/i/1LIVE_HDS@179577/master.m3u8           => https                           1l-lh.a.net        -1 /i/1LIVE_HDS@179577/master.m3u8 | ||||
| ftp://u:p%2B%2F2@ftp.pbt.com/ExportHD.mpg                    => ftp             u:p%2B%2F2      ftp.pbt.com        -1 /ExportHD.mpg | ||||
| https://key.dns.com?key_id=2&model_id=12345&&access_key=     => https                           key.dns.com        -1 ?key_id=2&model_id=12345&&access_key= | ||||
| http://example.com#tag                                       => http                            example.com        -1 #tag | ||||
|   | ||||
		Reference in New Issue
	
	Block a user