Index: lib/libvmmapi/vmmapi.h =================================================================== --- lib/libvmmapi/vmmapi.h +++ lib/libvmmapi/vmmapi.h @@ -132,7 +132,7 @@ void vm_set_lowmem_limit(struct vmctx *ctx, uint32_t limit); void vm_set_memflags(struct vmctx *ctx, int flags); int vm_get_memflags(struct vmctx *ctx); -int vm_get_name(struct vmctx *ctx, char *buffer, size_t max_len); +const char *vm_get_name(struct vmctx *ctx); size_t vm_get_lowmem_size(struct vmctx *ctx); size_t vm_get_highmem_size(struct vmctx *ctx); int vm_set_desc(struct vmctx *ctx, int vcpu, int reg, Index: lib/libvmmapi/vmmapi.c =================================================================== --- lib/libvmmapi/vmmapi.c +++ lib/libvmmapi/vmmapi.c @@ -81,7 +81,7 @@ size_t lowmem; size_t highmem; char *baseaddr; - char *name; + const char *name; }; #define CREATE(x) sysctlbyname("hw.vmm.create", NULL, NULL, (x), strlen((x))) @@ -126,8 +126,8 @@ vm->fd = -1; vm->memflags = 0; vm->lowmem_limit = 3 * GB; - vm->name = (char *)(vm + 1); - strcpy(vm->name, name); + strcpy((char *)(vm + 1), name); + vm->name = (const char *)(vm + 1); if ((vm->fd = vm_device_open(vm->name)) < 0) goto err; @@ -496,14 +496,11 @@ return ((vm_paddr_t)-1); } -/* TODO: maximum size for vmname */ -int -vm_get_name(struct vmctx *ctx, char *buf, size_t max_len) +const char * +vm_get_name(struct vmctx *ctx) { - if (strlcpy(buf, ctx->name, max_len) >= max_len) - return (EINVAL); - return (0); + return (ctx->name); } size_t Index: usr.sbin/bhyve/snapshot.c =================================================================== --- usr.sbin/bhyve/snapshot.c +++ usr.sbin/bhyve/snapshot.c @@ -1123,17 +1123,10 @@ static int vm_snapshot_basic_metadata(struct vmctx *ctx, xo_handle_t *xop, size_t memsz) { - int error; int memflags; - char vmname_buf[MAX_VMNAME]; - - memset(vmname_buf, 0, MAX_VMNAME); - error = vm_get_name(ctx, vmname_buf, MAX_VMNAME - 1); - if (error != 0) { - perror("Failed to get VM name"); - goto err; - } + const char *vmname_buf; + vmname_buf = vm_get_name(ctx); memflags = vm_get_memflags(ctx); xo_open_container_h(xop, JSON_BASIC_METADATA_KEY); @@ -1143,8 +1136,7 @@ xo_emit_h(xop, "{:" JSON_MEMFLAGS_KEY "/%d}\n", memflags); xo_close_container_h(xop, JSON_BASIC_METADATA_KEY); -err: - return (error); + return (0); } static int @@ -1518,7 +1510,7 @@ struct sockaddr_un addr; int socket_fd; pthread_t checkpoint_pthread; - char vmname_buf[MAX_VMNAME]; + const char *vmname_buf; int err; memset(&addr, 0, sizeof(addr)); @@ -1532,11 +1524,7 @@ addr.sun_family = AF_UNIX; - err = vm_get_name(ctx, vmname_buf, MAX_VMNAME - 1); - if (err != 0) { - perror("Failed to get VM name"); - goto fail; - } + vmname_buf = vm_get_name(ctx); snprintf(addr.sun_path, sizeof(addr.sun_path), "%s%s", BHYVE_RUN_DIR, vmname_buf); Index: usr.sbin/bhyvectl/bhyvectl.c =================================================================== --- usr.sbin/bhyvectl/bhyvectl.c +++ usr.sbin/bhyvectl/bhyvectl.c @@ -1688,7 +1688,7 @@ { struct sockaddr_un addr; int err, socket_fd; - char vmname_buf[MAX_VMNAME]; + const char *vmname_buf; socket_fd = socket(PF_UNIX, SOCK_DGRAM, 0); if (socket_fd < 0) { @@ -1700,11 +1700,7 @@ memset(&addr, 0, sizeof(struct sockaddr_un)); addr.sun_family = AF_UNIX; - err = vm_get_name(ctx, vmname_buf, MAX_VMNAME - 1); - if (err != 0) { - perror("Failed to get VM name"); - goto done; - } + vmname_buf = vm_get_name(ctx); snprintf(addr.sun_path, sizeof(addr.sun_path), "%s%s", BHYVE_RUN_DIR, vmname_buf);