From: Edwin Török Date: Fri, 15 Jan 2021 19:11:32 +0000 (+0000) Subject: tools/oxenstored: Fix quota calculation for mkdir EEXIST X-Git-Tag: archive/raspbian/4.14.2+25-gb6a8c4f72d-2+rpi1^2~47^2~45 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=004be86c81b866365919292f98a5d6effa6f053c;p=xen.git tools/oxenstored: Fix quota calculation for mkdir EEXIST We increment the domain's quota on mkdir even when the node already exists. This results in a quota inconsistency after live update, where reconstructing the tree from scratch results in a different quota. Not a security issue because the domain uses up quota faster, so it will only get a Quota error sooner than it should. Found by the structured fuzzer. Signed-off-by: Edwin Török Acked-by: Christian Lindig Release-Acked-by: Ian Jackson (cherry picked from commit c8b96708252a436da44005307f7c195d699bd7c5) --- diff --git a/tools/ocaml/xenstored/store.ml b/tools/ocaml/xenstored/store.ml index e20767372f..328d3a5198 100644 --- a/tools/ocaml/xenstored/store.ml +++ b/tools/ocaml/xenstored/store.ml @@ -421,6 +421,7 @@ let mkdir store perm path = (* It's upt to the mkdir logic to decide what to do with existing path *) if not (existing || (Perms.Connection.is_dom0 perm)) then Quota.check store.quota owner 0; store.root <- path_mkdir store perm path; + if not existing then Quota.add_entry store.quota owner let rm store perm path =