[Libvirt-cim] [PATCH 2/2] Resolve Coverity complaint

John Ferlan jferlan at redhat.com
Fri Jul 19 18:28:58 UTC 2013


Found by a scan done on the Red Hat libvirt-cim code, but still valid
for the upstream code.

Error: SECURE_TEMP (CWE-377): [#def23]
libvirt-cim-0.6.1/src/Virt_VSMigrationService.c:504: cond_true: Condition "__retval != NULL", taking true branch
libvirt-cim-0.6.1/src/Virt_VSMigrationService.c:507: cond_false: Condition "filename == NULL", taking false branch
libvirt-cim-0.6.1/src/Virt_VSMigrationService.c:510: if_end: End of if statement
libvirt-cim-0.6.1/src/Virt_VSMigrationService.c:512: secure_temp: Calling "mkstemp(char *)" without securely setting umask first.

Resolve by adding umask code
---
 src/Virt_VSMigrationService.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/Virt_VSMigrationService.c b/src/Virt_VSMigrationService.c
index f48d56b..78f9e05 100644
--- a/src/Virt_VSMigrationService.c
+++ b/src/Virt_VSMigrationService.c
@@ -569,6 +569,7 @@ static char *write_params(CMPIArray *array)
 {
         int i;
         int fd;
+        mode_t cur_umask = umask(S_IRWXO|S_IRWXG);
         char *filename = strdup("/tmp/libvirtcim_mig.XXXXXX");
         FILE *file = NULL;
 
@@ -578,6 +579,7 @@ static char *write_params(CMPIArray *array)
         }
 
         fd = mkstemp(filename);
+        umask(cur_umask);
         if (fd < 0) {
                 CU_DEBUG("Unable to get temporary file: %s", strerror(errno));
                 free(filename);
-- 
1.8.1.4




More information about the Libvirt-cim mailing list