From 193a03d759b320ff4078352087a576ed138c6fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= Date: Wed, 4 Nov 2020 19:46:31 +0000 Subject: XSA-354: ls_lR: refactor, use fold MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Edwin Török Acked-by: Christian Lindig diff --git a/xc/xenops_server_xen.ml b/xc/xenops_server_xen.ml index 008e8dda..912e97fa 100644 --- a/xc/xenops_server_xen.ml +++ b/xc/xenops_server_xen.ml @@ -2591,9 +2591,9 @@ module VM = struct (Uuidm.to_string uuid)) with Xs_protocol.Enoent _ -> "" in - let rec ls_lR root dir = + let rec ls_lR root acc dir = let entry = root ^ "/" ^ dir in - let this = try [(dir, xs.Xs.read entry)] with _ -> [] in + let acc = try (dir, xs.Xs.read entry) :: acc with _ -> acc in let subdirs = try xs.Xs.directory entry @@ -2601,22 +2601,22 @@ module VM = struct |> map_tr (fun x -> dir ^ "/" ^ x) with _ -> [] in - this @ List.concat (map_tr (ls_lR root) subdirs) + List.fold_left (ls_lR root) acc subdirs in let guest_agent = [ "drivers"; "attr"; "data"; "control"; "feature"; "xenserver/attr" ] - |> map_tr + |> List.fold_left (ls_lR (Printf.sprintf "/local/domain/%d" di.Xenctrl.domid)) - |> List.concat + [] |> map_tr (fun (k, v) -> (k, Xenops_utils.utf8_recode v)) in let xsdata_state = Domain.allowed_xsdata_prefixes - |> map_tr + |> List.fold_left (ls_lR (Printf.sprintf "/local/domain/%d" di.Xenctrl.domid)) - |> List.concat + [] in let shadow_multiplier_target = if not di.Xenctrl.hvm_guest then