mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
Stop free'ing 'const char *' strings
The VIR_FREE() macro will cast away any const-ness. This masked a number of places where we passed a 'const char *' string to VIR_FREE. Fortunately in all of these cases, the variable was not in fact const data, but a heap allocated string. Fix all the variable declarations to reflect this. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
41b5505679
commit
bbcdd9b5dc
@ -6777,9 +6777,9 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr def,
|
||||
{
|
||||
int ret = -1;
|
||||
unsigned int port;
|
||||
const char *targetType = virXMLPropString(cur, "type");
|
||||
const char *addrStr = NULL;
|
||||
const char *portStr = NULL;
|
||||
char *targetType = virXMLPropString(cur, "type");
|
||||
char *addrStr = NULL;
|
||||
char *portStr = NULL;
|
||||
|
||||
if ((def->targetType =
|
||||
virDomainChrTargetTypeFromString(def, def->deviceType,
|
||||
@ -8193,7 +8193,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
|
||||
while (cur != NULL) {
|
||||
if (cur->type == XML_ELEMENT_NODE) {
|
||||
if (xmlStrEqual(cur->name, BAD_CAST "channel")) {
|
||||
const char *name, *mode;
|
||||
char *name, *mode;
|
||||
int nameval, modeval;
|
||||
name = virXMLPropString(cur, "name");
|
||||
mode = virXMLPropString(cur, "mode");
|
||||
@ -8227,7 +8227,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
|
||||
|
||||
def->data.spice.channels[nameval] = modeval;
|
||||
} else if (xmlStrEqual(cur->name, BAD_CAST "image")) {
|
||||
const char *compression = virXMLPropString(cur, "compression");
|
||||
char *compression = virXMLPropString(cur, "compression");
|
||||
int compressionVal;
|
||||
|
||||
if (!compression) {
|
||||
@ -8248,7 +8248,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
|
||||
|
||||
def->data.spice.image = compressionVal;
|
||||
} else if (xmlStrEqual(cur->name, BAD_CAST "jpeg")) {
|
||||
const char *compression = virXMLPropString(cur, "compression");
|
||||
char *compression = virXMLPropString(cur, "compression");
|
||||
int compressionVal;
|
||||
|
||||
if (!compression) {
|
||||
@ -8269,7 +8269,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
|
||||
|
||||
def->data.spice.jpeg = compressionVal;
|
||||
} else if (xmlStrEqual(cur->name, BAD_CAST "zlib")) {
|
||||
const char *compression = virXMLPropString(cur, "compression");
|
||||
char *compression = virXMLPropString(cur, "compression");
|
||||
int compressionVal;
|
||||
|
||||
if (!compression) {
|
||||
@ -8290,7 +8290,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
|
||||
|
||||
def->data.spice.zlib = compressionVal;
|
||||
} else if (xmlStrEqual(cur->name, BAD_CAST "playback")) {
|
||||
const char *compression = virXMLPropString(cur, "compression");
|
||||
char *compression = virXMLPropString(cur, "compression");
|
||||
int compressionVal;
|
||||
|
||||
if (!compression) {
|
||||
@ -8311,7 +8311,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
|
||||
|
||||
def->data.spice.playback = compressionVal;
|
||||
} else if (xmlStrEqual(cur->name, BAD_CAST "streaming")) {
|
||||
const char *mode = virXMLPropString(cur, "mode");
|
||||
char *mode = virXMLPropString(cur, "mode");
|
||||
int modeVal;
|
||||
|
||||
if (!mode) {
|
||||
@ -8331,7 +8331,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
|
||||
|
||||
def->data.spice.streaming = modeVal;
|
||||
} else if (xmlStrEqual(cur->name, BAD_CAST "clipboard")) {
|
||||
const char *copypaste = virXMLPropString(cur, "copypaste");
|
||||
char *copypaste = virXMLPropString(cur, "copypaste");
|
||||
int copypasteVal;
|
||||
|
||||
if (!copypaste) {
|
||||
@ -8351,7 +8351,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
|
||||
|
||||
def->data.spice.copypaste = copypasteVal;
|
||||
} else if (xmlStrEqual(cur->name, BAD_CAST "mouse")) {
|
||||
const char *mode = virXMLPropString(cur, "mode");
|
||||
char *mode = virXMLPropString(cur, "mode");
|
||||
int modeVal;
|
||||
|
||||
if (!mode) {
|
||||
@ -8543,9 +8543,9 @@ virDomainRNGDefParseXML(const xmlNodePtr node,
|
||||
xmlXPathContextPtr ctxt,
|
||||
unsigned int flags)
|
||||
{
|
||||
const char *model = NULL;
|
||||
const char *backend = NULL;
|
||||
const char *type = NULL;
|
||||
char *model = NULL;
|
||||
char *backend = NULL;
|
||||
char *type = NULL;
|
||||
virDomainRNGDefPtr def;
|
||||
xmlNodePtr save = ctxt->node;
|
||||
xmlNodePtr *backends = NULL;
|
||||
@ -15220,7 +15220,7 @@ virDomainChrDefFormat(virBufferPtr buf,
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char *addr = virSocketAddrFormat(def->target.addr);
|
||||
char *addr = virSocketAddrFormat(def->target.addr);
|
||||
if (addr == NULL)
|
||||
return -1;
|
||||
|
||||
|
@ -36,8 +36,8 @@ virNetDevVlanParse(xmlNodePtr node, xmlXPathContextPtr ctxt, virNetDevVlanPtr de
|
||||
{
|
||||
int ret = -1;
|
||||
xmlNodePtr save = ctxt->node;
|
||||
const char *trunk = NULL;
|
||||
const char *nativeMode = NULL;
|
||||
char *trunk = NULL;
|
||||
char *nativeMode = NULL;
|
||||
xmlNodePtr *tagNodes = NULL;
|
||||
int nTags;
|
||||
size_t i;
|
||||
|
@ -2432,7 +2432,8 @@ static const char *
|
||||
virNWFilterIsAllowedChain(const char *chainname)
|
||||
{
|
||||
enum virNWFilterChainSuffixType i;
|
||||
const char *name, *msg;
|
||||
const char *name;
|
||||
char *msg;
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
bool printed = false;
|
||||
|
||||
|
@ -367,7 +367,7 @@ udevLogFunction(struct udev *udev ATTRIBUTE_UNUSED,
|
||||
va_list args)
|
||||
{
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
const char *format = NULL;
|
||||
char *format = NULL;
|
||||
|
||||
virBufferAdd(&buf, fmt, -1);
|
||||
virBufferTrim(&buf, "\n", -1);
|
||||
|
@ -499,7 +499,7 @@ virNWFilterDetermineMissingVarsRec(virNWFilterDefPtr filter,
|
||||
for (j = 0; j < rule->nVarAccess; j++) {
|
||||
if (!virNWFilterVarAccessIsAvailable(rule->varAccess[j],
|
||||
vars)) {
|
||||
const char *varAccess;
|
||||
char *varAccess;
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
|
||||
virNWFilterVarAccessPrint(rule->varAccess[j], &buf);
|
||||
|
@ -6147,7 +6147,8 @@ static char *qemuBuildTPMBackendStr(const virDomainDefPtr def,
|
||||
const virDomainTPMDefPtr tpm = def->tpm;
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
const char *type = virDomainTPMBackendTypeToString(tpm->type);
|
||||
const char *cancel_path, *tpmdev;
|
||||
char *cancel_path;
|
||||
const char *tpmdev;
|
||||
|
||||
virBufferAsprintf(&buf, "%s,id=tpm-%s", type, tpm->info.alias);
|
||||
|
||||
@ -7772,7 +7773,7 @@ qemuBuildCommandLine(virConnectPtr conn,
|
||||
}
|
||||
|
||||
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_RTC)) {
|
||||
const char *rtcopt;
|
||||
char *rtcopt;
|
||||
virCommandAddArg(cmd, "-rtc");
|
||||
if (!(rtcopt = qemuBuildClockArgStr(&def->clock)))
|
||||
goto error;
|
||||
|
@ -1383,7 +1383,7 @@ qemuDomainDefCopy(virQEMUDriverPtr driver,
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
virDomainDefPtr ret = NULL;
|
||||
virCapsPtr caps = NULL;
|
||||
const char *xml = NULL;
|
||||
char *xml = NULL;
|
||||
|
||||
if (qemuDomainDefFormatBuf(driver, src, flags, &buf) < 0)
|
||||
goto cleanup;
|
||||
|
@ -14658,7 +14658,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
|
||||
virDomainDefPtr persistentDef = NULL;
|
||||
virDomainBlockIoTuneInfo info;
|
||||
virDomainBlockIoTuneInfo *oldinfo;
|
||||
const char *device = NULL;
|
||||
char *device = NULL;
|
||||
int ret = -1;
|
||||
size_t i;
|
||||
int idx = -1;
|
||||
@ -14836,7 +14836,7 @@ qemuDomainGetBlockIoTune(virDomainPtr dom,
|
||||
qemuDomainObjPrivatePtr priv;
|
||||
virDomainDefPtr persistentDef = NULL;
|
||||
virDomainBlockIoTuneInfo reply;
|
||||
const char *device = NULL;
|
||||
char *device = NULL;
|
||||
int ret = -1;
|
||||
size_t i;
|
||||
virCapsPtr caps = NULL;
|
||||
|
@ -268,8 +268,9 @@ virNetSSHKbIntCb(const char *name ATTRIBUTE_UNUSED,
|
||||
cleanup:
|
||||
if (askcred) {
|
||||
for (i = 0; i < num_prompts; i++) {
|
||||
char *prompt = (char *)askcred[i].prompt;
|
||||
VIR_FREE(askcred[i].result);
|
||||
VIR_FREE(askcred[i].prompt);
|
||||
VIR_FREE(prompt);
|
||||
}
|
||||
}
|
||||
|
||||
@ -291,6 +292,8 @@ virNetSSHCheckHostKey(virNetSSHSessionPtr sess)
|
||||
int ret;
|
||||
const char *key;
|
||||
const char *keyhash;
|
||||
char *keyhashstr;
|
||||
char *tmp;
|
||||
int keyType;
|
||||
size_t keyLength;
|
||||
char *errmsg;
|
||||
@ -364,7 +367,7 @@ virNetSSHCheckHostKey(virNetSSHSessionPtr sess)
|
||||
* Sadly, there's no constant to describe the hash length, so
|
||||
* we have to use a *MAGIC* constant. */
|
||||
for (i = 0; i < 16; i++)
|
||||
virBufferAsprintf(&buff, "%02hhX:", keyhash[i]);
|
||||
virBufferAsprintf(&buff, "%02hhX:", keyhash[i]);
|
||||
virBufferTrim(&buff, ":", 1);
|
||||
|
||||
if (virBufferError(&buff) != 0) {
|
||||
@ -372,16 +375,16 @@ virNetSSHCheckHostKey(virNetSSHSessionPtr sess)
|
||||
return -1;
|
||||
}
|
||||
|
||||
keyhash = virBufferContentAndReset(&buff);
|
||||
keyhashstr = virBufferContentAndReset(&buff);
|
||||
|
||||
askKey.type = VIR_CRED_ECHOPROMPT;
|
||||
if (virAsprintf((char **)&askKey.prompt,
|
||||
_("Accept SSH host key with hash '%s' for "
|
||||
"host '%s:%d' (%s/%s)?"),
|
||||
keyhash,
|
||||
keyhashstr,
|
||||
sess->hostname, sess->port,
|
||||
"y", "n") < 0) {
|
||||
VIR_FREE(keyhash);
|
||||
VIR_FREE(keyhashstr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -389,23 +392,25 @@ virNetSSHCheckHostKey(virNetSSHSessionPtr sess)
|
||||
virReportError(VIR_ERR_SSH, "%s",
|
||||
_("failed to retrieve decision to accept "
|
||||
"host key"));
|
||||
VIR_FREE(askKey.prompt);
|
||||
VIR_FREE(keyhash);
|
||||
tmp = (char*)askKey.prompt;
|
||||
VIR_FREE(tmp);
|
||||
VIR_FREE(keyhashstr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
VIR_FREE(askKey.prompt);
|
||||
tmp = (char*)askKey.prompt;
|
||||
VIR_FREE(tmp);
|
||||
|
||||
if (!askKey.result ||
|
||||
STRCASENEQ(askKey.result, "y")) {
|
||||
virReportError(VIR_ERR_SSH,
|
||||
_("SSH host key for '%s' (%s) was not accepted"),
|
||||
sess->hostname, keyhash);
|
||||
VIR_FREE(keyhash);
|
||||
sess->hostname, keyhashstr);
|
||||
VIR_FREE(keyhashstr);
|
||||
VIR_FREE(askKey.result);
|
||||
return -1;
|
||||
}
|
||||
VIR_FREE(keyhash);
|
||||
VIR_FREE(keyhashstr);
|
||||
VIR_FREE(askKey.result);
|
||||
}
|
||||
|
||||
@ -590,6 +595,7 @@ virNetSSHAuthenticatePrivkey(virNetSSHSessionPtr sess,
|
||||
size_t i;
|
||||
char *errmsg;
|
||||
int ret;
|
||||
char *tmp;
|
||||
|
||||
/* try open the key with no password */
|
||||
if ((ret = libssh2_userauth_publickey_fromfile(sess->session,
|
||||
@ -644,11 +650,13 @@ virNetSSHAuthenticatePrivkey(virNetSSHSessionPtr sess,
|
||||
virReportError(VIR_ERR_SSH, "%s",
|
||||
_("failed to retrieve private key passphrase: "
|
||||
"callback has failed"));
|
||||
VIR_FREE(retr_passphrase.prompt);
|
||||
tmp = (char *)retr_passphrase.prompt;
|
||||
VIR_FREE(tmp);
|
||||
return -1;
|
||||
}
|
||||
|
||||
VIR_FREE(retr_passphrase.prompt);
|
||||
tmp = (char *)retr_passphrase.prompt;
|
||||
VIR_FREE(tmp);
|
||||
|
||||
ret = libssh2_userauth_publickey_fromfile(sess->session,
|
||||
priv->username,
|
||||
|
@ -931,7 +931,7 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
|
||||
unsigned int flags)
|
||||
{
|
||||
int ret = -1;
|
||||
const char *create_tool;
|
||||
char *create_tool;
|
||||
int imgformat;
|
||||
virCommandPtr cmd;
|
||||
|
||||
|
@ -1450,7 +1450,7 @@ storageVolLookupByPath(virConnectPtr conn,
|
||||
virStoragePoolObjLock(driver->pools.objs[i]);
|
||||
if (virStoragePoolObjIsActive(driver->pools.objs[i])) {
|
||||
virStorageVolDefPtr vol;
|
||||
const char *stable_path;
|
||||
char *stable_path;
|
||||
|
||||
stable_path = virStorageBackendStablePath(driver->pools.objs[i],
|
||||
cleanpath,
|
||||
|
@ -405,6 +405,7 @@ virExec(virCommandPtr cmd)
|
||||
int childout = -1;
|
||||
int childerr = -1;
|
||||
int tmpfd;
|
||||
char *binarystr = NULL;
|
||||
const char *binary = NULL;
|
||||
int forkRet, ret;
|
||||
struct sigaction waxon, waxoff;
|
||||
@ -412,7 +413,7 @@ virExec(virCommandPtr cmd)
|
||||
int ngroups;
|
||||
|
||||
if (cmd->args[0][0] != '/') {
|
||||
if (!(binary = virFindFileInPath(cmd->args[0]))) {
|
||||
if (!(binary = binarystr = virFindFileInPath(cmd->args[0]))) {
|
||||
virReportSystemError(ENOENT,
|
||||
_("Cannot find '%s' in path"),
|
||||
cmd->args[0]);
|
||||
@ -506,8 +507,7 @@ virExec(virCommandPtr cmd)
|
||||
|
||||
cmd->pid = pid;
|
||||
|
||||
if (binary != cmd->args[0])
|
||||
VIR_FREE(binary);
|
||||
VIR_FREE(binarystr);
|
||||
VIR_FREE(groups);
|
||||
|
||||
return 0;
|
||||
@ -713,8 +713,7 @@ virExec(virCommandPtr cmd)
|
||||
should never jump here on error */
|
||||
|
||||
VIR_FREE(groups);
|
||||
if (binary != cmd->args[0])
|
||||
VIR_FREE(binary);
|
||||
VIR_FREE(binarystr);
|
||||
|
||||
/* NB we don't virReportError() on any failures here
|
||||
because the code which jumped here already raised
|
||||
|
@ -94,7 +94,7 @@ static regex_t *virLogRegex = NULL;
|
||||
* based on a matching pattern (currently a substring)
|
||||
*/
|
||||
struct _virLogFilter {
|
||||
const char *match;
|
||||
char *match;
|
||||
virLogPriority priority;
|
||||
unsigned int flags;
|
||||
};
|
||||
@ -115,7 +115,7 @@ struct _virLogOutput {
|
||||
virLogCloseFunc c;
|
||||
virLogPriority priority;
|
||||
virLogDestination dest;
|
||||
const char *name;
|
||||
char *name;
|
||||
};
|
||||
typedef struct _virLogOutput virLogOutput;
|
||||
typedef virLogOutput *virLogOutputPtr;
|
||||
|
@ -2346,8 +2346,8 @@ cmdDomIfSetLink(vshControl *ctl, const vshCmd *cmd)
|
||||
virDomainPtr dom;
|
||||
const char *iface;
|
||||
const char *state;
|
||||
const char *value;
|
||||
const char *desc;
|
||||
char *value;
|
||||
char *desc;
|
||||
virMacAddr macaddr;
|
||||
const char *element;
|
||||
const char *attr;
|
||||
@ -6186,7 +6186,7 @@ cmdCPUBaseline(vshControl *ctl, const vshCmd *cmd)
|
||||
bool ret = false;
|
||||
char *buffer;
|
||||
char *result = NULL;
|
||||
const char **list = NULL;
|
||||
char **list = NULL;
|
||||
unsigned int flags = 0;
|
||||
int count = 0;
|
||||
|
||||
@ -6243,7 +6243,8 @@ cmdCPUBaseline(vshControl *ctl, const vshCmd *cmd)
|
||||
list[i] = vshStrdup(ctl, (const char *)xmlBufferContent(xml_buf));
|
||||
}
|
||||
|
||||
result = virConnectBaselineCPU(ctl->conn, list, count, flags);
|
||||
result = virConnectBaselineCPU(ctl->conn,
|
||||
(const char **)list, count, flags);
|
||||
|
||||
if (result) {
|
||||
vshPrint(ctl, "%s", result);
|
||||
@ -6398,7 +6399,7 @@ cmdCPUStats(vshControl *ctl, const vshCmd *cmd)
|
||||
params[pos].value.ul / 1000000000,
|
||||
params[pos].value.ul % 1000000000);
|
||||
} else {
|
||||
const char *s = vshGetTypedParamValue(ctl, ¶ms[pos]);
|
||||
char *s = vshGetTypedParamValue(ctl, ¶ms[pos]);
|
||||
vshPrint(ctl, _("%s\n"), s);
|
||||
VIR_FREE(s);
|
||||
}
|
||||
@ -9874,8 +9875,8 @@ vshPrepareDiskXML(xmlNodePtr disk_node,
|
||||
{
|
||||
xmlNodePtr cur = NULL;
|
||||
xmlBufferPtr xml_buf = NULL;
|
||||
const char *disk_type = NULL;
|
||||
const char *device_type = NULL;
|
||||
char *disk_type = NULL;
|
||||
char *device_type = NULL;
|
||||
xmlNodePtr new_node = NULL;
|
||||
char *ret = NULL;
|
||||
|
||||
@ -10211,9 +10212,9 @@ cmdChangeMedia(vshControl *ctl, const vshCmd *cmd)
|
||||
virDomainPtr dom = NULL;
|
||||
const char *source = NULL;
|
||||
const char *path = NULL;
|
||||
const char *doc = NULL;
|
||||
char *doc = NULL;
|
||||
xmlNodePtr disk_node = NULL;
|
||||
const char *disk_xml = NULL;
|
||||
char *disk_xml = NULL;
|
||||
bool ret = false;
|
||||
int prepare_type = 0;
|
||||
const char *action = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user