Re: Symlinks and Cryogenic Sleep

From: Pavel Machek (pavelat_private)
Date: Tue Jan 04 2000 - 13:47:09 PST

  • Next message: Thomas Köhler: "Re: PHP3 safe_mode and popen()"

    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 pavelat_private "In my country we have almost anarchy and I don't care."
    Panos Katsaloulis describing me w.r.t. patents me at discussat_private
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 15:26:36 PDT