OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
Bugtraq Archives: Re: Symlinks and Cryogenic Sleep

Re: Symlinks and Cryogenic Sleep


Subject: Re: Symlinks and Cryogenic Sleep
From: Pavel Machek (pavelSUSE.CZ)
Date: Tue Jan 04 2000 - 15:47:09 CST


Hi!

> when you're dealing with files in /tmp that are supposed to be re-opened
> (rather than opened once and then discarded) there's an established
> way to do it which goes like this:
>
> if (lstat(fname, &stb1) >= 0 && S_ISREG(stb1.st_mode)) {
> fd = open(fname, O_RDWR);
> if (fd < 0 || fstat(fd, &stb2) < 0
> || ino_or_dev_mismatch(&stb1, &stb2))
> raise_big_stink()

If you add (at this place)

                if (lstat(fname, &stb2) < 0 || !S_ISREG(stb2.st_mode))
                    ino_or_dev_mismatch(&stb1, &stb2)

it is safe.

Idea is: once opened, dev/ino is stable, therefore if I followed link
to interesting file, there's no way to create other regular file with
same dev/ino.

> Comments? Suggestions?

See above. Does it work?
                                                                Pavel
PS: Do you need to _symlink_ it? What about hardlinks?

--
I'm pavelucw.cz. "In my country we have almost anarchy and I don't care."
Panos Katsaloulis describing me w.r.t. patents me at discusslinmodems.org



This archive was generated by hypermail 2b27 : Wed Jan 05 2000 - 17:23:34 CST