socket_tx_buffer is a vector, update its length accordingly so that
AddressSanitizer can keep track of the allowed memory area.
By doing so we can get rid of socket_tx_nbytes which becomes redundant
with the vector length.
Type: fix
Change-Id: Ied7cb430b5dd40d5ed1390aa15bd5f455a0dba62
Signed-off-by: Benoît Ganne <bganne@cisco.com>
vl_socket_client_write_internal (socket_client_main_t * scm)
{
int n;
vl_socket_client_write_internal (socket_client_main_t * scm)
{
int n;
+ int len = vec_len (scm->socket_tx_buffer);
msgbuf_t msgbuf = {
.q = 0,
.gc_mark_timestamp = 0,
msgbuf_t msgbuf = {
.q = 0,
.gc_mark_timestamp = 0,
- .data_len = htonl (scm->socket_tx_nbytes),
+ .data_len = htonl (len),
};
n = write (scm->socket_fd, &msgbuf, sizeof (msgbuf));
};
n = write (scm->socket_fd, &msgbuf, sizeof (msgbuf));
- n = write (scm->socket_fd, scm->socket_tx_buffer, scm->socket_tx_nbytes);
- if (n < scm->socket_tx_nbytes)
+ n = write (scm->socket_fd, scm->socket_tx_buffer, len);
+
+ vec_set_len (scm->socket_tx_buffer, 0);
+
+ if (n < len)
{
clib_unix_warning ("socket write (msg)");
return -1;
{
clib_unix_warning ("socket write (msg)");
return -1;
void *
vl_socket_client_msg_alloc2 (socket_client_main_t * scm, int nbytes)
{
void *
vl_socket_client_msg_alloc2 (socket_client_main_t * scm, int nbytes)
{
- scm->socket_tx_nbytes = nbytes;
+ vec_set_len (scm->socket_tx_buffer, nbytes);
return ((void *) scm->socket_tx_buffer);
}
return ((void *) scm->socket_tx_buffer);
}
u32 socket_buffer_size;
u8 *socket_tx_buffer;
u8 *socket_rx_buffer;
u32 socket_buffer_size;
u8 *socket_tx_buffer;
u8 *socket_rx_buffer;
int control_pings_outstanding;
u8 *name;
int control_pings_outstanding;
u8 *name;