mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
tools/xenstore: fix deleting node in transaction
In case a node has been created in a transaction and it is later deleted in the same transaction, the transaction will be terminated with an error. As this error is encountered only when handling the deleted node at transaction finalization, the transaction will have been performed partially and without updating the accounting information. This will enable a malicious guest to create arbitrary number of nodes. This is part of XSA-421 / CVE-2022-42325. Signed-off-by: Juergen Gross <jgross@suse.com> Tested-by: Julien Grall <jgrall@amazon.com> Reviewed-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
1 parent
ae34df4d82
commit
13ac37f141
1 file changed
+7
-1
@@ -418,7 +418,13 @@ static int finalize_transaction(struct connection *conn,
|
||||
true);
|
||||
talloc_free(data.dptr);
|
||||
} else {
|
||||
ret = do_tdb_delete(conn, &key, NULL);
|
||||
/*
|
||||
* A node having been created and later deleted
|
||||
* in this transaction will have no generation
|
||||
* information stored.
|
||||
*/
|
||||
ret = (i->generation == NO_GENERATION)
|
||||
? 0 : do_tdb_delete(conn, &key, NULL);
|
||||
}
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||