suspend-utils: checksum buffer length error
PATCH 1/1 suspend-utils: checksum buffer length error
From bd16d8764e7606182f2871dd99b76b10df7ca9be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?"Rodolfo=20Garc=C3=ADa=20Pe=C3=B1as=20(kix)"?= <[email protected]>
Date: Wed, 14 Aug 2013 19:25:45 +0200
Subject: [PATCH] suspend-utils: checksum buffer length error
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The length for the checksum buffer csum_buf is 48. The function print_checksum uses these 48 bytes to store the checksum. There are no space for '\0'. So, the '\0' is written on orig_checksum[0] and then the checksum doesn't match.
This patch was sent to "http://sourceforge.net/projects/suspend/" by yecril71pl:
- - - 8< - - -
File load.c Is: static char csum_buf[48]; Let: static char csum_buf[49];
Because: 49 = (2 + 1) * 16 + 1 (for the terminating \0)
Otherwise: orig_checksum [0] = 0 and the checksums do not match.
- - - 8< - - -
--- load.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
load.c +1 -1
@@ -573,7 +573,7 @@ int read_or_verify(int dev, int fd, struct image_header_info *header, {static struct swap_reader handle;static unsigned char orig_checksum[16 ], checksum[16 ]; -static char csum_buf[48 ]; +static char csum_buf[49 ];int error =0 , test_mode = (verify || test); error =read_page (fd, header, start);
Signature · 1 line
1.7.10.4