From 5da4302f5db9bd8a6f6944060e8b2d6ff39a2ef3 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 18 Aug 2010 16:57:00 -0600 Subject: [PATCH] xenapi: avoid sprintf * src/xenapi/xenapi_utils.h (createVifNetwork): Delete prototype. * src/xenapi/xenapi_utils.c (createVifNetwork): Change signature, and use virAsprintf. Detect allocation failure. (createVMRecordFromXml): Adjust caller. --- src/xenapi/xenapi_utils.c | 15 +++++++++------ src/xenapi/xenapi_utils.h | 4 ---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/xenapi/xenapi_utils.c b/src/xenapi/xenapi_utils.c index 4eb17fab5e..23d3fef8ef 100644 --- a/src/xenapi/xenapi_utils.c +++ b/src/xenapi/xenapi_utils.c @@ -387,8 +387,8 @@ xenapiSessionErrorHandle(virConnectPtr conn, virErrorNumber errNum, } /* creates network intereface for VM */ -int -createVifNetwork (virConnectPtr conn, xen_vm vm, char *device, +static int +createVifNetwork (virConnectPtr conn, xen_vm vm, int device, char *bridge, char *mac) { xen_session *session = ((struct _xenapiPrivate *)(conn->privateData))->session; @@ -432,7 +432,8 @@ createVifNetwork (virConnectPtr conn, xen_vm vm, char *device, vif_record->other_config = xen_string_string_map_alloc(0); vif_record->runtime_properties = xen_string_string_map_alloc(0); vif_record->qos_algorithm_params = xen_string_string_map_alloc(0); - vif_record->device = strdup(device); + if (virAsprintf(&vif_record->device, "%d", device) < 0) + return -1; xen_vif_create(session, &vif, vif_record); if (!vif) { xen_vif_free(vif); @@ -553,9 +554,11 @@ createVMRecordFromXml (virConnectPtr conn, virDomainDefPtr def, } } if (mac != NULL && bridge != NULL) { - char device[NETWORK_DEVID_SIZE] = "\0"; - sprintf(device, "%d", device_number); - createVifNetwork(conn, *vm, device, bridge, mac); + if (createVifNetwork(conn, *vm, device_number, bridge, + mac) < 0) { + VIR_FREE(bridge); + goto error_cleanup; + } VIR_FREE(bridge); device_number++; } diff --git a/src/xenapi/xenapi_utils.h b/src/xenapi/xenapi_utils.h index c062a1e27b..214010534f 100644 --- a/src/xenapi/xenapi_utils.h +++ b/src/xenapi/xenapi_utils.h @@ -78,8 +78,4 @@ createVMRecordFromXml (virConnectPtr conn, virDomainDefPtr defPtr, int allocStringMap (xen_string_string_map **strings, char *key, char *val); -int -createVifNetwork(virConnectPtr conn, xen_vm vm, char *device, - char *bridge, char *mac); - #endif /* __VIR_XENAPI_UTILS__ */ -- GitLab