+Fri Feb 20 17:49:22 IST 2007 Mark McLoughlin <markmc@redhat.com>
+
+ Fix a few leaks
+
+ * qemud/qemud.c: qemudCleanup(): free the socket
+ structures
+
+ * qemud/conf.c: fix various leaks in the xml parsing
+
+ * qemud/iptables.c: fix a typo causing a leak
+
Fri Feb 20 16:49:53 IST 2007 Mark McLoughlin <markmc@redhat.com>
* qemud/conf.c, qemud/qemud.c: only create config dirs
int maxnames);
int virDomainCreate (virDomainPtr domain);
+int virDomainGetAutostart (virDomainPtr domain,
+ int *autostart);
+int virDomainSetAutostart (virDomainPtr domain,
+ int autostart);
+
/**
* virVcpuInfo: structure for information about a virtual CPU in a domain.
*/
int flags);
char * virNetworkGetBridgeName (virNetworkPtr network);
+int virNetworkGetAutostart (virNetworkPtr network,
+ int *autostart);
+int virNetworkSetAutostart (virNetworkPtr network,
+ int autostart);
+
#ifdef __cplusplus
}
#endif
(obj->nodesetval != NULL) && (obj->nodesetval->nodeNr == 1)) {
def->features |= QEMUD_FEATURE_ACPI;
}
+ xmlXPathFreeObject(obj);
/* Extract OS type info */
obj = xmlXPathEval(BAD_CAST "string(/domain/os/type[1])", ctxt);
if ((obj == NULL) || (obj->type != XPATH_NODESET) ||
(obj->nodesetval == NULL) || (obj->nodesetval->nodeNr == 0)) {
def->graphicsType = QEMUD_GRAPHICS_NONE;
- } else {
- prop = xmlGetProp(obj->nodesetval->nodeTab[0], BAD_CAST "type");
+ } else if ((prop = xmlGetProp(obj->nodesetval->nodeTab[0], BAD_CAST "type"))) {
if (!strcmp((char *)prop, "vnc")) {
def->graphicsType = QEMUD_GRAPHICS_VNC;
prop = xmlGetProp(obj->nodesetval->nodeTab[0], BAD_CAST "port");
qemudReportError(server, VIR_ERR_INTERNAL_ERROR, "Unsupported graphics type %s", prop);
goto error;
}
+ xmlFree(prop);
}
+ xmlXPathFreeObject(obj);
/* analysis of the disk devices */
obj = xmlXPathEval(BAD_CAST "/domain/devices/disk", ctxt);
iptRulesFree(iptRules *rules)
{
if (rules->table) {
- free(rules->chain);
- rules->chain = NULL;
+ free(rules->table);
+ rules->table = NULL;
}
if (rules->chain) {
}
static void qemudCleanup(struct qemud_server *server) {
- struct qemud_socket *sock = server->sockets;
+ struct qemud_socket *sock;
+
close(server->sigread);
+
+ sock = server->sockets;
while (sock) {
+ struct qemud_socket *next = sock->next;
close(sock->fd);
- sock = sock->next;
+ free(sock);
+ sock = next;
}
+
if (server->brctl)
brShutdown(server->brctl);
if (server->iptables)
iptablesContextFree(server->iptables);
+
free(server);
}