From: Daniel P. Berrange Date: Tue, 3 Sep 2013 15:22:48 +0000 (+0100) Subject: Stop calling virAllocN directly from ESX code X-Git-Tag: CVE-2013-4311~107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=393cf4d69b8413a0c9ecf675164db60927b99448;p=thirdparty%2Flibvirt.git Stop calling virAllocN directly from ESX code The ESX code has a method esxVI_Alloc which would call virAllocN directly, instead of using the VIR_ALLOC_N macro. Remove this method and make the callers just use VIR_ALLOC as is normal practice. Signed-off-by: Daniel P. Berrange --- diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c index ad1b5dc50e..7bc8b60a2a 100644 --- a/src/esx/esx_vi.c +++ b/src/esx/esx_vi.c @@ -51,8 +51,14 @@ int \ esxVI_##_type##_Alloc(esxVI_##_type **ptrptr) \ { \ - return esxVI_Alloc((void **)ptrptr, sizeof(esxVI_##_type), \ - __FILE__, __FUNCTION__, __LINE__); \ + if (ptrptr == NULL || *ptrptr != NULL) { \ + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument")); \ + return -1; \ + } \ + \ + if (VIR_ALLOC(*ptrptr) < 0) \ + return -1; \ + return 0; \ } @@ -1735,21 +1741,6 @@ esxVI_List_Deserialize(xmlNodePtr node, esxVI_List **list, * - 'get' functions get information from a local object */ -int -esxVI_Alloc(void **ptrptr, size_t size, const char *file, - const char *function, size_t linenr) -{ - if (ptrptr == NULL || *ptrptr != NULL) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument")); - return -1; - } - - return virAllocN(ptrptr, size, 1, true, VIR_FROM_THIS, - file, function, linenr); -} - - - int esxVI_BuildSelectSet(esxVI_SelectionSpec **selectSet, const char *name, const char *type, diff --git a/src/esx/esx_vi.h b/src/esx/esx_vi.h index c1612e25d1..aeee953aa7 100644 --- a/src/esx/esx_vi.h +++ b/src/esx/esx_vi.h @@ -330,9 +330,6 @@ int esxVI_List_Deserialize(xmlNodePtr node, esxVI_List **list, * - 'get' functions get information from a local object */ -int esxVI_Alloc(void **ptrptr, size_t size, const char *file, - const char *function, size_t linenr); - int esxVI_BuildSelectSet (esxVI_SelectionSpec **selectSet, const char *name, const char *type, const char *path, const char *selectSetNames); diff --git a/src/esx/esx_vi_types.c b/src/esx/esx_vi_types.c index 14caeebb66..03df444dbc 100644 --- a/src/esx/esx_vi_types.c +++ b/src/esx/esx_vi_types.c @@ -43,10 +43,13 @@ int \ esxVI_##__type##_Alloc(esxVI_##__type **ptrptr) \ { \ - if (esxVI_Alloc((void **)ptrptr, sizeof(esxVI_##__type), \ - __FILE__, __FUNCTION__, __LINE__) < 0) { \ - return -1; \ - } \ + if (ptrptr == NULL || *ptrptr != NULL) { \ + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument")); \ + return -1; \ + } \ + \ + if (VIR_ALLOC(*ptrptr) < 0) \ + return -1; \ \ (*ptrptr)->_type = esxVI_Type_##__type; \ \