mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-29 20:43:44 +00:00
memset zero before using
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
This commit is contained in:
+2
-1
@@ -726,7 +726,8 @@ cipher_context_init(cipher_ctx_t *ctx, int method, int enc)
|
||||
FATAL("Cannot initialize PolarSSL cipher context");
|
||||
}
|
||||
#elif defined(USE_CRYPTO_MBEDTLS)
|
||||
ctx->evp = (cipher_evp_t *)ss_malloc(sizeof(cipher_evp_t));
|
||||
ctx->evp = ss_malloc(sizeof(cipher_evp_t));
|
||||
memset(ctx->evp, 0, sizeof(cipher_evp_t));
|
||||
cipher_evp_t *evp = ctx->evp;
|
||||
|
||||
if (cipher == NULL) {
|
||||
|
||||
+7
-4
@@ -907,6 +907,9 @@ new_remote(int fd, int timeout)
|
||||
remote->buf = ss_malloc(sizeof(buffer_t));
|
||||
remote->recv_ctx = ss_malloc(sizeof(remote_ctx_t));
|
||||
remote->send_ctx = ss_malloc(sizeof(remote_ctx_t));
|
||||
balloc(remote->buf, BUF_SIZE);
|
||||
memset(remote->recv_ctx, 0, sizeof(remote_ctx_t));
|
||||
memset(remote->send_ctx, 0, sizeof(remote_ctx_t));
|
||||
remote->recv_ctx->connected = 0;
|
||||
remote->send_ctx->connected = 0;
|
||||
remote->fd = fd;
|
||||
@@ -920,8 +923,6 @@ new_remote(int fd, int timeout)
|
||||
ev_timer_init(&remote->recv_ctx->watcher, remote_timeout_cb,
|
||||
timeout, timeout);
|
||||
|
||||
balloc(remote->buf, BUF_SIZE);
|
||||
|
||||
return remote;
|
||||
}
|
||||
|
||||
@@ -964,6 +965,9 @@ new_server(int fd, int method)
|
||||
server->recv_ctx = ss_malloc(sizeof(server_ctx_t));
|
||||
server->send_ctx = ss_malloc(sizeof(server_ctx_t));
|
||||
server->buf = ss_malloc(sizeof(buffer_t));
|
||||
balloc(server->buf, BUF_SIZE);
|
||||
memset(server->recv_ctx, 0, sizeof(server_ctx_t));
|
||||
memset(server->send_ctx, 0, sizeof(server_ctx_t));
|
||||
server->stage = STAGE_INIT;
|
||||
server->recv_ctx->connected = 0;
|
||||
server->send_ctx->connected = 0;
|
||||
@@ -984,8 +988,6 @@ new_server(int fd, int method)
|
||||
ev_io_init(&server->recv_ctx->io, server_recv_cb, fd, EV_READ);
|
||||
ev_io_init(&server->send_ctx->io, server_send_cb, fd, EV_WRITE);
|
||||
|
||||
balloc(server->buf, BUF_SIZE);
|
||||
|
||||
cork_dllist_add(&connections, &server->entries);
|
||||
|
||||
return server;
|
||||
@@ -1388,6 +1390,7 @@ main(int argc, char **argv)
|
||||
listen_ctx_t listen_ctx;
|
||||
listen_ctx.remote_num = remote_num;
|
||||
listen_ctx.remote_addr = ss_malloc(sizeof(struct sockaddr *) * remote_num);
|
||||
memset(listen_ctx.remote_addr, 0, sizeof(struct sockaddr *) * remote_num);
|
||||
for (i = 0; i < remote_num; i++) {
|
||||
char *host = remote_addr[i].host;
|
||||
char *port = remote_addr[i].port == NULL ? remote_port :
|
||||
|
||||
+7
-6
@@ -98,7 +98,7 @@ build_config(char *prefix, struct server *server)
|
||||
char *path = NULL;
|
||||
int path_size = strlen(prefix) + strlen(server->port) + 20;
|
||||
|
||||
path = malloc(path_size);
|
||||
path = ss_malloc(path_size);
|
||||
snprintf(path, path_size, "%s/.shadowsocks_%s.conf", prefix, server->port);
|
||||
FILE *f = fopen(path, "w+");
|
||||
if (f == NULL) {
|
||||
@@ -243,7 +243,7 @@ get_server(char *buf, int len)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct server *server = (struct server *)malloc(sizeof(struct server));
|
||||
struct server *server = ss_malloc(sizeof(struct server));
|
||||
memset(server, 0, sizeof(struct server));
|
||||
if (obj->type == json_object) {
|
||||
int i = 0;
|
||||
@@ -322,7 +322,7 @@ kill_server(char *prefix, char *pid_file)
|
||||
{
|
||||
char *path = NULL;
|
||||
int pid, path_size = strlen(prefix) + strlen(pid_file) + 2;
|
||||
path = malloc(path_size);
|
||||
path = ss_malloc(path_size);
|
||||
snprintf(path, path_size, "%s/%s", prefix, pid_file);
|
||||
FILE *f = fopen(path, "r");
|
||||
if (f == NULL) {
|
||||
@@ -345,7 +345,7 @@ stop_server(char *prefix, char *port)
|
||||
{
|
||||
char *path = NULL;
|
||||
int pid, path_size = strlen(prefix) + strlen(port) + 20;
|
||||
path = malloc(path_size);
|
||||
path = ss_malloc(path_size);
|
||||
snprintf(path, path_size, "%s/.shadowsocks_%s.pid", prefix, port);
|
||||
FILE *f = fopen(path, "r");
|
||||
if (f == NULL) {
|
||||
@@ -861,7 +861,7 @@ main(int argc, char **argv)
|
||||
struct passwd *pw = getpwuid(getuid());
|
||||
const char *homedir = pw->pw_dir;
|
||||
working_dir_size = strlen(homedir) + 15;
|
||||
working_dir = malloc(working_dir_size);
|
||||
working_dir = ss_malloc(working_dir_size);
|
||||
snprintf(working_dir, working_dir_size, "%s/.shadowsocks", homedir);
|
||||
|
||||
int err = mkdir(working_dir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
|
||||
@@ -894,7 +894,8 @@ main(int argc, char **argv)
|
||||
|
||||
if (conf != NULL) {
|
||||
for (i = 0; i < conf->port_password_num; i++) {
|
||||
struct server *server = (struct server *)malloc(sizeof(struct server));
|
||||
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);
|
||||
add_server(&manager, server);
|
||||
|
||||
+10
-9
@@ -531,14 +531,15 @@ remote_send_cb(EV_P_ ev_io *w, int revents)
|
||||
static remote_t *
|
||||
new_remote(int fd, int timeout)
|
||||
{
|
||||
remote_t *remote;
|
||||
remote = ss_malloc(sizeof(remote_t));
|
||||
|
||||
remote_t *remote = ss_malloc(sizeof(remote_t));
|
||||
memset(remote, 0, sizeof(remote_t));
|
||||
|
||||
remote->recv_ctx = ss_malloc(sizeof(remote_ctx_t));
|
||||
remote->send_ctx = ss_malloc(sizeof(remote_ctx_t));
|
||||
remote->buf = ss_malloc(sizeof(buffer_t));
|
||||
balloc(remote->buf, BUF_SIZE);
|
||||
memset(remote->recv_ctx, 0, sizeof(remote_ctx_t));
|
||||
memset(remote->send_ctx, 0, sizeof(remote_ctx_t));
|
||||
remote->fd = fd;
|
||||
remote->recv_ctx->remote = remote;
|
||||
remote->recv_ctx->connected = 0;
|
||||
@@ -552,8 +553,6 @@ new_remote(int fd, int timeout)
|
||||
ev_timer_init(&remote->recv_ctx->watcher, remote_timeout_cb,
|
||||
timeout, 0);
|
||||
|
||||
balloc(remote->buf, BUF_SIZE);
|
||||
|
||||
return remote;
|
||||
}
|
||||
|
||||
@@ -590,12 +589,15 @@ close_and_free_remote(EV_P_ remote_t *remote)
|
||||
static server_t *
|
||||
new_server(int fd, int method)
|
||||
{
|
||||
server_t *server;
|
||||
server = ss_malloc(sizeof(server_t));
|
||||
server_t *server = ss_malloc(sizeof(server_t));
|
||||
memset(server, 0, sizeof(server_t));
|
||||
|
||||
server->recv_ctx = ss_malloc(sizeof(server_ctx_t));
|
||||
server->send_ctx = ss_malloc(sizeof(server_ctx_t));
|
||||
server->buf = ss_malloc(sizeof(buffer_t));
|
||||
balloc(server->buf, BUF_SIZE);
|
||||
memset(server->recv_ctx, 0, sizeof(server_ctx_t));
|
||||
memset(server->send_ctx, 0, sizeof(server_ctx_t));
|
||||
server->fd = fd;
|
||||
server->recv_ctx->server = server;
|
||||
server->recv_ctx->connected = 0;
|
||||
@@ -618,8 +620,6 @@ new_server(int fd, int method)
|
||||
ev_io_init(&server->recv_ctx->io, server_recv_cb, fd, EV_READ);
|
||||
ev_io_init(&server->send_ctx->io, server_send_cb, fd, EV_WRITE);
|
||||
|
||||
balloc(server->buf, BUF_SIZE);
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
@@ -981,6 +981,7 @@ main(int argc, char **argv)
|
||||
listen_ctx_t listen_ctx;
|
||||
listen_ctx.remote_num = remote_num;
|
||||
listen_ctx.remote_addr = ss_malloc(sizeof(struct sockaddr *) * remote_num);
|
||||
memset(listen_ctx.remote_addr, 0, sizeof(struct sockaddr *) * remote_num);
|
||||
for (int i = 0; i < remote_num; i++) {
|
||||
char *host = remote_addr[i].host;
|
||||
char *port = remote_addr[i].port == NULL ? remote_port :
|
||||
|
||||
+4
-4
@@ -266,8 +266,8 @@ dns_query_v4_cb(struct dns_ctx *ctx, struct dns_rr_a4 *result, void *data)
|
||||
cb_data->responses = new_responses;
|
||||
|
||||
for (int i = 0; i < result->dnsa4_nrr; i++) {
|
||||
struct sockaddr_in *sa =
|
||||
(struct sockaddr_in *)ss_malloc(sizeof(struct sockaddr_in));
|
||||
struct sockaddr_in *sa = ss_malloc(sizeof(struct sockaddr_in));
|
||||
memset(sa, 0, sizeof(struct sockaddr_in));
|
||||
sa->sin_family = AF_INET;
|
||||
sa->sin_port = cb_data->port;
|
||||
sa->sin_addr = result->dnsa4_addr[i];
|
||||
@@ -313,8 +313,8 @@ dns_query_v6_cb(struct dns_ctx *ctx, struct dns_rr_a6 *result, void *data)
|
||||
cb_data->responses = new_responses;
|
||||
|
||||
for (int i = 0; i < result->dnsa6_nrr; i++) {
|
||||
struct sockaddr_in6 *sa =
|
||||
(struct sockaddr_in6 *)ss_malloc(sizeof(struct sockaddr_in6));
|
||||
struct sockaddr_in6 *sa = ss_malloc(sizeof(struct sockaddr_in6));
|
||||
memset(sa, 0, sizeof(struct sockaddr_in6));
|
||||
sa->sin6_family = AF_INET6;
|
||||
sa->sin6_port = cb_data->port;
|
||||
sa->sin6_addr = result->dnsa6_addr[i];
|
||||
|
||||
+12
-9
@@ -969,7 +969,8 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
ev_io_start(EV_A_ & remote->send_ctx->io);
|
||||
}
|
||||
} else {
|
||||
query_t *query = (query_t *)ss_malloc(sizeof(query_t));
|
||||
query_t *query = ss_malloc(sizeof(query_t));
|
||||
memset(query, 0, sizeof(query_t));
|
||||
query->server = server;
|
||||
snprintf(query->hostname, 256, "%s", host);
|
||||
|
||||
@@ -1311,12 +1312,15 @@ new_remote(int fd)
|
||||
remote_conn++;
|
||||
}
|
||||
|
||||
remote_t *remote;
|
||||
remote_t *remote = ss_malloc(sizeof(remote_t));
|
||||
memset(remote, 0, sizeof(remote_t));
|
||||
|
||||
remote = ss_malloc(sizeof(remote_t));
|
||||
remote->recv_ctx = ss_malloc(sizeof(remote_ctx_t));
|
||||
remote->send_ctx = ss_malloc(sizeof(remote_ctx_t));
|
||||
remote->buf = ss_malloc(sizeof(buffer_t));
|
||||
balloc(remote->buf, BUF_SIZE);
|
||||
memset(remote->recv_ctx, 0, sizeof(remote_ctx_t));
|
||||
memset(remote->send_ctx, 0, sizeof(remote_ctx_t));
|
||||
remote->fd = fd;
|
||||
remote->recv_ctx->remote = remote;
|
||||
remote->recv_ctx->connected = 0;
|
||||
@@ -1327,8 +1331,6 @@ new_remote(int fd)
|
||||
ev_io_init(&remote->recv_ctx->io, remote_recv_cb, fd, EV_READ);
|
||||
ev_io_init(&remote->send_ctx->io, remote_send_cb, fd, EV_WRITE);
|
||||
|
||||
balloc(remote->buf, BUF_SIZE);
|
||||
|
||||
return remote;
|
||||
}
|
||||
|
||||
@@ -1378,6 +1380,10 @@ new_server(int fd, listen_ctx_t *listener)
|
||||
server->send_ctx = ss_malloc(sizeof(server_ctx_t));
|
||||
server->buf = ss_malloc(sizeof(buffer_t));
|
||||
server->header_buf = ss_malloc(sizeof(buffer_t));
|
||||
memset(server->recv_ctx, 0, sizeof(server_ctx_t));
|
||||
memset(server->send_ctx, 0, sizeof(server_ctx_t));
|
||||
balloc(server->buf, BUF_SIZE);
|
||||
balloc(server->header_buf, BUF_SIZE);
|
||||
server->fd = fd;
|
||||
server->recv_ctx->server = server;
|
||||
server->recv_ctx->connected = 0;
|
||||
@@ -1406,10 +1412,7 @@ new_server(int fd, listen_ctx_t *listener)
|
||||
ev_timer_init(&server->recv_ctx->watcher, server_timeout_cb,
|
||||
request_timeout, listener->timeout);
|
||||
|
||||
balloc(server->buf, BUF_SIZE);
|
||||
balloc(server->header_buf, BUF_SIZE);
|
||||
|
||||
server->chunk = (chunk_t *)malloc(sizeof(chunk_t));
|
||||
server->chunk = ss_malloc(sizeof(chunk_t));
|
||||
memset(server->chunk, 0, sizeof(chunk_t));
|
||||
server->chunk->buf = ss_malloc(sizeof(buffer_t));
|
||||
memset(server->chunk->buf, 0, sizeof(buffer_t));
|
||||
|
||||
+10
-8
@@ -502,14 +502,16 @@ remote_send_cb(EV_P_ ev_io *w, int revents)
|
||||
static remote_t *
|
||||
new_remote(int fd, int timeout)
|
||||
{
|
||||
remote_t *remote;
|
||||
remote = ss_malloc(sizeof(remote_t));
|
||||
remote_t *remote = ss_malloc(sizeof(remote_t));
|
||||
|
||||
memset(remote, 0, sizeof(remote_t));
|
||||
|
||||
remote->buf = ss_malloc(sizeof(buffer_t));
|
||||
remote->recv_ctx = ss_malloc(sizeof(remote_ctx_t));
|
||||
remote->send_ctx = ss_malloc(sizeof(remote_ctx_t));
|
||||
balloc(remote->buf, BUF_SIZE);
|
||||
memset(remote->recv_ctx, 0, sizeof(remote_ctx_t));
|
||||
memset(remote->send_ctx, 0, sizeof(remote_ctx_t));
|
||||
remote->fd = fd;
|
||||
remote->recv_ctx->remote = remote;
|
||||
remote->recv_ctx->connected = 0;
|
||||
@@ -521,8 +523,6 @@ new_remote(int fd, int timeout)
|
||||
ev_timer_init(&remote->send_ctx->watcher, remote_timeout_cb,
|
||||
min(MAX_CONNECT_TIMEOUT, timeout), 0);
|
||||
|
||||
balloc(remote->buf, BUF_SIZE);
|
||||
|
||||
return remote;
|
||||
}
|
||||
|
||||
@@ -558,12 +558,15 @@ close_and_free_remote(EV_P_ remote_t *remote)
|
||||
static server_t *
|
||||
new_server(int fd, int method)
|
||||
{
|
||||
server_t *server;
|
||||
server_t *server = ss_malloc(sizeof(server_t));
|
||||
memset(server, 0, sizeof(server_t));
|
||||
|
||||
server = ss_malloc(sizeof(server_t));
|
||||
server->buf = ss_malloc(sizeof(buffer_t));
|
||||
server->recv_ctx = ss_malloc(sizeof(server_ctx_t));
|
||||
server->send_ctx = ss_malloc(sizeof(server_ctx_t));
|
||||
balloc(server->buf, BUF_SIZE);
|
||||
memset(server->recv_ctx, 0, sizeof(server_ctx_t));
|
||||
memset(server->send_ctx, 0, sizeof(server_ctx_t));
|
||||
server->fd = fd;
|
||||
server->recv_ctx->server = server;
|
||||
server->recv_ctx->connected = 0;
|
||||
@@ -580,8 +583,6 @@ new_server(int fd, int method)
|
||||
server->d_ctx = NULL;
|
||||
}
|
||||
|
||||
balloc(server->buf, BUF_SIZE);
|
||||
|
||||
ev_io_init(&server->recv_ctx->io, server_recv_cb, fd, EV_READ);
|
||||
ev_io_init(&server->send_ctx->io, server_send_cb, fd, EV_WRITE);
|
||||
|
||||
@@ -984,6 +985,7 @@ main(int argc, char **argv)
|
||||
listen_ctx.tunnel_addr = tunnel_addr;
|
||||
listen_ctx.remote_num = remote_num;
|
||||
listen_ctx.remote_addr = ss_malloc(sizeof(struct sockaddr *) * remote_num);
|
||||
memset(listen_ctx.remote_addr, 0, sizeof(struct sockaddr *) * remote_num);
|
||||
for (i = 0; i < remote_num; i++) {
|
||||
char *host = remote_addr[i].host;
|
||||
char *port = remote_addr[i].port == NULL ? remote_port :
|
||||
|
||||
Reference in New Issue
Block a user