]> xenbits.xensource.com Git - xen.git/commitdiff
tools/oxenstored: Fix quota calculation for mkdir EEXIST
authorEdwin Török <edvin.torok@citrix.com>
Fri, 15 Jan 2021 19:11:32 +0000 (19:11 +0000)
committerIan Jackson <iwj@xenproject.org>
Fri, 19 Mar 2021 13:46:25 +0000 (13:46 +0000)
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 <edvin.torok@citrix.com>
Acked-by: Christian Lindig <christian.lindig@citrix.com>
Release-Acked-by: Ian Jackson <iwj@xenproject.org>
(cherry picked from commit c8b96708252a436da44005307f7c195d699bd7c5)

tools/ocaml/xenstored/store.ml

index 2a694562bb62750547e44e11866592ce57ec6f04..7253ac0fcf2b8a3fbc4f5ef0748ec58269fab474 100644 (file)
@@ -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 =