[PATCH] memcmp: fix comparison on short read

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Wed Mar 1 06:50:04 PST 2017


read() might return less than $count bytes which is only an upper limit.
The user is supposed to repeat the command to fill a buffer completely.

So use the convenience wrapper read_full in memcmp.

This fixes memcmp on /dev/nand0 on an Armada XP.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
---
 commands/memcmp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/commands/memcmp.c b/commands/memcmp.c
index ce044df0d935..a00fddbc825f 100644
--- a/commands/memcmp.c
+++ b/commands/memcmp.c
@@ -91,13 +91,13 @@ static int do_memcmp(int argc, char *argv[])
 
 		now = min((loff_t)RW_BUF_SIZE, count);
 
-		r1 = read(sourcefd, mem_rw_buf,  now);
+		r1 = read_full(sourcefd, mem_rw_buf, now);
 		if (r1 < 0) {
 			perror("read");
 			goto out;
 		}
 
-		r2 = read(destfd, rw_buf1, now);
+		r2 = read_full(destfd, rw_buf1, now);
 		if (r2 < 0) {
 			perror("read");
 			goto out;
-- 
2.11.0




More information about the barebox mailing list