From: Felix Fietkau Date: Sun, 24 Jan 2016 08:19:53 +0000 (+0100) Subject: logread: ensure that the len < sizeof(struct blob_attr) check runs before trying... X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubox.git;a=commitdiff_plain;h=31d66f2c3b2afbc9eaae4e2c22103d0f79e9503e logread: ensure that the len < sizeof(struct blob_attr) check runs before trying to access the data Signed-off-by: Felix Fietkau --- diff --git a/log/logread.c b/log/logread.c index dcf3c08..83b74b1 100644 --- a/log/logread.c +++ b/log/logread.c @@ -208,14 +208,19 @@ static int usage(const char *prog) static void logread_fd_data_cb(struct ustream *s, int bytes) { while (true) { - int len; struct blob_attr *a; + int len, cur_len; a = (void*) ustream_get_read_buf(s, &len); - if (len < sizeof(*a) || len < blob_len(a) + sizeof(*a)) + if (len < sizeof(*a)) break; + + cur_len = blob_len(a) + sizeof(*a); + if (len < cur_len) + break; + log_notify(a); - ustream_consume(s, blob_len(a) + sizeof(*a)); + ustream_consume(s, cur_len); } if (!log_follow) uloop_end();