1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- From eec0503cfc36f63d777f5cb3f2719cecedcb8468 Mon Sep 17 00:00:00 2001
- From: Haris Okanovic <haris.okanovic@ni.com>
- Date: Mon, 7 Jan 2019 13:22:09 -0600
- Subject: [PATCH] Workaround busybox limitation in Linux dhclient-script
- Busybox is a lightweight implementation of coreutils commonly used on
- space-constrained embedded Linux distributions. It's implementation of
- chown and chmod doesn't provide a "--reference" option added to
- client/scripts/linux as of commit 9261cb14. This change works around
- that limitation by using stat to read ownership and permissions flags
- and simple chown/chmod calls supported in both coreutils and busybox.
- modified: client/scripts/linux
- Signed-off-by: Haris Okanovic <haris.okanovic@ni.com>
- Upstream-Status: Pending [ISC-Bugs #48771]
- ---
- client/scripts/linux | 17 +++++++++++++----
- 1 file changed, 13 insertions(+), 4 deletions(-)
- Index: dhcp-4.4.3/client/scripts/linux
- ===================================================================
- --- dhcp-4.4.3.orig/client/scripts/linux
- +++ dhcp-4.4.3/client/scripts/linux
- @@ -32,6 +32,17 @@
- # if your system holds ip tool in a non-standard location.
- ip=/sbin/ip
-
- +chown_chmod_by_reference() {
- + local reference_file="$1"
- + local target_file="$2"
- +
- + local owner=$(stat -c "%u:%g" "$reference_file")
- + local perm=$(stat -c "%a" "$reference_file")
- +
- + chown "$owner" "$target_file"
- + chmod "$perm" "$target_file"
- +}
- +
- # update /etc/resolv.conf based on received values
- # This updated version mostly follows Debian script by Andrew Pollock et al.
- make_resolv_conf() {
- @@ -74,8 +85,7 @@ make_resolv_conf() {
- fi
-
- if [ -f /etc/resolv.conf ]; then
- - chown --reference=/etc/resolv.conf $new_resolv_conf
- - chmod --reference=/etc/resolv.conf $new_resolv_conf
- + chown_chmod_by_reference /etc/resolv.conf $new_resolv_conf
- fi
- mv -f $new_resolv_conf /etc/resolv.conf
- # DHCPv6
- @@ -101,8 +111,7 @@ make_resolv_conf() {
- fi
-
- if [ -f /etc/resolv.conf ]; then
- - chown --reference=/etc/resolv.conf $new_resolv_conf
- - chmod --reference=/etc/resolv.conf $new_resolv_conf
- + chown_chmod_by_reference /etc/resolv.conf $new_resolv_conf
- fi
- mv -f $new_resolv_conf /etc/resolv.conf
- fi
|