* Clemens Fruhwirth <clemens@xxxxxxxxxxxxx> [2006-12-29 11:52]: > I just added the r!=bsize case to error checking and an error message > as well. ... > The changes are also in subversion. This particular change didn't make any difference. I still get the header conversion message when I only apply the patch from utils.c. #! /bin/sh /usr/share/dpatch/dpatch-run ## 02_fix_arm.dpatch by Clemens Fruhwirth <clemens@xxxxxxxxxxxxx> ## ## DP: Add error checking to read_blockwise for short reads. ## DP: Commit a patch that fixes http://bugs.debian.org/403075 @DPATCH@ Index: lib/utils.c =================================================================== --- cryptsetup-1.0.4~/lib/utils.c (revision 1) +++ cryptsetup-1.0.4/lib/utils.c (working copy) @@ -151,8 +151,10 @@ static int sector_size(int fd) { int bsize; - ioctl(fd,BLKSSZGET, &bsize); - return bsize; + if (ioctl(fd,BLKSSZGET, &bsize) < 0) + return -EINVAL; + else + return bsize; } int sector_size_for_device(const char *device) @@ -171,8 +173,11 @@ char *padbuf; char *padbuf_base; char *buf = (char *)orig_buf; int r; - int hangover; int solid; int bsize = sector_size(fd); + int hangover; int solid; int bsize; + if ((bsize = sector_size(fd)) < 0) + return bsize; + hangover = count % bsize; solid = count - hangover; @@ -209,15 +214,20 @@ char *buf = (char *)orig_buf; int r; int step; - int bsize = sector_size(fd); + int bsize; + if ((bsize = sector_size(fd)) < 0) + return bsize; + padbuf = aligned_malloc(&padbuf_base, bsize, bsize); if(padbuf == NULL) return -ENOMEM; while(count) { r = read(fd,padbuf,bsize); - if(r < 0) goto out; - + if(r < 0 || r != bsize) { + fprintf(stderr, "read failed in read_blockwise.\n"); + goto out; + } step = count<bsize?count:bsize; memcpy(buf,padbuf,step); buf += step; @@ -242,6 +252,9 @@ int frontHang = offset % bsize; int r; + if (bsize < 0) + return bsize; + lseek(fd, offset - frontHang, SEEK_SET); if(offset % bsize) { int innerCount = count<bsize?count:bsize; -- Martin Michlmayr http://www.cyrius.com/ -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel