On Wed, 19 Oct 2011 11:51:48 +0200 Lukasz Dorau <lukasz.dorau@xxxxxxxxx> wrote: > Using an array of chars without the terminating null byte > as a parameter of sprintf() function causes segfault > when dealing with SAS drives (with 20-digits serial number). > The memcpy() function is used instead. > > Signed-off-by: Lukasz Dorau <lukasz.dorau@xxxxxxxxx> > --- > super-intel.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/super-intel.c b/super-intel.c > index 401c701..2c1bf05 100644 > --- a/super-intel.c > +++ b/super-intel.c > @@ -6015,7 +6015,9 @@ static int mark_failure(struct imsm_dev *dev, struct imsm_disk *disk, int idx) > if (is_failed(disk) && (ord & IMSM_ORD_REBUILD)) > return 0; > > - sprintf(buf, "%s:0", disk->serial); > + memcpy(buf, disk->serial, MAX_RAID_SERIAL_LEN); > + buf[MAX_RAID_SERIAL_LEN] = '\000'; > + strcat(buf, ":0"); > if ((len = strlen(buf)) >= MAX_RAID_SERIAL_LEN) > shift = len - MAX_RAID_SERIAL_LEN + 1; > strncpy((char *)disk->serial, &buf[shift], MAX_RAID_SERIAL_LEN); Applied. Thanks, NeilBrown
Attachment:
signature.asc
Description: PGP signature