}
if (ans.data.arg == -1)
return NULL;
- if (ans.len <= sizeof(virProxyPacket)) {
+ if (ans.len <= sizeof(virProxyPacket)
+ || ans.len > sizeof (ans) - sizeof(virProxyPacket)) {
virProxyError(conn, VIR_ERR_OPERATION_FAILED, __FUNCTION__);
return NULL;
}
virReportOOMError();
return NULL;
}
- memmove (xml, ans.extra.str, xmllen);
+ memcpy (xml, ans.extra.str, xmllen);
xml[xmllen] = '\0';
return xml;
if (ret < 0) {
return(NULL);
}
- if (ans.len <= sizeof(virProxyPacket)) {
+ if (ans.len <= sizeof(virProxyPacket)
+ || ans.len > sizeof (ans) - sizeof(virProxyPacket)) {
virProxyError(domain->conn, VIR_ERR_OPERATION_FAILED, __FUNCTION__);
return (NULL);
}
virReportOOMError();
return NULL;
}
- memmove(xml, &ans.extra.dinfo, xmllen);
+ memcpy(xml, &ans.extra.dinfo, xmllen);
xml[xmllen] = '\0';
return(xml);
return(NULL);
}
- if (ans.len <= sizeof(virProxyPacket)) {
+ if (ans.len <= sizeof(virProxyPacket)
+ || ans.len > sizeof (ans) - sizeof(virProxyPacket)) {
virProxyError(domain->conn, VIR_ERR_OPERATION_FAILED, __FUNCTION__);
return (NULL);
}
virReportOOMError();
return NULL;
}
- memmove(ostype, &ans.extra.dinfo, oslen);
+ memcpy(ostype, &ans.extra.dinfo, oslen);
ostype[oslen] = '\0';
return(ostype);