From 364772f5082f15eec7f3293f1e37e4ffc1c84fa8 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Wed, 11 Feb 2015 23:20:13 +0900 Subject: [PATCH] src: Fix error reported by coverity scan --- src/h2load_http2_session.cc | 4 ++++ src/nghttp.cc | 1 + src/shrpx_connection.cc | 14 ++++++++------ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/h2load_http2_session.cc b/src/h2load_http2_session.cc index f5a382bd..5074534c 100644 --- a/src/h2load_http2_session.cc +++ b/src/h2load_http2_session.cc @@ -83,6 +83,9 @@ int on_stream_close_callback(nghttp2_session *session, int32_t stream_id, auto client = static_cast(user_data); auto req_stat = static_cast( nghttp2_session_get_stream_user_data(session, stream_id)); + if (!req_stat) { + return 0; + } client->on_stream_close(stream_id, error_code == NGHTTP2_NO_ERROR, req_stat); return 0; } @@ -100,6 +103,7 @@ int before_frame_send_callback(nghttp2_session *session, client->on_request(frame->hd.stream_id); auto req_stat = static_cast( nghttp2_session_get_stream_user_data(session, frame->hd.stream_id)); + assert(req_stat); client->record_request_time(req_stat); return 0; diff --git a/src/nghttp.cc b/src/nghttp.cc index 2d9bee39..d377ec7f 100644 --- a/src/nghttp.cc +++ b/src/nghttp.cc @@ -1825,6 +1825,7 @@ int before_frame_send_callback(nghttp2_session *session, } auto req = static_cast( nghttp2_session_get_stream_user_data(session, frame->hd.stream_id)); + assert(req); req->record_request_time(); return 0; } diff --git a/src/shrpx_connection.cc b/src/shrpx_connection.cc index e4863bf4..5acf6d2a 100644 --- a/src/shrpx_connection.cc +++ b/src/shrpx_connection.cc @@ -253,12 +253,13 @@ ssize_t Connection::read_tls(void *data, size_t len) { } ssize_t Connection::write_clear(const void *data, size_t len) { - ssize_t nwrite = std::min(len, wlimit.avail()); - if (nwrite == 0) { + len = std::min(len, wlimit.avail()); + if (len == 0) { return 0; } - while ((nwrite = write(fd, data, nwrite)) == -1 && errno == EINTR) + ssize_t nwrite; + while ((nwrite = write(fd, data, len)) == -1 && errno == EINTR) ; if (nwrite == -1) { if (errno == EAGAIN || errno == EWOULDBLOCK) { @@ -298,12 +299,13 @@ ssize_t Connection::writev_clear(struct iovec *iov, int iovcnt) { } ssize_t Connection::read_clear(void *data, size_t len) { - ssize_t nread = std::min(len, rlimit.avail()); - if (nread == 0) { + len = std::min(len, rlimit.avail()); + if (len == 0) { return 0; } - while ((nread = read(fd, data, nread)) == -1 && errno == EINTR) + ssize_t nread; + while ((nread = read(fd, data, len)) == -1 && errno == EINTR) ; if (nread == -1) { if (errno == EAGAIN || errno == EWOULDBLOCK) {