Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130726090751.722d7ea2@vostro>
Date: Fri, 26 Jul 2013 09:07:51 +0300
From: Timo Teras <timo.teras@....fi>
To: musl@...ts.openwall.com
Cc: dalias@...ifal.cx
Subject: Re: Preparing to release 0.9.12

On Fri, 26 Jul 2013 01:34:20 -0400
Rich Felker <dalias@...ifal.cx> wrote:

> One thing to keep in mind with libc is that you want to be able to
> safely and atomically replace it during an upgrade without any
> intermediate state where the system is unusable. This means the actual
> filename (as opposed to symlink) needs to be something that does not
> change between versions. If, for example, you had:
> 
> /lib/ld-musl-$(ARCH).so.1 -> /lib/musl.so.1.0.0
> 
> and wanted to upgrade to musl 1.0.1, you would have to change the
> symlink to point to a different name. But there is (as far as I know)
> no way to replace a symlink atomically; you have to unlink it first
> then make a new symlink. And this leaves a race window during which
> exec() could fail.

man rename(2) says:
       If  oldpath  refers  to a symbolic link the link is renamed; if
       newpath refers to a symbolic link the link will be overwritten.

But if this is linux specific, and we want to support other operating
system kernels than linux, then this might be an issue.

- Timo

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.