From 81f7bfe89cb1101fad67e5db7779809111359a6e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edvin.torok@citrix.com>
Date: Wed, 4 Nov 2020 19:39:43 +0000
Subject: XSA-354: ls_lR: factor out dir concatenation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Edwin Török <edvin.torok@citrix.com>
Acked-by: Christian Lindig <christian.lindig@citrix.com>

diff --git a/xc/xenops_server_xen.ml b/xc/xenops_server_xen.ml
index 69404de6..008e8dda 100644
--- a/xc/xenops_server_xen.ml
+++ b/xc/xenops_server_xen.ml
@@ -2592,12 +2592,11 @@ module VM = struct
               with Xs_protocol.Enoent _ -> ""
             in
             let rec ls_lR root dir =
-              let this =
-                try [(dir, xs.Xs.read (root ^ "/" ^ dir))] with _ -> []
-              in
+              let entry = root ^ "/" ^ dir in
+              let this = try [(dir, xs.Xs.read entry)] with _ -> [] in
               let subdirs =
                 try
-                  xs.Xs.directory (root ^ "/" ^ dir)
+                  xs.Xs.directory entry
                   |> List.filter (fun x -> x <> "")
                   |> map_tr (fun x -> dir ^ "/" ^ x)
                 with _ -> []
