diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index fa0fb809d5d9240e2ffd126749f54740588056a9..ec15a2c393ba5d525ec577e9abf39c99d5278c6d 100755
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -2261,6 +2261,8 @@ static int get_input(struct skinnysession *s)
 			return -1;
 		}
 		dlen = *(int *)s->inbuf;
+		if (dlen+8 > sizeof(s->inbuf))
+			dlen = sizeof(s->inbuf) - 8;
 		res = read(s->fd, s->inbuf+4, dlen+4);
 		ast_mutex_unlock(&s->lock);
 		if (res != (dlen+4)) {