security: Grab a reference to virSecurityManager for transactions

This shouldn't be needed per-se. Security manager shouldn't
disappear during transactions - it's immutable. However, it
doesn't hurt to grab a reference either - transaction code uses
it after all.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
Michal Privoznik 2018-09-20 14:22:13 +02:00
parent 72a8b8ecc5
commit f4d7ca62a4
2 changed files with 6 additions and 4 deletions

View File

@ -141,6 +141,7 @@ virSecurityDACChownListFree(void *opaque)
VIR_FREE(list->items[i]);
}
VIR_FREE(list->items);
virObjectUnref(list->manager);
VIR_FREE(list);
}
@ -511,12 +512,12 @@ virSecurityDACTransactionStart(virSecurityManagerPtr mgr)
if (VIR_ALLOC(list) < 0)
return -1;
list->manager = mgr;
list->manager = virObjectRef(mgr);
if (virThreadLocalSet(&chownList, list) < 0) {
virReportSystemError(errno, "%s",
_("Unable to set thread local variable"));
VIR_FREE(list);
virSecurityDACChownListFree(list);
return -1;
}

View File

@ -157,6 +157,7 @@ virSecuritySELinuxContextListFree(void *opaque)
virSecuritySELinuxContextItemFree(list->items[i]);
VIR_FREE(list->items);
virObjectUnref(list->manager);
VIR_FREE(list);
}
@ -1055,12 +1056,12 @@ virSecuritySELinuxTransactionStart(virSecurityManagerPtr mgr)
if (VIR_ALLOC(list) < 0)
return -1;
list->manager = mgr;
list->manager = virObjectRef(mgr);
if (virThreadLocalSet(&contextList, list) < 0) {
virReportSystemError(errno, "%s",
_("Unable to set thread local variable"));
VIR_FREE(list);
virSecuritySELinuxContextListFree(list);
return -1;
}