HEADS UP: Re: FreeBSD Security Advisory FreeBSD-SA-07:01.jail

Dirk Engling erdgeist at erdgeist.org
Tue Jan 16 02:17:19 UTC 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Colin Percival wrote:

> No.  `cp -f` unlinks the existing file and creates a new file, but will
> still follow a symlink if one is created between the "unlink" syscall and
> the "open" syscall.
> 
>                     /* remove existing destination file name,
>                      * create a new file  */
>                     (void)unlink(to.p_path);
>                                 if (!lflag)
>                         to_fd = open(to.p_path, O_WRONLY | O_TRUNC | O_CREAT,
>                                   fs->st_mode & ~(S_ISUID | S_ISGID));

You are right. Atomically in binary is not atomical enough.

mv in its rename()-form will do the job, so we need to create a file in
. by mktemp and mv it to the real name when filled.

Regards

  erdgeist
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (Darwin)

iD8DBQFFrDWmImmQdUyYEgkRAgSgAJ0c5mcaM4LByBUE0LC1Iqdj8ZFSAACdF9qM
fFETX4I+Fvue0u+343bBG8c=
=MkSh
-----END PGP SIGNATURE-----


More information about the freebsd-security mailing list