mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
libxenlight: fix uuid code
- Use proper constants - Use functions from the uuid library - Fix broken pointer handling in libxl_dominfo Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.com>
This commit is contained in:
1 parent
491a51514a
commit
ca2b264d69
4 files changed
+13
-9
No files matched your search
+2
-2
@@ -284,7 +284,7 @@ redo:
|
||||
ptr = ptr2;
|
||||
size *= 2;
|
||||
}
|
||||
memcpy(ptr[index].uuid, info[i].handle, 16 * sizeof(uint8_t));
|
||||
memcpy(&(ptr[index].uuid), info[i].handle, sizeof(xen_domain_handle_t));
|
||||
ptr[index].domid = info[i].domain;
|
||||
first_domain = info[i].domain + 1;
|
||||
index++;
|
||||
@@ -478,7 +478,7 @@ static int libxl_destroy_device_model(struct libxl_ctx *ctx, uint32_t domid)
|
||||
|
||||
int libxl_domain_destroy(struct libxl_ctx *ctx, uint32_t domid, int force)
|
||||
{
|
||||
char *dom_path, vm_path[41];
|
||||
char *dom_path, vm_path[UUID_LEN_STR + 5];
|
||||
xen_uuid_t *uuid;
|
||||
int rc;
|
||||
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@
|
||||
typedef void (*libxl_log_callback)(void *userdata, int loglevel, const char *file,
|
||||
int line, const char *func, char *s);
|
||||
struct libxl_dominfo {
|
||||
xen_uuid_t uuid[16];
|
||||
xen_uuid_t uuid;
|
||||
uint32_t domid;
|
||||
};
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ int libxl_uuid_to_domid(struct libxl_ctx *ctx, xen_uuid_t *uuid, uint32_t *domid
|
||||
int nb_domain, i;
|
||||
struct libxl_dominfo *info = libxl_domain_list(ctx, &nb_domain);
|
||||
for (i = 0; i < nb_domain; i++) {
|
||||
if (!memcmp(info[i].uuid, uuid, 16)) {
|
||||
if (!xen_uuid_compare(&(info[i].uuid), uuid)) {
|
||||
*domid = info[i].domid;
|
||||
free(info);
|
||||
return 0;
|
||||
@@ -108,8 +108,8 @@ int libxl_domid_to_uuid(struct libxl_ctx *ctx, xen_uuid_t **uuid, uint32_t domid
|
||||
struct libxl_dominfo *info = libxl_domain_list(ctx, &nb_domain);
|
||||
for (i = 0; i < nb_domain; i++) {
|
||||
if (domid == info[i].domid) {
|
||||
*uuid = libxl_zalloc(ctx, 16);
|
||||
memcpy(*uuid, info[i].uuid, 16);
|
||||
*uuid = libxl_zalloc(ctx, sizeof(xen_uuid_t));
|
||||
xen_uuid_copy(*uuid, &(info[i].uuid));
|
||||
free(info);
|
||||
return 0;
|
||||
}
|
||||
@@ -121,9 +121,9 @@ int libxl_domid_to_uuid(struct libxl_ctx *ctx, xen_uuid_t **uuid, uint32_t domid
|
||||
int libxl_is_uuid(char *s)
|
||||
{
|
||||
int i;
|
||||
if (!s || strlen(s) != 36)
|
||||
if (!s || strlen(s) != UUID_LEN_STR)
|
||||
return 0;
|
||||
for (i = 0; i < 36; i++) {
|
||||
for (i = 0; i < UUID_LEN_STR; i++) {
|
||||
if (i == 8 || i == 13 || i == 18 || i == 23) {
|
||||
if (s[i] != '-')
|
||||
return 0;
|
||||
@@ -147,7 +147,7 @@ xen_uuid_t *libxl_string_to_uuid(struct libxl_ctx *ctx, char *s)
|
||||
|
||||
char *libxl_uuid_to_string(struct libxl_ctx *ctx, xen_uuid_t *uuid)
|
||||
{
|
||||
char uuid_str[39];
|
||||
char uuid_str[UUID_LEN_STR + 3];
|
||||
if (!uuid)
|
||||
return NULL;
|
||||
xen_uuid_to_string(uuid, uuid_str, sizeof(uuid_str));
|
||||
|
||||
@@ -128,4 +128,8 @@ static inline int xen_uuid_compare(xen_uuid_t *uuid1, xen_uuid_t *uuid2)
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef UUID_LEN_STR
|
||||
#define UUID_LEN_STR (128 /*bit*/ / 4 /*nibbles*/ + 4 /*hyphens*/)
|
||||
#endif /* UUID_LEN_STR */
|
||||
|
||||
#endif /* __XEN_UUID_H__ */
|
||||