OpenVZ Forum


Home » Mailing lists » Devel » vzctl: race condition at open("/sbin/init")
vzctl: race condition at open("/sbin/init") [message #47277] Wed, 25 July 2012 19:07 Go to previous message
Vasily Kulikov is currently offline  Vasily Kulikov
Messages: 2
Registered: July 2012
Junior Member
Hi,

stat()+open() is not atomic in the code below, so there is a race
condition. A container root may change /sbin/init between these calls
to e.g. FIFO and then make the vzctl's process hang up on read().

I'd add O_NOCTTY to open's flags and change stat() before open() to
fstat() just after open().


vzctl-3.3/src/lib/readelf.c:

int get_arch_from_elf(const char *file)
{
...
if (stat(file, &st)) <<<<<
return -1;
if (!S_ISREG(st.st_mode))
return -1;
fd = open(file, O_RDONLY); <<<<<
if (fd < 0)
return -1;
nbytes = read(fd, (void *) &elf_hdr, sizeof(elf_hdr));
...
}

Thanks,

--
Vasily
 
Read Message
Read Message
Read Message
Previous Topic: [VZCTL PATCH] dists: add distribution config file for Alpine Linux
Next Topic: [PATCH v5 00/10] IPC: checkpoint/restore in userspace enhancements
Goto Forum:
  


Current Time: Sun Aug 25 16:36:10 GMT 2024

Total time taken to generate the page: 0.03630 seconds