mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-07 22:46:08 +00:00
tools: acrnctl restrict length of vmname to 32 bytes
When run 'acrnctl add launch_script.sh', vmname will be detected from the launch script and stored in vmmngr_struct.name[MAX_VM_OS_NAME_LEN], so vmname should not be longer than MAX_VM_OS_NAME_LEN. Tracked-On: #2851 Signed-off-by: Tao Yuhong <yuhong.tao@intel.com> Reviewed-by: Yin Fengwei <fengwei.yin@intel.com>
This commit is contained in:
parent
8109c2e94c
commit
b2f2d95246
@ -7,9 +7,9 @@
|
|||||||
#define ACRN_MANAGER_H
|
#define ACRN_MANAGER_H
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <acrn_common.h>
|
||||||
|
|
||||||
#define MNGR_MSG_MAGIC 0x67736d206d6d76 /* that is char[8] "mngr msg", on X86 */
|
#define MNGR_MSG_MAGIC 0x67736d206d6d76 /* that is char[8] "mngr msg", on X86 */
|
||||||
#define VMNAME_LEN 16
|
|
||||||
|
|
||||||
struct mngr_msg {
|
struct mngr_msg {
|
||||||
unsigned long long magic; /* Make sure you get a mngr_msg */
|
unsigned long long magic; /* Make sure you get a mngr_msg */
|
||||||
@ -28,7 +28,7 @@ struct mngr_msg {
|
|||||||
|
|
||||||
/* req of ACRND_TIMER */
|
/* req of ACRND_TIMER */
|
||||||
struct req_acrnd_timer {
|
struct req_acrnd_timer {
|
||||||
char name[VMNAME_LEN];
|
char name[MAX_VM_OS_NAME_LEN];
|
||||||
time_t t;
|
time_t t;
|
||||||
} acrnd_timer;
|
} acrnd_timer;
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ struct mngr_msg {
|
|||||||
|
|
||||||
/* req of RTC_TIMER */
|
/* req of RTC_TIMER */
|
||||||
struct req_rtc_timer {
|
struct req_rtc_timer {
|
||||||
char vmname[VMNAME_LEN];
|
char vmname[MAX_VM_OS_NAME_LEN];
|
||||||
time_t t;
|
time_t t;
|
||||||
} rtc_timer;
|
} rtc_timer;
|
||||||
|
|
||||||
|
@ -85,6 +85,11 @@ static int check_name(const char *name)
|
|||||||
if (!strcmp(name, "nothing"))
|
if (!strcmp(name, "nothing"))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (strnlen(name, MAX_VM_OS_NAME_LEN) >= MAX_VM_OS_NAME_LEN) {
|
||||||
|
printf("(%s) size exceed MAX_VM_OS_NAME_LEN:%u\n", name,MAX_VM_OS_NAME_LEN);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
#define _ACRNCTL_H_
|
#define _ACRNCTL_H_
|
||||||
|
|
||||||
#include <sys/queue.h>
|
#include <sys/queue.h>
|
||||||
|
#include <acrn_common.h>
|
||||||
|
#include "acrn_mngr.h"
|
||||||
|
|
||||||
#define ACRN_CONF_PATH "/usr/share/acrn/conf"
|
#define ACRN_CONF_PATH "/usr/share/acrn/conf"
|
||||||
#define ACRN_CONF_PATH_ADD ACRN_CONF_PATH "/add"
|
#define ACRN_CONF_PATH_ADD ACRN_CONF_PATH "/add"
|
||||||
@ -14,8 +16,6 @@
|
|||||||
|
|
||||||
#define ACRN_DM_SOCK_PATH "/run/acrn/mngr"
|
#define ACRN_DM_SOCK_PATH "/run/acrn/mngr"
|
||||||
|
|
||||||
#define MAX_NAME_LEN (32)
|
|
||||||
|
|
||||||
enum vm_state {
|
enum vm_state {
|
||||||
VM_STATE_UNKNOWN = 0,
|
VM_STATE_UNKNOWN = 0,
|
||||||
VM_CREATED, /* VM created / awaiting start (boot) */
|
VM_CREATED, /* VM created / awaiting start (boot) */
|
||||||
@ -36,7 +36,7 @@ struct vmmngr_struct *vmmngr_find(const char *vmname);
|
|||||||
|
|
||||||
/* Per-vm vm managerment struct */
|
/* Per-vm vm managerment struct */
|
||||||
struct vmmngr_struct {
|
struct vmmngr_struct {
|
||||||
char name[MAX_NAME_LEN];
|
char name[MAX_VM_OS_NAME_LEN];
|
||||||
unsigned long state;
|
unsigned long state;
|
||||||
unsigned long state_tmp;
|
unsigned long state_tmp;
|
||||||
unsigned long update; /* update count, remove a vm if no update for it */
|
unsigned long update; /* update count, remove a vm if no update for it */
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
/* acrnd worker timer */
|
/* acrnd worker timer */
|
||||||
|
|
||||||
struct work_arg {
|
struct work_arg {
|
||||||
char name[VMNAME_LEN];
|
char name[MAX_VM_OS_NAME_LEN];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acrnd_work {
|
struct acrnd_work {
|
||||||
@ -356,7 +356,7 @@ static void handle_timer_req(struct mngr_msg *msg, int client_fd, void *param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
strncpy(arg.name, msg->data.acrnd_timer.name, sizeof(arg.name) - 1);
|
strncpy(arg.name, msg->data.acrnd_timer.name, sizeof(arg.name) - 1);
|
||||||
if (sizeof(arg.name) - 1 < strnlen(msg->data.acrnd_timer.name, VMNAME_LEN)) {
|
if (sizeof(arg.name) - 1 < strnlen(msg->data.acrnd_timer.name, MAX_VM_OS_NAME_LEN)) {
|
||||||
perror("timer name was truncated\n");
|
perror("timer name was truncated\n");
|
||||||
goto reply_ack;
|
goto reply_ack;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user