File 0331-inets-Fix-handling-of-relative-paths-in-script_alias.patch of Package erlang

From 35009ed9aaf3fd52d9be11777b51abbef3c7cf75 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Dimitrov?= <peterdmv@erlang.org>
Date: Tue, 17 Apr 2018 09:39:04 +0200
Subject: [PATCH] inets: Fix handling of relative paths in script_alias

- Add function for converting relative paths to absolute
  using the server_root property.

Change-Id: If9b521e4444a3382f7e5449b187c1c0ebbb3d0f3
---
 lib/inets/src/http_server/mod_alias.erl | 22 +++++++++-------------
 lib/inets/test/httpd_SUITE.erl          | 33 ++++++++++++++++++++++++++++++---
 2 files changed, 39 insertions(+), 16 deletions(-)

diff --git a/lib/inets/src/http_server/mod_alias.erl b/lib/inets/src/http_server/mod_alias.erl
index 0333076546..8f0b92710e 100644
--- a/lib/inets/src/http_server/mod_alias.erl
+++ b/lib/inets/src/http_server/mod_alias.erl
@@ -163,28 +163,24 @@ longest_match([], _RequestURI, _LongestNo, LongestAlias) ->
 
 real_script_name(_ConfigDB, _RequestURI, []) ->
     not_a_script;
-
-real_script_name(ConfigDB, RequestURI, [{MP,Replacement} | Rest])
-  when element(1, MP) =:= re_pattern ->
-    case re:run(RequestURI, MP, [{capture, none}]) of
-	match ->
-	    ActualName =
-		re:replace(RequestURI, MP, Replacement, [{return,list}]),
-	    httpd_util:split_script_path(default_index(ConfigDB, ActualName));
-	nomatch ->
-	    real_script_name(ConfigDB, RequestURI, Rest)
-    end;
-
 real_script_name(ConfigDB, RequestURI, [{FakeName,RealName} | Rest]) ->
     case re:run(RequestURI, "^" ++ FakeName, [{capture, none}]) of
 	match ->
-	    ActualName = 
+	    ActualName0 =
 		re:replace(RequestURI, "^" ++ FakeName, RealName,  [{return,list}]),
+            ActualName = abs_script_path(ConfigDB, ActualName0),
 	    httpd_util:split_script_path(default_index(ConfigDB, ActualName));
 	nomatch ->
 	    real_script_name(ConfigDB, RequestURI, Rest)
     end.
 
+%% ERL-574: relative path in script_alias property results in malformed url
+abs_script_path(ConfigDB, [$.|_] = RelPath) ->
+    Root = httpd_util:lookup(ConfigDB, server_root),
+    Root ++ "/" ++ RelPath;
+abs_script_path(_, RelPath) ->
+    RelPath.
+
 %% default_index
 
 default_index(ConfigDB, Path) ->
-- 
2.16.3

openSUSE Build Service is sponsored by