diff options
Diffstat (limited to 'web/server/h2o/streaming.c')
-rw-r--r-- | web/server/h2o/streaming.c | 5 |
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); |