mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-24 14:33:38 +00:00
tools: acrn-manager: refine the usage of api 'snprintf'
Return value check for snprintf function Tracked-On: #1254 Signed-off-by: Tianhua Sun <tianhuax.s.sun@intel.com> Acked-by: Yan, Like <like.yan@intel.com> Reviewed-by: Yonghua Huang <yonghua.huang@intel.com> Reviewed-by: Kaige Fu <kaige.fu@intel.com>
This commit is contained in:
parent
5493804cab
commit
af760f8dce
@ -300,7 +300,10 @@ static int create_new_server(const char *name)
|
|||||||
int ret;
|
int ret;
|
||||||
char path[128] = { };
|
char path[128] = { };
|
||||||
|
|
||||||
snprintf(path, sizeof(path), MNGR_SOCK_FMT, name, getpid());
|
if (snprintf(path, sizeof(path), MNGR_SOCK_FMT, name, getpid()) >= sizeof(path)) {
|
||||||
|
printf("WARN: the path is truncated\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
mfd = calloc(1, sizeof(*mfd));
|
mfd = calloc(1, sizeof(*mfd));
|
||||||
if (!mfd) {
|
if (!mfd) {
|
||||||
@ -449,7 +452,7 @@ static int connect_to_server(const char *name)
|
|||||||
mfd->addr.sun_family = AF_UNIX;
|
mfd->addr.sun_family = AF_UNIX;
|
||||||
ret = snprintf(mfd->addr.sun_path, sizeof(mfd->addr.sun_path),
|
ret = snprintf(mfd->addr.sun_path, sizeof(mfd->addr.sun_path),
|
||||||
"/run/acrn/mngr/%s", s_name);
|
"/run/acrn/mngr/%s", s_name);
|
||||||
if ((ret >= 0) && (ret < strlen(s_name)))
|
if (ret >= sizeof(mfd->addr.sun_path))
|
||||||
printf("WARN: %s is truncated\n", s_name);
|
printf("WARN: %s is truncated\n", s_name);
|
||||||
|
|
||||||
ret =
|
ret =
|
||||||
|
@ -258,7 +258,10 @@ int shell_cmd(const char *cmd, char *outbuf, int len)
|
|||||||
|
|
||||||
memset(cmd_buf, 0, sizeof(cmd_buf));
|
memset(cmd_buf, 0, sizeof(cmd_buf));
|
||||||
memset(outbuf, 0, len);
|
memset(outbuf, 0, len);
|
||||||
snprintf(cmd_buf, sizeof(cmd_buf), "%s 2>&1", cmd);
|
if (snprintf(cmd_buf, sizeof(cmd_buf), "%s 2>&1", cmd) >= sizeof(cmd_buf)) {
|
||||||
|
printf("ERROR: shell command is truncated\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
ptr = popen(cmd_buf, "re");
|
ptr = popen(cmd_buf, "re");
|
||||||
if (!ptr)
|
if (!ptr)
|
||||||
return -1;
|
return -1;
|
||||||
@ -317,8 +320,11 @@ int start_vm(const char *vmname)
|
|||||||
{
|
{
|
||||||
char cmd[128];
|
char cmd[128];
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "bash %s/add/%s.sh $(cat %s/add/%s.args)",
|
if (snprintf(cmd, sizeof(cmd), "bash %s/add/%s.sh $(cat %s/add/%s.args)",
|
||||||
ACRNCTL_OPT_ROOT, vmname, ACRNCTL_OPT_ROOT, vmname);
|
ACRNCTL_OPT_ROOT, vmname, ACRNCTL_OPT_ROOT, vmname) >= sizeof(cmd)) {
|
||||||
|
printf("ERROR: command is truncated\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return system(cmd);
|
return system(cmd);
|
||||||
}
|
}
|
||||||
|
@ -106,8 +106,11 @@ static int write_tmp_file(int fd, int n, char *word[])
|
|||||||
if (!strcmp(word[0] + len - strlen("acrn-dm"), "acrn-dm")) {
|
if (!strcmp(word[0] + len - strlen("acrn-dm"), "acrn-dm")) {
|
||||||
find_acrn_dm++;
|
find_acrn_dm++;
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
snprintf(buf, sizeof(buf), "%s gentmpfile",
|
if (snprintf(buf, sizeof(buf), "%s gentmpfile",
|
||||||
acrnctl_bin_path);
|
acrnctl_bin_path) >= sizeof(buf)) {
|
||||||
|
printf("ERROR: acrnctl bin path is truncated\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
ret = write(fd, buf, strlen(buf));
|
ret = write(fd, buf, strlen(buf));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
@ -117,7 +120,8 @@ static int write_tmp_file(int fd, int n, char *word[])
|
|||||||
|
|
||||||
while (i < n) {
|
while (i < n) {
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
snprintf(buf, sizeof(buf), " %s", word[i]);
|
if (snprintf(buf, sizeof(buf), " %s", word[i]) >= sizeof(buf))
|
||||||
|
printf("WARN: buf is truncated\n");
|
||||||
i++;
|
i++;
|
||||||
ret = write(fd, buf, strlen(buf));
|
ret = write(fd, buf, strlen(buf));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@ -191,7 +195,12 @@ static int acrnctl_do_add(int argc, char *argv[])
|
|||||||
|
|
||||||
/* open tmp file for write */
|
/* open tmp file for write */
|
||||||
memset(fname, 0, sizeof(fname));
|
memset(fname, 0, sizeof(fname));
|
||||||
snprintf(fname, sizeof(fname), "%s%s", argv[1], TMP_FILE_SUFFIX);
|
if (snprintf(fname, sizeof(fname), "%s%s", argv[1], TMP_FILE_SUFFIX)
|
||||||
|
>= sizeof(fname)) {
|
||||||
|
printf("ERROR: file name is truncated\n");
|
||||||
|
ret = -1;
|
||||||
|
goto file_exceed;
|
||||||
|
}
|
||||||
fd_tmp = open(fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
|
fd_tmp = open(fname, O_RDWR | O_CREAT | O_TRUNC, 0666);
|
||||||
if (fd_tmp < 0) {
|
if (fd_tmp < 0) {
|
||||||
perror(fname);
|
perror(fname);
|
||||||
@ -229,21 +238,38 @@ static int acrnctl_do_add(int argc, char *argv[])
|
|||||||
goto no_acrn_dm;
|
goto no_acrn_dm;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "mv %s %s.back", argv[1], argv[1]);
|
if (snprintf(cmd, sizeof(cmd), "mv %s %s.back", argv[1], argv[1])
|
||||||
|
>= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
ret = -1;
|
||||||
|
goto get_vmname;
|
||||||
|
}
|
||||||
system(cmd);
|
system(cmd);
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "mv %s %s", fname, argv[1]);
|
if (snprintf(cmd, sizeof(cmd), "mv %s %s", fname, argv[1]) >= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
ret = -1;
|
||||||
|
goto get_vmname;
|
||||||
|
}
|
||||||
system(cmd);
|
system(cmd);
|
||||||
|
|
||||||
memset(vmname, 0, sizeof(vmname));
|
memset(vmname, 0, sizeof(vmname));
|
||||||
snprintf(cmd, sizeof(cmd), "bash %s%s >./%s.result", argv[1],
|
if (snprintf(cmd, sizeof(cmd), "bash %s%s >./%s.result", argv[1],
|
||||||
args, argv[1]);
|
args, argv[1]) >= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
ret = -1 ;
|
||||||
|
goto get_vmname;
|
||||||
|
}
|
||||||
ret = shell_cmd(cmd, cmd_out, sizeof(cmd_out));
|
ret = shell_cmd(cmd, cmd_out, sizeof(cmd_out));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto get_vmname;
|
goto get_vmname;
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "grep -a \"acrnctl: \" ./%s.result",
|
if (snprintf(cmd, sizeof(cmd), "grep -a \"acrnctl: \" ./%s.result",
|
||||||
argv[1]);
|
argv[1]) >= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
ret = -1;
|
||||||
|
goto get_vmname;
|
||||||
|
}
|
||||||
ret = shell_cmd(cmd, cmd_out, sizeof(cmd_out));
|
ret = shell_cmd(cmd, cmd_out, sizeof(cmd_out));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto get_vmname;
|
goto get_vmname;
|
||||||
@ -251,7 +277,11 @@ static int acrnctl_do_add(int argc, char *argv[])
|
|||||||
ret = sscanf(cmd_out, "acrnctl: %s", vmname);
|
ret = sscanf(cmd_out, "acrnctl: %s", vmname);
|
||||||
if (ret != 1) {
|
if (ret != 1) {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
snprintf(cmd, sizeof(cmd), "cat ./%s.result", argv[1]);
|
|
||||||
|
if (snprintf(cmd, sizeof(cmd), "cat ./%s.result", argv[1]) >= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
goto get_vmname;
|
||||||
|
}
|
||||||
shell_cmd(cmd, cmd_out, sizeof(cmd_out));
|
shell_cmd(cmd, cmd_out, sizeof(cmd_out));
|
||||||
|
|
||||||
/* Properly null-terminate cmd_out */
|
/* Properly null-terminate cmd_out */
|
||||||
@ -270,7 +300,12 @@ static int acrnctl_do_add(int argc, char *argv[])
|
|||||||
goto get_vmname;
|
goto get_vmname;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "mkdir -p %s/add", ACRNCTL_OPT_ROOT);
|
if (snprintf(cmd, sizeof(cmd), "mkdir -p %s/add", ACRNCTL_OPT_ROOT)
|
||||||
|
>= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
ret = -1;
|
||||||
|
goto get_vmname;
|
||||||
|
}
|
||||||
system(cmd);
|
system(cmd);
|
||||||
|
|
||||||
s = vmmngr_find(vmname);
|
s = vmmngr_find(vmname);
|
||||||
@ -281,28 +316,46 @@ static int acrnctl_do_add(int argc, char *argv[])
|
|||||||
goto vm_exist;
|
goto vm_exist;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "cp %s.back %s/add/%s.sh", argv[1],
|
if (snprintf(cmd, sizeof(cmd), "cp %s.back %s/add/%s.sh", argv[1],
|
||||||
ACRNCTL_OPT_ROOT, vmname);
|
ACRNCTL_OPT_ROOT, vmname) >= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
ret = -1;
|
||||||
|
goto vm_exist;
|
||||||
|
}
|
||||||
system(cmd);
|
system(cmd);
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "echo %s >%s/add/%s.args", args,
|
if (snprintf(cmd, sizeof(cmd), "echo %s >%s/add/%s.args", args,
|
||||||
ACRNCTL_OPT_ROOT, vmname);
|
ACRNCTL_OPT_ROOT, vmname) >= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
ret = -1;
|
||||||
|
goto vm_exist;
|
||||||
|
}
|
||||||
system(cmd);
|
system(cmd);
|
||||||
printf("%s added\n", vmname);
|
printf("%s added\n", vmname);
|
||||||
|
|
||||||
vm_exist:
|
vm_exist:
|
||||||
get_vmname:
|
get_vmname:
|
||||||
snprintf(cmd, sizeof(cmd), "rm -f ./%s.result", argv[1]);
|
if (snprintf(cmd, sizeof(cmd), "rm -f ./%s.result", argv[1]) >= sizeof(cmd)) {
|
||||||
|
printf("WARN: cmd is truncated\n");
|
||||||
|
} else
|
||||||
system(cmd);
|
system(cmd);
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "mv %s %s", argv[1], fname);
|
if (snprintf(cmd, sizeof(cmd), "mv %s %s", argv[1], fname) >= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
ret = -1;
|
||||||
|
} else
|
||||||
system(cmd);
|
system(cmd);
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "mv %s.back %s", argv[1], argv[1]);
|
if (snprintf(cmd, sizeof(cmd), "mv %s.back %s", argv[1], argv[1]) >= sizeof(cmd)) {
|
||||||
|
printf("ERROR: cmd is truncated\n");
|
||||||
|
ret = -1;
|
||||||
|
} else
|
||||||
system(cmd);
|
system(cmd);
|
||||||
|
|
||||||
no_acrn_dm:
|
no_acrn_dm:
|
||||||
snprintf(cmd, sizeof(cmd), "rm -f %s", fname);
|
if (snprintf(cmd, sizeof(cmd), "rm -f %s", fname) >= sizeof(cmd)) {
|
||||||
|
printf("WARN: cmd is truncated\n");
|
||||||
|
} else
|
||||||
system(cmd);
|
system(cmd);
|
||||||
write_tmpfile:
|
write_tmpfile:
|
||||||
close(fd_tmp);
|
close(fd_tmp);
|
||||||
@ -355,11 +408,17 @@ static int acrnctl_do_del(int argc, char *argv[])
|
|||||||
state_str[s->state]);
|
state_str[s->state]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
snprintf(cmd, sizeof(cmd), "rm -f %s/add/%s.sh",
|
if (snprintf(cmd, sizeof(cmd), "rm -f %s/add/%s.sh",
|
||||||
ACRNCTL_OPT_ROOT, argv[i]);
|
ACRNCTL_OPT_ROOT, argv[i]) >= sizeof(cmd)) {
|
||||||
|
printf("WARN: cmd is truncated\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
system(cmd);
|
system(cmd);
|
||||||
snprintf(cmd, sizeof(cmd), "rm -f %s/add/%s.args",
|
if (snprintf(cmd, sizeof(cmd), "rm -f %s/add/%s.args",
|
||||||
ACRNCTL_OPT_ROOT, argv[i]);
|
ACRNCTL_OPT_ROOT, argv[i]) >= sizeof(cmd)) {
|
||||||
|
printf("WARN: cmd is truncated\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
system(cmd);
|
system(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,7 +219,10 @@ static void acrnd_run_vm(char *name)
|
|||||||
{
|
{
|
||||||
char log_path[128] = {};
|
char log_path[128] = {};
|
||||||
|
|
||||||
snprintf(log_path, sizeof(log_path) -1, ACRND_LOG_FMT, name);
|
if (snprintf(log_path, sizeof(log_path) -1, ACRND_LOG_FMT, name)
|
||||||
|
>= sizeof(log_path) -1) {
|
||||||
|
printf("WARN: log path is truncated\n");
|
||||||
|
} else {
|
||||||
unlink(log_path);
|
unlink(log_path);
|
||||||
stdin = freopen(log_path, "w+", stdin);
|
stdin = freopen(log_path, "w+", stdin);
|
||||||
stdout = freopen(log_path, "w+", stdout);
|
stdout = freopen(log_path, "w+", stdout);
|
||||||
@ -227,6 +230,7 @@ static void acrnd_run_vm(char *name)
|
|||||||
fflush(stdin);
|
fflush(stdin);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
|
}
|
||||||
|
|
||||||
start_vm(name);
|
start_vm(name);
|
||||||
printf("%s exited!\n", name);
|
printf("%s exited!\n", name);
|
||||||
|
Loading…
Reference in New Issue
Block a user