Add virBufferFreeAndReset() and replace free()

Replace free(virBufferContentAndReset()) with virBufferFreeAndReset().
Update documentation and replace all remaining calls to free() with
calls to VIR_FREE(). Also add missing calls to virBufferFreeAndReset()
and virReportOOMError() in OOM error cases.
This commit is contained in:
Matthias Bolte 2009-12-10 00:00:50 +01:00
parent 723bfda1ce
commit 1b9d074493
41 changed files with 201 additions and 212 deletions

View File

@ -293,10 +293,11 @@ eg typical usage is as follows:
...
virBufferAddLit(&buf, "</domain>\n");
....
...
if (virBufferError(&buf)) {
__virRaiseError(...);
virBufferFreeAndReset(&buf);
virReportOOMError(...);
return NULL;
}

View File

@ -582,7 +582,7 @@ static int qemudListenUnix(struct qemud_server *server,
cleanup:
if (sock->fd)
close(sock->fd);
free(sock);
VIR_FREE(sock);
return -1;
}
@ -803,8 +803,8 @@ static int qemudInitPaths(struct qemud_server *server,
_("Resulting path too long for buffer in qemudInitPaths()"));
cleanup:
free (dir_prefix);
free (sock_dir_prefix);
VIR_FREE(dir_prefix);
VIR_FREE(sock_dir_prefix);
return ret;
}
@ -1452,8 +1452,7 @@ void qemudDispatchClientFailure(struct qemud_client *client) {
sasl_dispose(&client->saslconn);
client->saslconn = NULL;
}
free(client->saslUsername);
client->saslUsername = NULL;
VIR_FREE(client->saslUsername);
#endif
if (client->tlssession) {
gnutls_deinit (client->tlssession);
@ -2374,19 +2373,19 @@ static void qemudCleanup(struct qemud_server *server) {
if (sock->watch)
virEventRemoveHandleImpl(sock->watch);
close(sock->fd);
free(sock);
VIR_FREE(sock);
sock = next;
}
free(server->logDir);
VIR_FREE(server->logDir);
#ifdef HAVE_SASL
if (server->saslUsernameWhitelist) {
char **list = server->saslUsernameWhitelist;
while (*list) {
free(*list);
VIR_FREE(*list);
list++;
}
free(server->saslUsernameWhitelist);
VIR_FREE(server->saslUsernameWhitelist);
}
#endif
@ -2743,10 +2742,9 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
goto free_and_fail;
}
unix_sock_gid = grp->gr_gid;
VIR_FREE (buf);
VIR_FREE(buf);
}
free (unix_sock_group);
unix_sock_group = NULL;
VIR_FREE(unix_sock_group);
}
GET_CONF_STR (conf, filename, unix_sock_ro_perms);
@ -2755,8 +2753,7 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
VIR_ERROR(_("Failed to parse mode '%s'"), unix_sock_ro_perms);
goto free_and_fail;
}
free (unix_sock_ro_perms);
unix_sock_ro_perms = NULL;
VIR_FREE(unix_sock_ro_perms);
}
GET_CONF_STR (conf, filename, unix_sock_rw_perms);
@ -2765,8 +2762,7 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
VIR_ERROR(_("Failed to parse mode '%s'"), unix_sock_rw_perms);
goto free_and_fail;
}
free (unix_sock_rw_perms);
unix_sock_rw_perms = NULL;
VIR_FREE(unix_sock_rw_perms);
}
GET_CONF_STR (conf, filename, unix_sock_dir);
@ -2801,12 +2797,11 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
free_and_fail:
virConfFree (conf);
free (mdns_name);
mdns_name = NULL;
free (unix_sock_ro_perms);
free (unix_sock_rw_perms);
free (unix_sock_group);
VIR_FREE (buf);
VIR_FREE(mdns_name);
VIR_FREE(unix_sock_ro_perms);
VIR_FREE(unix_sock_rw_perms);
VIR_FREE(unix_sock_group);
VIR_FREE(buf);
/* Don't bother trying to free listen_addr, tcp_port, tls_port, key_file,
cert_file, ca_file, or crl_file, since they are initialized to
@ -2817,9 +2812,8 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
if (tls_allowed_dn_list) {
int i;
for (i = 0; tls_allowed_dn_list[i]; i++)
free (tls_allowed_dn_list[i]);
free (tls_allowed_dn_list);
tls_allowed_dn_list = NULL;
VIR_FREE(tls_allowed_dn_list[i]);
VIR_FREE(tls_allowed_dn_list);
}
return -1;

View File

@ -306,14 +306,15 @@
...
virBufferAddLit(&amp;buf, "&lt;domain&gt;\n");
virBufferVSprint(&amp;buf, " &lt;memory>%d&lt;/memory&gt;\n", memory);
virBufferVSprint(&amp;buf, " &lt;memory&gt;%d&lt;/memory&gt;\n", memory);
...
virBufferAddLit(&amp;buf, "&lt;/domain&gt;\n");
....
...
if (virBufferError(&amp;buf)) {
__virRaiseError(...);
virBufferFreeAndReset(&amp;buf);
virReportOOMError(...);
return NULL;
}

View File

@ -769,8 +769,10 @@ virCapabilitiesFormatXML(virCapsPtr caps)
virBufferAddLit(&xml, "</capabilities>\n");
if (virBufferError(&xml))
if (virBufferError(&xml)) {
virBufferFreeAndReset(&xml);
return NULL;
}
return virBufferContentAndReset(&xml);
}

View File

@ -3723,6 +3723,7 @@ virDomainCpuSetFormat(virConnectPtr conn, char *cpuset, int maxcpu)
}
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
virReportOOMError(conn);
return NULL;
}
@ -4531,7 +4532,7 @@ char *virDomainDefFormat(virConnectPtr conn,
virBuffer buf = VIR_BUFFER_INITIALIZER;
unsigned char *uuid;
char uuidstr[VIR_UUID_STRING_BUFLEN];
const char *type = NULL, *tmp;
const char *type = NULL;
int n, allones = 1;
if (!(type = virDomainVirtTypeToString(def->virtType))) {
@ -4787,8 +4788,7 @@ char *virDomainDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
tmp = virBufferContentAndReset(&buf);
VIR_FREE(tmp);
virBufferFreeAndReset(&buf);
return NULL;
}
@ -4797,7 +4797,7 @@ char *virDomainObjFormat(virConnectPtr conn,
virDomainObjPtr obj,
int flags)
{
char *config_xml = NULL, *xml = NULL;
char *config_xml = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
virBufferVSprintf(&buf, "<domstatus state='%s' pid='%d'>\n",
@ -4825,8 +4825,7 @@ char *virDomainObjFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
error:
xml = virBufferContentAndReset(&buf);
VIR_FREE(xml);
virBufferFreeAndReset(&buf);
return NULL;
}

View File

@ -1208,7 +1208,7 @@ char *virInterfaceDefFormat(virConnectPtr conn,
const virInterfaceDefPtr def)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
const char *type = NULL, *tmp;
const char *type = NULL;
if ((def == NULL) ||
((def->name == NULL) && (def->type != VIR_INTERFACE_TYPE_VLAN))) {
@ -1271,8 +1271,7 @@ char *virInterfaceDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
tmp = virBufferContentAndReset(&buf);
VIR_FREE(tmp);
virBufferFreeAndReset(&buf);
return NULL;
}

View File

@ -642,7 +642,6 @@ char *virNetworkDefFormat(virConnectPtr conn,
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
unsigned char *uuid;
char *tmp;
char uuidstr[VIR_UUID_STRING_BUFLEN];
virBufferAddLit(&buf, "<network>\n");
@ -731,8 +730,7 @@ char *virNetworkDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
tmp = virBufferContentAndReset(&buf);
VIR_FREE(tmp);
virBufferFreeAndReset(&buf);
return NULL;
}

View File

@ -246,7 +246,6 @@ char *virNodeDeviceDefFormat(virConnectPtr conn,
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
virNodeDevCapsDefPtr caps;
char *tmp;
virBufferAddLit(&buf, "<device>\n");
virBufferEscapeString(&buf, " <name>%s</name>\n", def->name);
@ -464,8 +463,7 @@ char *virNodeDeviceDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
tmp = virBufferContentAndReset(&buf);
VIR_FREE(tmp);
virBufferFreeAndReset(&buf);
return NULL;
}

View File

@ -303,7 +303,6 @@ virSecretDefFormat(virConnectPtr conn, const virSecretDefPtr def)
virBuffer buf = VIR_BUFFER_INITIALIZER;
unsigned char *uuid;
char uuidstr[VIR_UUID_STRING_BUFLEN];
char *tmp;
virBufferVSprintf(&buf, "<secret ephemeral='%s' private='%s'>\n",
def->ephemeral ? "yes" : "no",
@ -328,7 +327,6 @@ virSecretDefFormat(virConnectPtr conn, const virSecretDefPtr def)
no_memory:
virReportOOMError(conn);
error:
tmp = virBufferContentAndReset(&buf);
VIR_FREE(tmp);
virBufferFreeAndReset(&buf);
return NULL;
}

View File

@ -954,7 +954,7 @@ virStoragePoolDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
free(virBufferContentAndReset(&buf));
virBufferFreeAndReset(&buf);
return NULL;
}
@ -1292,7 +1292,6 @@ virStorageVolDefFormat(virConnectPtr conn,
virStorageVolDefPtr def) {
virStorageVolOptionsPtr options;
virBuffer buf = VIR_BUFFER_INITIALIZER;
char *tmp;
options = virStorageVolOptionsForPoolType(pool->type);
if (options == NULL)
@ -1351,8 +1350,7 @@ virStorageVolDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
tmp = virBufferContentAndReset(&buf);
VIR_FREE(tmp);
virBufferFreeAndReset(&buf);
return NULL;
}
@ -1742,7 +1740,7 @@ char *virStoragePoolSourceListFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
free(virBufferContentAndReset(&buf));
virBufferFreeAndReset(&buf);
return NULL;
}

View File

@ -2293,6 +2293,7 @@ esxDomainDumpXML(virDomainPtr domain, int flags)
return xml;
failure:
virBufferFreeAndReset(&buffer);
VIR_FREE(xml);
goto cleanup;
@ -2723,6 +2724,8 @@ esxDomainDefineXML(virConnectPtr conn, const char *xml ATTRIBUTE_UNUSED)
return domain;
failure:
virBufferFreeAndReset(&buffer);
domain = NULL;
goto cleanup;

View File

@ -532,7 +532,7 @@ esxVI_Context_DownloadFile(virConnectPtr conn, esxVI_Context *ctx,
return 0;
failure:
free(virBufferContentAndReset(&buffer));
virBufferFreeAndReset(&buffer);
return -1;
}
@ -708,7 +708,7 @@ esxVI_Context_Execute(virConnectPtr conn, esxVI_Context *ctx,
return 0;
failure:
free(virBufferContentAndReset(&buffer));
virBufferFreeAndReset(&buffer);
esxVI_Response_Free(response);
esxVI_Fault_Free(&fault);
@ -2065,7 +2065,7 @@ esxVI_StartSimpleVirtualMachineTask
return result;
failure:
free(virBufferContentAndReset(&buffer));
virBufferFreeAndReset(&buffer);
result = -1;
@ -2124,9 +2124,7 @@ esxVI_SimpleVirtualMachineMethod(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;

View File

@ -158,9 +158,7 @@ esxVI_Login(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -214,9 +212,7 @@ esxVI_Logout(virConnectPtr conn, esxVI_Context *ctx)
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -283,9 +279,7 @@ esxVI_SessionIsActive(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -352,9 +346,7 @@ esxVI_RetrieveProperties(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -451,9 +443,7 @@ esxVI_MigrateVM_Task(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -509,9 +499,7 @@ esxVI_ReconfigVM_Task(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -579,9 +567,7 @@ esxVI_RegisterVM_Task(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -630,9 +616,7 @@ esxVI_UnregisterVM(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -702,9 +686,7 @@ esxVI_CreateFilter(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -758,9 +740,7 @@ esxVI_DestroyPropertyFilter(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -824,9 +804,7 @@ esxVI_WaitForUpdates(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -928,9 +906,7 @@ esxVI_ValidateMigration(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -1003,9 +979,7 @@ esxVI_FindByIp(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -1089,9 +1063,7 @@ esxVI_FindByUuid(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -1165,9 +1137,7 @@ esxVI_QueryAvailablePerfMetric(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -1232,9 +1202,7 @@ esxVI_QueryPerfCounter(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;
@ -1299,9 +1267,7 @@ esxVI_QueryPerf(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
if (request == NULL) {
request = virBufferContentAndReset(&buffer);
}
virBufferFreeAndReset(&buffer);
result = -1;

View File

@ -2124,7 +2124,6 @@ esxVMX_FormatConfig(virConnectPtr conn, esxVI_Context *ctx,
int sched_cpu_affinity_length;
unsigned char zero[VIR_UUID_BUFLEN];
virBuffer buffer = VIR_BUFFER_INITIALIZER;
char *vmx = NULL;
memset(zero, 0, VIR_UUID_BUFLEN);
@ -2347,16 +2346,10 @@ esxVMX_FormatConfig(virConnectPtr conn, esxVI_Context *ctx,
goto failure;
}
vmx = virBufferContentAndReset(&buffer);
return vmx;
return virBufferContentAndReset(&buffer);
failure:
if (vmx == NULL) {
vmx = virBufferContentAndReset(&buffer);
}
VIR_FREE(vmx);
virBufferFreeAndReset(&buffer);
return NULL;
}

View File

@ -12,6 +12,7 @@ virBufferAddChar;
virBufferContentAndReset;
virBufferError;
virBufferURIEncodeString;
virBufferFreeAndReset;
# caps.h

View File

@ -323,6 +323,7 @@ static int udevGenerateDeviceName(struct udev_device *device,
}
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
VIR_ERROR("Buffer error when generating device name for device "
"with sysname '%s'\n", udev_device_get_sysname(device));
ret = -1;

View File

@ -26,6 +26,7 @@
#include "one_client.h"
#include "datatypes.h"
#include "util.h"
#include "memory.h"
oneClient one_client;
@ -54,12 +55,12 @@ int c_oneReturnCode(xmlrpc_value *resultP)
if( return_code )
{
xmlrpc_DECREF(resultP);
free(return_string);
VIR_FREE(return_string);
return 0;
}
else
{
free(one_client.error);
VIR_FREE(one_client.error);
one_client.error=return_string;
return -1;
@ -125,7 +126,7 @@ int c_oneAllocateTemplate(char* vm_template)
xmlrpc_DECREF(valueP);
xmlrpc_DECREF(resultP);
free(one_client.error);
VIR_FREE(one_client.error);
one_client.error=return_string;
return -1;
@ -194,7 +195,7 @@ int c_oneVmInfo(int vmid, char* ret_info, int length)
}
xmlrpc_DECREF(resultP);
free(return_string);
VIR_FREE(return_string);
return retval;
}

View File

@ -278,7 +278,6 @@ char* xmlOneTemplate(virConnectPtr conn,virDomainDefPtr def)
no_memory:
virReportOOMError(conn);
char* tmp = virBufferContentAndReset(&buf);
VIR_FREE(tmp);
virBufferFreeAndReset(&buf);
return NULL;
};

View File

@ -345,10 +345,12 @@ openvz_replace(const char* str,
str_start = offset + from_len;
}
virBufferAdd(&buf, str_start, strlen(str_start));
virBufferAdd(&buf, str_start, -1);
if(virBufferError(&buf))
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
return NULL;
}
return virBufferContentAndReset(&buf);
}

View File

@ -792,8 +792,7 @@ openvzDomainSetNetworkConfig(virConnectPtr conn,
return 0;
exit:
param = virBufferContentAndReset(&buf);
VIR_FREE(param);
virBufferFreeAndReset(&buf);
return -1;
}

View File

@ -486,13 +486,12 @@ phypExec(LIBSSH2_SESSION * session, char *cmd, int *exit_status,
err:
(*exit_status) = SSH_CMD_ERR;
char *cleanup_buf = virBufferContentAndReset(&tex_ret);
VIR_FREE(cleanup_buf);
virBufferFreeAndReset(&tex_ret);
return NULL;
exit:
if (virBufferError(&tex_ret)) {
virBufferFreeAndReset(&tex_ret);
virReportOOMError(conn);
return NULL;
}

View File

@ -1379,6 +1379,7 @@ qemuBuildHostNetStr(virConnectPtr conn,
type_sep = ','; /* dead-store, but leave it, in case... */
}
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
virReportOOMError(conn);
return -1;
}
@ -1866,8 +1867,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
virBufferAddLit(&buf, "control,");
qemudBuildCommandLineChrDevStr(monitor_chr, &buf);
if (virBufferError(&buf))
goto error;
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
goto no_memory;
}
ADD_ARG_LIT("-monitor");
ADD_ARG(virBufferContentAndReset(&buf));
@ -2054,8 +2057,8 @@ int qemudBuildCommandLine(virConnectPtr conn,
}
if (virBufferError(&opt)) {
virReportOOMError(conn);
goto error;
virBufferFreeAndReset(&opt);
goto no_memory;
}
optstr = virBufferContentAndReset(&opt);
@ -2197,8 +2200,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
virDomainChrDefPtr serial = def->serials[i];
qemudBuildCommandLineChrDevStr(serial, &buf);
if (virBufferError(&buf))
goto error;
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
goto no_memory;
}
ADD_ARG_LIT("-serial");
ADD_ARG(virBufferContentAndReset(&buf));
@ -2214,8 +2219,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
virDomainChrDefPtr parallel = def->parallels[i];
qemudBuildCommandLineChrDevStr(parallel, &buf);
if (virBufferError(&buf))
goto error;
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
goto no_memory;
}
ADD_ARG_LIT("-parallel");
ADD_ARG(virBufferContentAndReset(&buf));
@ -2240,8 +2247,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
}
qemudBuildCommandLineChrDevChardevStr(channel, id, &buf);
if (virBufferError(&buf))
goto error;
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
goto no_memory;
}
ADD_ARG_LIT("-chardev");
ADD_ARG(virBufferContentAndReset(&buf));
@ -2254,8 +2263,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
VIR_FREE(addr);
if (virBufferError(&buf))
goto error;
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
goto no_memory;
}
ADD_ARG_LIT("-net");
ADD_ARG(virBufferContentAndReset(&buf));
@ -2313,8 +2324,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
virBufferVSprintf(&opt, "%d",
def->graphics[0]->data.vnc.port - 5900);
}
if (virBufferError(&opt))
if (virBufferError(&opt)) {
virBufferFreeAndReset(&opt);
goto no_memory;
}
optstr = virBufferContentAndReset(&opt);

View File

@ -4491,8 +4491,11 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
tmp++;
}
if (virBufferError(&buf))
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
virReportOOMError(conn);
goto cleanup;
}
ret = virBufferContentAndReset(&buf);

View File

@ -1424,10 +1424,10 @@ retry:
/* Free hostname copy */
free (priv->hostname);
VIR_FREE(priv->hostname);
/* See comment for remoteType. */
free (priv->type);
VIR_FREE(priv->type);
/* Free callback list */
virDomainEventCallbackListFree(priv->callbackList);
@ -3411,7 +3411,7 @@ remoteDomainBlockPeek (virDomainPtr domain,
rv = 0;
cleanup:
free (ret.buffer.buffer_val);
VIR_FREE(ret.buffer.buffer_val);
done:
remoteDriverUnlock(priv);
@ -3462,7 +3462,7 @@ remoteDomainMemoryPeek (virDomainPtr domain,
rv = 0;
cleanup:
free (ret.buffer.buffer_val);
VIR_FREE(ret.buffer.buffer_val);
done:
remoteDriverUnlock(priv);

View File

@ -77,8 +77,8 @@ mcsRemove(const char *mcs)
else {
mcsList = ptr->next;
}
free(ptr->mcs);
free(ptr);
VIR_FREE(ptr->mcs);
VIR_FREE(ptr);
return 0;
}
prevptr = ptr;
@ -293,7 +293,7 @@ SELinuxGetSecurityLabel(virConnectPtr conn,
}
strcpy(sec->label, (char *) ctx);
free(ctx);
VIR_FREE(ctx);
sec->enforcing = security_getenforce();
if (sec->enforcing == -1) {

View File

@ -64,10 +64,10 @@ vahDeinit(vahControl * ctl)
VIR_FREE(ctl->def);
if (ctl->caps)
virCapabilitiesFree(ctl->caps);
free(ctl->files);
free(ctl->hvm);
free(ctl->arch);
free(ctl->newdisk);
VIR_FREE(ctl->files);
VIR_FREE(ctl->hvm);
VIR_FREE(ctl->arch);
VIR_FREE(ctl->newdisk);
return 0;
}
@ -761,7 +761,7 @@ vah_add_file(virBufferPtr buf, const char *path, const char *perms)
}
clean:
free(tmp);
VIR_FREE(tmp);
return rc;
}
@ -883,6 +883,7 @@ get_files(vahControl * ctl)
goto clean;
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
vah_error(NULL, 0, "failed to allocate file buffer");
goto clean;
}
@ -1048,8 +1049,10 @@ main(int argc, char **argv)
if (ctl->files)
virBufferVSprintf(&buf, "%s", ctl->files);
if (virBufferError(&buf))
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
vah_error(ctl, 1, "failed to allocate buffer");
}
included_files = virBufferContentAndReset(&buf);

View File

@ -445,8 +445,7 @@ cleanup:
conn->secretDriver->undefine(secret);
virSecretFree(secret);
}
xml = virBufferContentAndReset(&buf);
VIR_FREE(xml);
virBufferFreeAndReset(&buf);
virSecretDefFree(def);
VIR_FREE(enc_secret);
return ret;
@ -1317,8 +1316,7 @@ virStorageBackendRunProgNul(virConnectPtr conn,
goto cleanup;
n_tok = 0;
for (i = 0; i < n_columns; i++) {
free (v[i]);
v[i] = NULL;
VIR_FREE(v[i]);
}
}
}
@ -1331,8 +1329,8 @@ virStorageBackendRunProgNul(virConnectPtr conn,
cleanup:
for (i = 0; i < n_columns; i++)
free (v[i]);
free (v);
VIR_FREE(v[i]);
VIR_FREE(v);
if (fp)
fclose (fp);

View File

@ -422,8 +422,7 @@ storageListDefinedPools(virConnectPtr conn,
cleanup:
storageDriverUnlock(driver);
for (i = 0 ; i < got ; i++) {
free(names[i]);
names[i] = NULL;
VIR_FREE(names[i]);
}
memset(names, 0, nnames * sizeof(*names));
return -1;

View File

@ -163,7 +163,6 @@ umlBuildCommandLineNet(virConnectPtr conn,
virDomainNetDefPtr def,
int idx)
{
char *ret;
virBuffer buf = VIR_BUFFER_INITIALIZER;
/* General format: ethNN=type,options */
@ -265,8 +264,7 @@ umlBuildCommandLineNet(virConnectPtr conn,
return virBufferContentAndReset(&buf);
error:
ret = virBufferContentAndReset(&buf);
VIR_FREE(ret);
virBufferFreeAndReset(&buf);
return NULL;
}

View File

@ -166,6 +166,19 @@ virBufferContentAndReset(const virBufferPtr buf)
return str;
}
/**
* virBufferFreeAndReset:
* @buf: the buffer to free and reset
*
* Frees the buffer content and resets the buffer structure.
*/
void virBufferFreeAndReset(const virBufferPtr buf)
{
char *str = virBufferContentAndReset(buf);
VIR_FREE(str);
}
/**
* virBufferError:
* @buf: the buffer

View File

@ -35,6 +35,7 @@ struct _virBuffer {
#endif
char *virBufferContentAndReset(const virBufferPtr buf);
void virBufferFreeAndReset(const virBufferPtr buf);
int virBufferError(const virBufferPtr buf);
unsigned int virBufferUse(const virBufferPtr buf);
void virBufferAdd(const virBufferPtr buf, const char *str, int len);

View File

@ -927,15 +927,15 @@ virConfWriteFile(const char *filename, virConfPtr conf)
}
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
virReportOOMError(NULL);
return -1;
}
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR );
if (fd < 0) {
char *tmp = virBufferContentAndReset(&buf);
virBufferFreeAndReset(&buf);
virConfError(NULL, VIR_ERR_WRITE_FAILED, _("failed to open file"));
VIR_FREE(tmp);
return -1;
}
@ -983,6 +983,7 @@ virConfWriteMem(char *memory, int *len, virConfPtr conf)
}
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
virReportOOMError(NULL);
return -1;
}

View File

@ -867,8 +867,10 @@ char *virLogGetFilters(void) {
}
virLogUnlock();
if (virBufferError(&filterbuf))
if (virBufferError(&filterbuf)) {
virBufferFreeAndReset(&filterbuf);
return NULL;
}
return virBufferContentAndReset(&filterbuf);
}
@ -905,8 +907,10 @@ char *virLogGetOutputs(void) {
}
virLogUnlock();
if (virBufferError(&outputbuf))
if (virBufferError(&outputbuf)) {
virBufferFreeAndReset(&outputbuf);
return NULL;
}
return virBufferContentAndReset(&outputbuf);
}

View File

@ -154,6 +154,7 @@ qparam_get_query (const struct qparam_set *ps)
}
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
virReportOOMError(NULL);
return NULL;
}

View File

@ -936,7 +936,7 @@ saferead_lim (int fd, size_t max_len, size_t *length)
}
}
free (buf);
VIR_FREE(buf);
errno = save_errno;
return NULL;
}

View File

@ -345,10 +345,10 @@ virResetError(virErrorPtr err)
{
if (err == NULL)
return;
free(err->message);
free(err->str1);
free(err->str2);
free(err->str3);
VIR_FREE(err->message);
VIR_FREE(err->str1);
VIR_FREE(err->str2);
VIR_FREE(err->str3);
memset(err, 0, sizeof(virError));
}

View File

@ -156,12 +156,12 @@ check_bd_connected (xenUnifiedPrivatePtr priv, int device, int domid)
* string instead of an error. Assume it's not connected
* in this case.
*/
free (rs);
VIR_FREE(rs);
return 0;
}
r = STREQ (rs, "4");
free (rs);
VIR_FREE(rs);
return r;
}

View File

@ -525,6 +525,7 @@ xend_op_ext(virConnectPtr xend, const char *path, char *error,
}
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
virReportOOMError(NULL);
return -1;
}
@ -5293,8 +5294,10 @@ xenDaemonFormatSxprChr(virConnectPtr conn,
break;
}
if (virBufferError(buf))
if (virBufferError(buf)) {
virReportOOMError(conn);
return -1;
}
return 0;
}
@ -5634,8 +5637,10 @@ xenDaemonFormatSxprSound(virConnectPtr conn,
virBufferVSprintf(buf, "%s%s", i ? "," : "", str);
}
if (virBufferError(buf))
if (virBufferError(buf)) {
virReportOOMError(conn);
return -1;
}
return 0;
}
@ -5910,14 +5915,13 @@ xenDaemonFormatSxpr(virConnectPtr conn,
if (virBufferError(&buf)) {
virReportOOMError(conn);
return NULL;
goto error;
}
return virBufferContentAndReset(&buf);
error:
tmp = virBufferContentAndReset(&buf);
VIR_FREE(tmp);
virBufferFreeAndReset(&buf);
return NULL;
}
@ -5964,7 +5968,7 @@ virDomainXMLDevID(virDomainPtr domain,
return -1;
tmp = virStrcpy(ref, xref, ref_len);
free(xref);
VIR_FREE(xref);
if (tmp == NULL)
return -1;
} else if (dev->type == VIR_DOMAIN_DEVICE_NET) {
@ -5984,7 +5988,7 @@ virDomainXMLDevID(virDomainPtr domain,
return -1;
tmp = virStrcpy(ref, xref, ref_len);
free(xref);
VIR_FREE(xref);
if (tmp == NULL)
return -1;
} else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV &&

View File

@ -1750,6 +1750,7 @@ int xenXMDomainPinVcpu(virDomainPtr domain,
}
if (virBufferError(&mapbuf)) {
virBufferFreeAndReset(&mapbuf);
virReportOOMError(domain->conn);
goto cleanup;
}
@ -1980,7 +1981,6 @@ static int xenXMDomainConfigFormatDisk(virConnectPtr conn,
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
virConfValuePtr val, tmp;
char *str;
if(disk->src) {
if (disk->driverName) {
@ -2021,7 +2021,7 @@ static int xenXMDomainConfigFormatDisk(virConnectPtr conn,
if (virBufferError(&buf)) {
virReportOOMError(conn);
return -1;
goto cleanup;
}
if (VIR_ALLOC(val) < 0) {
@ -2042,8 +2042,7 @@ static int xenXMDomainConfigFormatDisk(virConnectPtr conn,
return 0;
cleanup:
str = virBufferContentAndReset(&buf);
VIR_FREE(str);
virBufferFreeAndReset(&buf);
return -1;
}
@ -2054,7 +2053,6 @@ static int xenXMDomainConfigFormatNet(virConnectPtr conn,
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
virConfValuePtr val, tmp;
char *str;
xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
virBufferVSprintf(&buf, "mac=%02x:%02x:%02x:%02x:%02x:%02x",
@ -2131,8 +2129,10 @@ static int xenXMDomainConfigFormatNet(virConnectPtr conn,
virBufferVSprintf(&buf, ",vifname=%s",
net->ifname);
if (virBufferError(&buf))
if (virBufferError(&buf)) {
virReportOOMError(conn);
goto cleanup;
}
if (VIR_ALLOC(val) < 0) {
virReportOOMError(conn);
@ -2152,8 +2152,7 @@ static int xenXMDomainConfigFormatNet(virConnectPtr conn,
return 0;
cleanup:
str = virBufferContentAndReset(&buf);
VIR_FREE(str);
virBufferFreeAndReset(&buf);
return -1;
}
@ -2482,8 +2481,10 @@ virConfPtr xenXMDomainConfigFormat(virConnectPtr conn,
virBufferVSprintf(&buf, ",keymap=%s",
def->graphics[0]->data.vnc.keymap);
}
if (virBufferError(&buf))
if (virBufferError(&buf)) {
virBufferFreeAndReset(&buf);
goto no_memory;
}
vfbstr = virBufferContentAndReset(&buf);

View File

@ -434,7 +434,7 @@ xenStoreGetDomainInfo(virDomainPtr domain, virDomainInfoPtr info)
if (tmp != NULL) {
if (tmp[0] == '1')
info->state = VIR_DOMAIN_RUNNING;
free(tmp);
VIR_FREE(tmp);
} else {
info->state = VIR_DOMAIN_NOSTATE;
}
@ -442,7 +442,7 @@ xenStoreGetDomainInfo(virDomainPtr domain, virDomainInfoPtr info)
if (tmp != NULL) {
info->memory = atol(tmp);
info->maxMem = atol(tmp);
free(tmp);
VIR_FREE(tmp);
} else {
info->memory = 0;
info->maxMem = 0;
@ -452,7 +452,7 @@ xenStoreGetDomainInfo(virDomainPtr domain, virDomainInfoPtr info)
tmp = virDomainDoStoreQuery(domain->conn, domain->id, "cpu_time");
if (tmp != NULL) {
info->cpuTime = atol(tmp);
free(tmp);
VIR_FREE(tmp);
} else {
info->cpuTime = 0;
}
@ -462,7 +462,7 @@ xenStoreGetDomainInfo(virDomainPtr domain, virDomainInfoPtr info)
tmp2 = virConnectDoStoreList(domain->conn, request, &nb_vcpus);
if (tmp2 != NULL) {
info->nrVirtCpu = nb_vcpus;
free(tmp2);
VIR_FREE(tmp2);
}
return (0);
}
@ -698,7 +698,7 @@ xenStoreLookupByName(virConnectPtr conn, const char *name)
tmp = xs_read(priv->xshandle, 0, prop, &len);
if (tmp != NULL) {
found = STREQ (name, tmp);
free(tmp);
VIR_FREE(tmp);
if (found)
break;
}
@ -713,8 +713,8 @@ xenStoreLookupByName(virConnectPtr conn, const char *name)
ret->id = id;
done:
free(xenddomain);
free(idlist);
VIR_FREE(xenddomain);
VIR_FREE(idlist);
return(ret);
}
@ -843,7 +843,7 @@ int xenStoreDomainGetVNCPort(virConnectPtr conn, int domid) {
ret = strtol(tmp, &end, 10);
if (ret == 0 && end == tmp)
ret = -1;
free(tmp);
VIR_FREE(tmp);
}
return(ret);
}
@ -903,7 +903,7 @@ xenStoreDomainGetOSTypeID(virConnectPtr conn, int id) {
if (vm) {
snprintf(query, 199, "%s/image/ostype", vm);
str = xs_read(priv->xshandle, 0, &query[0], &len);
free(vm);
VIR_FREE(vm);
}
if (str == NULL)
str = strdup("linux");

View File

@ -3800,7 +3800,7 @@ static int buildPoolXML(const vshCmd *cmd, char **retname, char **xml) {
return TRUE;
cleanup:
free(virBufferContentAndReset(&buf));
virBufferFreeAndReset(&buf);
return FALSE;
}
@ -4663,7 +4663,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
}
cleanup:
free(virBufferContentAndReset(&buf));
virBufferFreeAndReset(&buf);
virStoragePoolFree(pool);
return FALSE;
}