RFC 3986-compliant isValidUrl (protocol parsing)
To avoid misinterpreting URLs like "/File:wikipedia.png" as a non-relative URLs.
This commit is contained in:
		
							parent
							
								
									3c0b8073be
								
							
						
					
					
						commit
						b35ced8c9e
					
				| @ -223,7 +223,7 @@ var UnsupportedManager = PDFJS.UnsupportedManager = | |||||||
| function combineUrl(baseUrl, url) { | function combineUrl(baseUrl, url) { | ||||||
|   if (!url) |   if (!url) | ||||||
|     return baseUrl; |     return baseUrl; | ||||||
|   if (url.indexOf(':') >= 0) |   if (/^[a-z][a-z0-9+\-.]*:/i.test(url)) | ||||||
|     return url; |     return url; | ||||||
|   if (url.charAt(0) == '/') { |   if (url.charAt(0) == '/') { | ||||||
|     // absolute path
 |     // absolute path
 | ||||||
| @ -247,11 +247,13 @@ function isValidUrl(url, allowRelative) { | |||||||
|   if (!url) { |   if (!url) { | ||||||
|     return false; |     return false; | ||||||
|   } |   } | ||||||
|   var colon = url.indexOf(':'); |   // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1)
 | ||||||
|   if (colon < 0) { |   // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
 | ||||||
|  |   var protocol = /^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url); | ||||||
|  |   if (!protocol) { | ||||||
|     return allowRelative; |     return allowRelative; | ||||||
|   } |   } | ||||||
|   var protocol = url.substr(0, colon); |   protocol = protocol[0].toLowerCase(); | ||||||
|   switch (protocol) { |   switch (protocol) { | ||||||
|     case 'http': |     case 'http': | ||||||
|     case 'https': |     case 'https': | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user