From e376f9339897df86b63f3c827f4750b7ce7d10c0 Mon Sep 17 00:00:00 2001 From: Dave Wallace Date: Sun, 19 Nov 2017 11:20:02 -0500 Subject: VCL-LDPRELOAD: Fix CID179207 Change-Id: Ia6b9e39d5a2ef064cf71bfe87cb4b4a0648d735d Signed-off-by: Dave Wallace --- src/vcl/vcom_socket.c | 19 +++++++++++++++---- src/vcl/vppcom.h | 4 ++++ 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'src/vcl') diff --git a/src/vcl/vcom_socket.c b/src/vcl/vcom_socket.c index 6450eddc895..e87fd8a9092 100644 --- a/src/vcl/vcom_socket.c +++ b/src/vcl/vcom_socket.c @@ -1557,8 +1557,17 @@ vcom_socket_sendfile (int __out_fd, int __in_fd, off_t * __offset, do { - bytes_to_read = vppcom_session_attr (out_sid, - VPPCOM_ATTR_GET_NWRITE, 0, 0); + rv = vppcom_session_attr (out_sid, VPPCOM_ATTR_GET_NWRITE, 0, 0); + if (rv < 0) + { + clib_warning ("[%d] ERROR: vppcom_session_attr (out_sid (%u), " + "VPPCOM_ATTR_GET_NWRITE, 0, 0) returned %d (%s)!", + getpid (), out_sid, rv, vppcom_retval_str (rv)); + vec_reset_length (vsm->io_buffer); + return rv; + } + + bytes_to_read = (size_t) rv; if (VCOM_DEBUG > 2) clib_warning ("[%d] results %ld, n_bytes_left %lu, " "bytes_to_read %lu", getpid (), results, @@ -1606,8 +1615,10 @@ vcom_socket_sendfile (int __out_fd, int __in_fd, off_t * __offset, if (rv < 0) { clib_warning ("[%d] ERROR: vppcom_session_write (" - "out_sid %u, io_buffer %p, nbytes %d) returned %d", - getpid (), out_sid, vsm->io_buffer, nbytes, rv); + "out_sid %u, io_buffer %p, nbytes %d) " + "returned %d (%s)", + getpid (), out_sid, vsm->io_buffer, nbytes, + rv, vppcom_retval_str (rv)); if (results == 0) { vec_reset_length (vsm->io_buffer); diff --git a/src/vcl/vppcom.h b/src/vcl/vppcom.h index 93b7173550e..45ff11608e7 100644 --- a/src/vcl/vppcom.h +++ b/src/vcl/vppcom.h @@ -103,6 +103,10 @@ vppcom_retval_str (int retval) st = "VPPCOM_EAGAIN"; break; + case VPPCOM_ENOMEM: + st = "VPPCOM_ENOMEM"; + break; + case VPPCOM_EINVAL: st = "VPPCOM_EINVAL"; break; -- cgit 1.2.3-korg