diff --git a/src/manager.c b/src/manager.c index e0012f99..4472eef6 100644 --- a/src/manager.c +++ b/src/manager.c @@ -288,13 +288,13 @@ get_server(char *buf, int len) json_value *value = obj->u.object.values[i].value; if (strcmp(name, "server_port") == 0) { if (value->type == json_string) { - strncpy(server->port, value->u.string.ptr, 8); + strncpy(server->port, value->u.string.ptr, 7); } else if (value->type == json_integer) { snprintf(server->port, 8, "%" PRIu64 "", value->u.integer); } } else if (strcmp(name, "password") == 0) { if (value->type == json_string) { - strncpy(server->password, value->u.string.ptr, 128); + strncpy(server->password, value->u.string.ptr, 127); } } else if (strcmp(name, "method") == 0) { if (value->type == json_string) { @@ -355,7 +355,7 @@ parse_traffic(char *buf, int len, char *port, uint64_t *traffic) char *name = obj->u.object.values[i].name; json_value *value = obj->u.object.values[i].value; if (value->type == json_integer) { - strncpy(port, name, 8); + strncpy(port, name, 7); *traffic = value->u.integer; } } @@ -1172,8 +1172,8 @@ main(int argc, char **argv) for (i = 0; i < conf->port_password_num; i++) { struct server *server = ss_malloc(sizeof(struct server)); memset(server, 0, sizeof(struct server)); - strncpy(server->port, conf->port_password[i].port, 8); - strncpy(server->password, conf->port_password[i].password, 128); + strncpy(server->port, conf->port_password[i].port, 7); + strncpy(server->password, conf->port_password[i].password, 127); add_server(&manager, server); } } diff --git a/src/netutils.c b/src/netutils.c index 1c119d67..377e72bd 100644 --- a/src/netutils.c +++ b/src/netutils.c @@ -81,7 +81,7 @@ setinterface(int socket_fd, const char *interface_name) { struct ifreq interface; memset(&interface, 0, sizeof(struct ifreq)); - strncpy(interface.ifr_name, interface_name, IFNAMSIZ); + strncpy(interface.ifr_name, interface_name, IFNAMSIZ-1); int res = setsockopt(socket_fd, SOL_SOCKET, SO_BINDTODEVICE, &interface, sizeof(struct ifreq)); return res; diff --git a/src/server.c b/src/server.c index 03dbab8e..ea50fd1e 100644 --- a/src/server.c +++ b/src/server.c @@ -813,7 +813,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents) int offset = 0; int need_query = 0; char atyp = server->buf->data[offset++]; - char host[257] = { 0 }; + char host[255] = { 0 }; uint16_t port = 0; struct addrinfo info; struct sockaddr_storage storage;