On Wed, 6 Oct 2010, Jonas Maebe wrote:
On 06 Oct 2010, at 09:41, Michael Van Canneyt wrote:
This is always true on Unix, the only way to make sure is to have the
kernel
create the temporary name and file for you. Unix - to my knowledge - does
not have a way to create and lock a file in one atomic operation; There are
always 2 operations involved, and so anything can happen between the 2
calls.
You can at least open a file with O_CREAT|O_EXCL|O_NOFOLLOW to make sure that
it does not yet exist at the point that you create it (and that it's not a
symlink either).
This is correct, but doesn't lock the file, and so it doesn't prevent
someone from 'stealing' the file before the lock is applied.
It's of course a remote possibility.
Personally, I have more problems with windows which actually creates the files
and locks them. It sometimes requires a reboot to release the lock again in
case something happens to the calling process.
That said, I repeat: no problem if someone implements a more secure
algorithm.
Michael.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal