mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-23 05:57:33 +00:00
tools: acrn-crashlog: fix potential buffer overflow issues
This patch is to fix the potential buffer overflow issues. Signed-off-by: CHEN Gang <gang.c.chen@intel.com> Reviewed-by: Zhi Jin <zhi.jin@intel.com> Reviewed-by: xiaojin2 <xiaojing.liu@intel.com>
This commit is contained in:
parent
0f6ff87835
commit
6494708f2f
@ -17,7 +17,9 @@ void do_log(const int level,
|
|||||||
va_list args;
|
va_list args;
|
||||||
char *fmt;
|
char *fmt;
|
||||||
char log[MAX_LOG_LEN];
|
char log[MAX_LOG_LEN];
|
||||||
|
char *msg_log;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
int msg_len = 0;
|
||||||
#ifdef DEBUG_ACRN_CRASHLOG
|
#ifdef DEBUG_ACRN_CRASHLOG
|
||||||
const char header_fmt[] = "<%-20s%5d>: ";
|
const char header_fmt[] = "<%-20s%5d>: ";
|
||||||
#endif
|
#endif
|
||||||
@ -40,8 +42,10 @@ void do_log(const int level,
|
|||||||
if (n < 0 || (size_t)n >= sizeof(log))
|
if (n < 0 || (size_t)n >= sizeof(log))
|
||||||
n = 0;
|
n = 0;
|
||||||
#endif
|
#endif
|
||||||
|
msg_log = log + n;
|
||||||
|
msg_len = sizeof(log) - n;
|
||||||
/* msg */
|
/* msg */
|
||||||
vsnprintf(log + n, sizeof(log) - n, fmt, args);
|
vsnprintf(msg_log, msg_len, fmt, args);
|
||||||
log[sizeof(log) - 1] = 0;
|
log[sizeof(log) - 1] = 0;
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ static int socket_make_sockaddr_un(const char *name,
|
|||||||
name_len = strlen(name);
|
name_len = strlen(name);
|
||||||
if (name_len >= (SUN_PATH_MAX - socket_len))
|
if (name_len >= (SUN_PATH_MAX - socket_len))
|
||||||
return -1;
|
return -1;
|
||||||
strcat(p_addr->sun_path, name);
|
strncat(p_addr->sun_path, name, SUN_PATH_MAX - socket_len);
|
||||||
|
|
||||||
p_addr->sun_family = AF_LOCAL;
|
p_addr->sun_family = AF_LOCAL;
|
||||||
*alen = name_len + socket_len +
|
*alen = name_len + socket_len +
|
||||||
@ -111,7 +111,7 @@ static int socket_bind(int fd, const char *name)
|
|||||||
name_len = strlen(name);
|
name_len = strlen(name);
|
||||||
if (name_len >= SUN_PATH_MAX)
|
if (name_len >= SUN_PATH_MAX)
|
||||||
return -1;
|
return -1;
|
||||||
strcpy(addr.sun_path, name);
|
strncpy(addr.sun_path, name, SUN_PATH_MAX);
|
||||||
unlink(addr.sun_path);
|
unlink(addr.sun_path);
|
||||||
alen = strlen(addr.sun_path) + sizeof(addr.sun_family);
|
alen = strlen(addr.sun_path) + sizeof(addr.sun_family);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user