This is the mail archive of the
cygwin-patches
mailing list for the Cygwin project.
Re: [Patch] Segfault on unaligned lseek() on /dev/sdX (was: [ITP] ddrescue 1.3)
- From: Christopher Faylor <cgf-use-the-mailinglist-please at cygwin dot com>
- To: cygwin-patches at cygwin dot com
- Date: Fri, 18 May 2007 15:45:26 -0400
- Subject: Re: [Patch] Segfault on unaligned lseek() on /dev/sdX (was: [ITP] ddrescue 1.3)
- References: <464DF837.6020304@t-online.de>
- Reply-to: cygwin-patches at cygwin dot com
On Fri, May 18, 2007 at 09:02:15PM +0200, Christian Franke wrote:
>Hi,
>
>Cygwin 1.5.24-2 segfaults on unaligned lseek() on raw block devices with
>sector size >512 bytes.
>
>Testcases:
>$ dd skip=1000 bs=2047 if=/dev/scd0 of=/dev/null
>
>$ ddrescue -c 1 /dev/scd0 file.iso
>
>
>This is due to a fixed 512 byte buffer in fhandler_dev_floppy::lseek().
>It is still present in HEAD revision.
>
>The attached patch should fix. It should work for any sector size.
>(Smoke-)tested with 1.5.24-2 (too busy to test with current CVS, sorry).
>
>2007-05-18 Christian Franke <franke@computer.org>
>
> * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Fixed segfault on
> unaligned seek due to fixed size buffer.
>
It seems like this could be done without the heavyweight use of malloc,
like use an automatic array of length 512 + 4 and calculate an aligned
address from that.
cgf