diff --git a/buffer.c b/buffer.c
index d646c0e747045b53b6cc749a37bfa71da63182cf..0ca50b4a9971c0f7fff01fe9a94479c1398ae272 100644
--- a/buffer.c
+++ b/buffer.c
@@ -109,6 +109,7 @@ void buf_setlen(buffer* buf, unsigned int len) {
 		dropbear_exit("Bad buf_setlen");
 	}
 	buf->len = len;
+	buf->pos = MIN(buf->pos, buf->len);
 }
 
 /* Increment the length of the buffer */