Index: libvirt/src/conf/secret_conf.c
===================================================================
***************
*** 154,160 ****
                                   _("invalid
value of 'private'"));
             
goto cleanup;
          }
-        
VIR_FREE(prop);
      }
  
      uuidstr =
virXPathString("string(./uuid)", ctxt);
--- 154,159 ----
***************
*** 170,176 ****
                                  
"%s", _("malformed uuid element"));
             
goto cleanup;
          }
-        
VIR_FREE(uuidstr);
      }
  
      def->description =
virXPathString("string(./description)", ctxt);
--- 169,174 ----
***************
*** 181,187 ****
      def = NULL;
  
   cleanup:
!     VIR_FREE(prop);
      virSecretDefFree(def);
      xmlXPathFreeContext(ctxt);
      return ret;
--- 179,190 ----
      def = NULL;
  
   cleanup:
!     if (prop) {
!        
VIR_FREE(prop);
!     }
!     if (uuidstr) {
!        
VIR_FREE(uuidstr);
!     }
      virSecretDefFree(def);
      xmlXPathFreeContext(ctxt);
      return ret;
Index: libvirt/src/nwfilter/nwfilter_gentech_driver.c
===================================================================
***************
*** 662,673 ****
          }
  
         
virNWFilterUnlockIface(ifname);
- 
-        
VIR_FREE(ptrs);
      }
  
  err_exit:
  
     
virNWFilterUnlockFilterUpdates();
  
      for (j = 0; j < nEntries;
j++)
--- 662,675 ----
          }
  
         
virNWFilterUnlockIface(ifname);
      }
  
  err_exit:
  
+     if (ptrs) {
+        
VIR_FREE(ptrs);
+     }
+ 
     
virNWFilterUnlockFilterUpdates();
  
      for (j = 0; j < nEntries;
j++)
Index: libvirt/src/remote/remote_driver.c
===================================================================
***************
*** 474,495 ****
--- 474,510 ----
          for
(i = 0; i < vars->n; i++) {
             
var = &vars->p[i];
             
if (STRCASEEQ (var->name, "name")) {
+          
      if (name) {
+                    
VIR_FREE(name);
+                
}
                 
name = strdup (var->value);
                 
if (!name) goto out_of_memory;
                 
var->ignore = 1;
             
} else if (STRCASEEQ (var->name, "command")) {
+                
if (command) {
+                    
VIR_FREE(command);
+                
}
                 
command = strdup (var->value);
                 
if (!command) goto out_of_memory;
                 
var->ignore = 1;
             
} else if (STRCASEEQ (var->name, "socket")) {
+                
if (sockname) {
+                    
VIR_FREE(sockname);
+                
}
                 
sockname = strdup (var->value);
                 
if (!sockname) goto out_of_memory;
                 
var->ignore = 1;
             
} else if (STRCASEEQ (var->name, "auth")) {
+                
if (authtype) {
+                    
VIR_FREE(authtype);
+                
}
                 
authtype = strdup (var->value);
             
    if (!authtype) goto out_of_memory;
                 
var->ignore = 1;
             
} else if (STRCASEEQ (var->name, "netcat")) {
+                
if (netcat) {
+                    
VIR_FREE(netcat);
+                
}
                 
netcat = strdup (var->value);
                 
if (!netcat) goto out_of_memory;
                 
var->ignore = 1;
Index: libvirt/src/util/conf.c
===================================================================
***************
*** 651,656 ****
--- 651,657 ----
      SKIP_BLANKS;
      if (CUR != '=') {
         
virConfError(ctxt, VIR_ERR_CONF_SYNTAX, _("expecting an
assignment"));
+        
VIR_FREE(name);
         
return(-1);
      }
      NEXT;
Index: libvirt/src/util/storage_file.c
===================================================================
***************
*** 742,747 ****
--- 742,748 ----
      if (format < 0 ||
         
format >= VIR_STORAGE_FILE_LAST) {
         
virReportSystemError(EINVAL, _("unknown storage file format %d"),
format);
+         VIR_FREE(head);
         
return -1;
      }
  
Index: libvirt/src/util/xml.c
===================================================================
***************
*** 107,113 ****
         
virXMLError(VIR_ERR_INTERNAL_ERROR,
                     
_("\'%s\' value longer than %Zd bytes in virXPathStringLimit()"),
                     
xpath, maxlen);
!            
return NULL;
      }
  
      return tmp;
--- 107,114 ----
         
virXMLError(VIR_ERR_INTERNAL_ERROR,
                     
_("\'%s\' value longer than %Zd bytes in virXPathStringLimit()"),
                     
xpath, maxlen);
!        
VIR_FREE(tmp);
!         return
NULL;
      }
  
      return tmp;
Index: libvirt/tools/virsh.c
===================================================================
***************
*** 8697,8702 ****
--- 8697,8703 ----
  {
      const char *dir;
      int found;
+     int dir_root = FALSE;
  
      if (!ctl->imode) {
         
vshError(ctl, "%s", _("cd: command valid only in interactive
mode"));
***************
*** 8708,8721 ****
          uid_t
uid = geteuid();
          dir =
virGetUserDirectory(uid);
      }
!     if (!dir)
          dir =
"/";
  
      if (chdir (dir) == -1) {
         
vshError(ctl, _("cd: %s: %s"), strerror(errno), dir);
         
return FALSE;
      }
  
      return TRUE;
  }
  
--- 8709,8730 ----
          uid_t
uid = geteuid();
          dir =
virGetUserDirectory(uid);
      }
!     if (!dir) {
          dir =
"/";
+         dir_root =
TRUE;
+     }
  
      if (chdir (dir) == -1) {
         
vshError(ctl, _("cd: %s: %s"), strerror(errno), dir);
+         if
(!dir_root) {
+            
VIR_FREE(dir);
+         }
         
return FALSE;
      }
  
+     if (!dir_root) {
+        
VIR_FREE(dir);
+     }
      return TRUE;
  }
Kind regards,
Phil Petty