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

Reply via email to