|  | @@ -1596,8 +1596,13 @@ static int convert_uri_to_file_name(struct mg_connection *conn, char *buf,
 | 
	
		
			
				|  |  |          if (match_prefix(conn->ctx->config[CGI_EXTENSIONS],
 | 
	
		
			
				|  |  |                           strlen(conn->ctx->config[CGI_EXTENSIONS]), buf) > 0 &&
 | 
	
		
			
				|  |  |              (stat_result = mg_stat(buf, st)) == 0) {
 | 
	
		
			
				|  |  | +          // Shift PATH_INFO block one character right, e.g.
 | 
	
		
			
				|  |  | +          //  "/x.cgi/foo/bar\x00" => "/x.cgi\x00/foo/bar\x00"
 | 
	
		
			
				|  |  | +          // conn->path_info is pointing to the local variable "path" declared
 | 
	
		
			
				|  |  | +          // in handle_request(), so PATH_INFO not valid after
 | 
	
		
			
				|  |  | +          // handle_request returns.
 | 
	
		
			
				|  |  |            conn->path_info = p + 1;
 | 
	
		
			
				|  |  | -          memmove(p + 2, p + 1, strlen(p + 1));
 | 
	
		
			
				|  |  | +          memmove(p + 2, p + 1, strlen(p + 1) + 1);  // +1 is for trailing \0
 | 
	
		
			
				|  |  |            p[1] = '/';
 | 
	
		
			
				|  |  |            break;
 | 
	
		
			
				|  |  |          } else {
 |