On 01/21/13 11:45, Jiri Denemark wrote:
On Thu, Jan 17, 2013 at 14:12:03 +0100, Peter Krempa wrote:
> virDomainSnapshotDropParent tried to dereference the parent even in case
> the snapshot didn't have a parent. This should not be possible as the
> snapshots use metaroot now, but bugs may induce this failure.
> ---
> src/conf/snapshot_conf.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
> index 0c5b005..c3a8494 100644
> --- a/src/conf/snapshot_conf.c
> +++ b/src/conf/snapshot_conf.c
> @@ -995,6 +995,9 @@ virDomainSnapshotDropParent(virDomainSnapshotObjPtr snapshot)
> virDomainSnapshotObjPtr prev = NULL;
> virDomainSnapshotObjPtr curr = NULL;
>
> + if (!snapshot || !snapshot->parent)
> + return;
> +
> snapshot->parent->nchildren--;
> curr = snapshot->parent->first_child;
> while (curr != snapshot) {
I'm slightly against this patch as I prefer a crashing daemon to silent
propagation of bug.
Hm, yeah. I agree. The snapshot metaroot patch that caused this problem
expects that all snapshots except the metaroot have parents so this may
disclose other potential bugs.
Peter
Jirka