File ncpfs-CVE-2011-1679-CVE-2011-1680.patch of Package ncpfs
Index: ncpfs-2.2.6/sutil/ncpm_common.c
===================================================================
--- ncpfs-2.2.6.orig/sutil/ncpm_common.c
+++ ncpfs-2.2.6/sutil/ncpm_common.c
@@ -1446,6 +1446,7 @@ void add_mnt_entry(char* mount_name, cha
struct mntent ment;
int fd;
FILE* mtab;
+ off_t goodoffset;
if (check_name(mount_name) == -1 || check_name(mpnt) == -1)
errexit(107, _("Illegal character in mount entry\n"));
@@ -1480,14 +1481,25 @@ void add_mnt_entry(char* mount_name, cha
if ((mtab = setmntent(MOUNTED, "a+")) == NULL)
{
+ unlink(MOUNTED "~");
errexit(59, _("Can't open %s\n"), MOUNTED);
}
+ fseek (mtab, 0, SEEK_END);
+ goodoffset = ftell(mtab);
if (addmntent(mtab, &ment) == 1)
{
+ /* restore good state */
+ ftruncate(fileno(mtab), goodoffset);
+ endmntent(mtab);
+ unlink(MOUNTED "~");
errexit(60, _("Can't write mount entry\n"));
}
if (fchmod(fileno(mtab), 0644) == -1)
{
+ /* restore good state */
+ ftruncate(fileno(mtab), goodoffset);
+ endmntent(mtab);
+ unlink(MOUNTED "~");
errexit(61, _("Can't set perms on %s\n"), MOUNTED);
}
endmntent(mtab);
Index: ncpfs-2.2.6/sutil/ncpumount.c
===================================================================
--- ncpfs-2.2.6.orig/sutil/ncpumount.c
+++ ncpfs-2.2.6/sutil/ncpumount.c
@@ -210,7 +210,12 @@ static int __clearMtab (const char* moun
i++;
}
if (!found) {
- addmntent(new_mtab, mnt);
+ if (addmntent(new_mtab, mnt)) {
+ eprintf(_("Can't addmntent to %s: %s\n"), MOUNTED_TMP,
+ strerror(errno));
+ endmntent(mtab);
+ return 1;
+ }
}
}