
Setting fd=-1 in these places makes sure that the fd is not closed twice later on in 'clean:'. This is of course a recipe for disaster in a multi-threaded system where the filedescriptor can belong to something else right away. At least we have a pattern... (looks like I can close the augeas bug as well...) Signed-off-by: Stefan Berger <stefanb@us.ibm.com> --- src/conf/domain_conf.c | 2 ++ src/conf/network_conf.c | 2 ++ src/conf/nwfilter_conf.c | 4 ++++ src/conf/storage_conf.c | 2 ++ 4 files changed, 10 insertions(+) Index: libvirt-acl/src/conf/domain_conf.c =================================================================== --- libvirt-acl.orig/src/conf/domain_conf.c +++ libvirt-acl/src/conf/domain_conf.c @@ -6805,6 +6805,8 @@ int virDomainSaveXML(const char *configD goto cleanup; } + fd = -1; + ret = 0; cleanup: if (fd != -1) Index: libvirt-acl/src/conf/network_conf.c =================================================================== --- libvirt-acl.orig/src/conf/network_conf.c +++ libvirt-acl/src/conf/network_conf.c @@ -694,6 +694,8 @@ int virNetworkSaveXML(const char *config goto cleanup; } + fd = -1; + ret = 0; cleanup: Index: libvirt-acl/src/conf/nwfilter_conf.c =================================================================== --- libvirt-acl.orig/src/conf/nwfilter_conf.c +++ libvirt-acl/src/conf/nwfilter_conf.c @@ -2200,6 +2200,8 @@ int virNWFilterSaveXML(const char *confi goto cleanup; } + fd = -1; + ret = 0; cleanup: @@ -2611,6 +2613,8 @@ virNWFilterPoolObjSaveDef(virNWFilterDri goto cleanup; } + fd = -1; + ret = 0; cleanup: Index: libvirt-acl/src/conf/storage_conf.c =================================================================== --- libvirt-acl.orig/src/conf/storage_conf.c +++ libvirt-acl/src/conf/storage_conf.c @@ -1567,6 +1567,8 @@ virStoragePoolObjSaveDef(virStorageDrive goto cleanup; } + fd = -1; + ret = 0; cleanup: