diff --git a/dosfstools-filename-buffer-overflow.patch b/dosfstools-filename-buffer-overflow.patch new file mode 100644 index 0000000..85d83b5 --- /dev/null +++ b/dosfstools-filename-buffer-overflow.patch @@ -0,0 +1,16 @@ +Index: dosfstools-3.0.10/src/check.c +=================================================================== +--- dosfstools-3.0.10.orig/src/check.c ++++ dosfstools-3.0.10/src/check.c +@@ -174,7 +174,10 @@ loff_t alloc_rootdir_entry(DOS_FS *fs, D + offset = fs->root_start+next_free*sizeof(DIR_ENT); + memset(de,0,sizeof(DIR_ENT)); + while (1) { +- sprintf(de->name,pattern,curr_num); ++ char expanded[12]; ++ sprintf(expanded, pattern, curr_num); ++ memcpy(de->name, expanded, 8); ++ memcpy(de->ext, expanded+8, 3); + for (scan = 0; scan < fs->root_entries; scan++) + if (scan != next_free && + !strncmp(root[scan].name,de->name,MSDOS_NAME)) diff --git a/dosfstools.changes b/dosfstools.changes index fc4315d..02af6f2 100644 --- a/dosfstools.changes +++ b/dosfstools.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Tue Mar 8 18:13:53 CET 2011 - pgajdos@suse.cz + +- fixed fsck.vfat crashing [bnc#677236] + ------------------------------------------------------------------- Mon Dec 20 15:12:52 CET 2010 - pgajdos@suse.cz diff --git a/dosfstools.spec b/dosfstools.spec index 821c95d..082824e 100644 --- a/dosfstools.spec +++ b/dosfstools.spec @@ -31,6 +31,7 @@ Source: %{name}_%{version}.orig.tar.bz2 Patch0: %{name}-suse-dirs.patch Patch1: %{name}-mdraid-partition.patch Patch2: %{name}-label.patch +Patch3: %{name}-filename-buffer-overflow.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Supplements: filesystem(vfat) @@ -52,6 +53,7 @@ Authors: %patch0 -p1 %patch1 %patch2 -p1 +%patch3 -p1 %build make OPTFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE $RPM_OPT_FLAGS"