From d64ba87edae62894ca74cfb9d6d8cdd88c213397 Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Wed, 18 Jan 2012 10:36:50 +0000 Subject: Ensure that termkey_advisereadable() just fails with errno=ENOMEM rather than trying to read() zero bytes --- termkey.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'termkey.c') diff --git a/termkey.c b/termkey.c index 7770d83..a55b106 100644 --- a/termkey.c +++ b/termkey.c @@ -949,6 +949,12 @@ TermKeyResult termkey_advisereadable(TermKey *tk) tk->buffstart = 0; } + /* Not expecting it ever to be greater but doesn't hurt to handle that */ + if(tk->buffcount >= tk->buffsize) { + errno = ENOMEM; + return TERMKEY_RES_ERROR; + } + retry: len = read(tk->fd, tk->buffer + tk->buffcount, tk->buffsize - tk->buffcount); -- cgit v1.2.3