Nmap Security Scanner
*Intro
*Ref Guide
*Install Guide
*Download
*Changelog
*Book
*Docs
Security Lists
*Nmap Hackers
*Nmap Dev
*Bugtraq
*Full Disclosure
*Pen Test
*Basics
*More
Security Tools
*Pass crackers
*Sniffers
*Vuln Scanners
*Web scanners
*Wireless
*Exploitation
*Packet crafters
*More
Site News
Site Search:
Exploit World
Advertising
About/Contact
Credits
Sponsors:




bugtraq logo Bugtraq mailing list archives

Re: Symlinks and Cryogenic Sleep
From: babinebell () TRUSTCENTER DE (Goetz Babin-Ebell)
Date: Tue, 4 Jan 2000 12:11:19 +0100


At 21:24 03.01.00 +0100, Olaf Kirch wrote:
Hi all,
Hallo Olaf,

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()
      } else {
              /* do the O_EXCL thing */
      }

I did something that way:

FILE *DoOpen(const char *cpFile, long bAppend)
{
   FILE *spNew;
   FILE *spTest;
   struct stat sStat;

   spTest = fopen(cpFile,"a");
   if (!spTest)
   {
      Log("ERR FILE OPEN",cpFile);
      return NULL;
   }
   if (lstat(cpFile,&sStat))
   {
      Log("ERR STAT",cpFile);
      return NULL;
   }
   if ((sStat.st_mode & S_IFMT) == S_IFLNK)
   {
      fclose(spTest);
      Log("ERR ISLINK",cpFile);
      return NULL;
   }
   if (bAppend)
      spNew = spTest;
   else
   {
      spNew = freopen(cpFile,"w",spTest);
      fclose(spTest);
   }
   if (!spNew)
   {
      Log("ERR FILE OPEN",cpFile);
      return NULL;
   }
   return spFile;
}

Comments ?
Improvements ?

By

Goetz

--
Goetz Babin-Ebell, TC TrustCenter GmbH, http://www.trustcenter.de
Sonninstr. 24-28, 20097 Hamburg, Germany
Tel.: +49-(0)40 80 80 26 -0,  Fax: +49-(0)40 80 80 26 -126



  By Date           By Thread  

Current thread:
[ Nmap | Sec Tools | Mailing Lists | Site News | About/Contact | Advertising | Privacy ]