[arch-projects] [mkinitcpio] overwrite files/symlinks

Dave Reisner d at falconindy.com
Wed Jul 18 13:10:10 EDT 2012


On Wed, Jul 18, 2012 at 07:03:44PM +0200, Christian Hesse wrote:
> Hello everybody,
> 
> I added a hook to the initramfs whose install script added 'uname' by using
> add_binary. This resulted in major breakage and a kernel panicing on boot.
> 
> I suppose this is because there is a symlink from uname to busybox - with
> adding uname I killed the busybox binary. Is this ok by design or do we want
> to raise an error if something like this happens?
> 
> I created a patch (see attachment). Does this make sense?

Nope, it doesn't make sense. We overwrite a busybox symlink in the
shutdown hook (cp, since we need the -a flag), and this isn't a problem.

> -- 
> main(a){char*c=/*    Schoene Gruesse                         */"B?IJj;MEH"
> "CX:;",b;for(a/*    Chris           get my mail address:    */=0;b=c[a++];)
> putchar(b-1/(/*               gcc -o sig sig.c && ./sig    */b/42*2-3)*42);}

> diff --git a/functions b/functions
> index e17e46e..364bbb2 100644
> --- a/functions
> +++ b/functions
> @@ -437,6 +437,11 @@ add_file() {
>          return 1
>      fi
>  
> +    if [[ -L "$dest" ]]; then
> +        error "destination is a symbolic link: \`%s'" "$dest"
> +        exit 1
> +    fi
> +
>      mode=${3:-$(stat -c %a "$src")}
>      if [[ -z $mode ]]; then
>          error "failed to stat file: \`%s'." "$src"



More information about the arch-projects mailing list