summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/streaming.c
diff options
context:
space:
mode:
Diffstat (limited to 'web/server/h2o/streaming.c')
-rw-r--r--web/server/h2o/streaming.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/web/server/h2o/streaming.c b/web/server/h2o/streaming.c
index d7c9a564a5..063e487afc 100644
--- a/web/server/h2o/streaming.c
+++ b/web/server/h2o/streaming.c
@@ -294,8 +294,9 @@ void stream_process(h2o_stream_conn_t *conn, int initial)
socklen_t len = h2o_socket_getpeername(conn->sock, &client);
char peername[NI_MAXHOST];
size_t peername_len = h2o_socket_getnumerichost(&client, len, peername);
- memcpy(w.client_ip, peername, peername_len);
- w.client_ip[peername_len] = 0;
+ size_t cpy_len = sizeof(w.client_ip) < peername_len ? sizeof(w.client_ip) : peername_len;
+ memcpy(w.client_ip, peername, cpy_len);
+ w.client_ip[cpy_len - 1] = 0;
w.user_agent = conn->user_agent;
rc = rrdpush_receiver_thread_spawn(&w, conn->url, conn);