An -1 returned by ubus_msg_writev() will be interpreted as UINT_MAX during a check to see how much data had could be written on the socket.
Because sizeof() will return size_t it will promote the comparsion to unsigned Signed-off-by: Mihai Richard <mihairich...@live.com> --- ubusd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ubusd.c b/ubusd.c index 7279a70..5409b7f 100644 --- a/ubusd.c +++ b/ubusd.c @@ -148,12 +148,13 @@ void ubus_msg_send(struct ubus_client *cl, struct ubus_msg_buf *ub, bool free) if (!cl->tx_queue[cl->txq_cur]) { written = ubus_msg_writev(cl->sock.fd, ub, 0); - if (written >= ub->len + sizeof(ub->hdr)) - goto out; if (written < 0) written = 0; + if (written >= ub->len + sizeof(ub->hdr)) + goto out; + cl->txq_ofs = written; /* get an event once we can write to the socket again */ -- 2.7.4 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev