|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2] tools/hotplug: Fix dhcpd symlink removal in vif-nat
> On 9 Sep 2020, at 13:35, Diego Sueiro <Diego.Sueiro@xxxxxxx> wrote:
>
> Copy temp files used to add/remove dhcpd configurations to avoid
> replacing potential symlinks.
>
> If dhcp.conf is a symlink pointing to dhcp.conf.real, using 'mv'
> creates a new file dhcp.conf where cp will actually modify
> dhcp.conf.real instead of replacing the symlink with a real
> file.
>
> Using 'cp' prevents some mistakes where the user will actually
> continue to modify dhcp.conf.real where it would not be the one
> used anymore.
>
> Signed-off-by: Diego Sueiro <diego.sueiro@xxxxxxx>
Reviewed-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
> ---
> Changes in v2:
> - Update commit message
> - Simplify the code when removing the temp file.
> ---
> tools/hotplug/Linux/vif-nat | 20 +++++++++-----------
> 1 file changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/tools/hotplug/Linux/vif-nat b/tools/hotplug/Linux/vif-nat
> index 2614435..fd34afb 100644
> --- a/tools/hotplug/Linux/vif-nat
> +++ b/tools/hotplug/Linux/vif-nat
> @@ -95,12 +95,11 @@ dhcparg_remove_entry()
> {
> local tmpfile=$(mktemp)
> sed -e "s/${dev} //" "$dhcpd_arg_file" >"$tmpfile"
> - if diff "$tmpfile" "$dhcpd_arg_file" >/dev/null
> + if ! diff "$tmpfile" "$dhcpd_arg_file" >/dev/null
> then
> - rm "$tmpfile"
> - else
> - mv "$tmpfile" "$dhcpd_arg_file"
> + cp "$tmpfile" "$dhcpd_arg_file"
> fi
> + rm "$tmpfile"
> }
>
> dhcparg_add_entry()
> @@ -109,11 +108,11 @@ dhcparg_add_entry()
> local tmpfile=$(mktemp)
> # handle Red Hat, SUSE, and Debian styles, with or without quotes
> sed -e 's/^DHCPDARGS="*\([^"]*\)"*/DHCPDARGS="\1'"${dev} "'"/' \
> - "$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
> + "$dhcpd_arg_file" >"$tmpfile" && cp "$tmpfile" "$dhcpd_arg_file"
> sed -e 's/^DHCPD_INTERFACE="*\([^"]*\)"*/DHCPD_INTERFACE="\1'"${dev} "'"/' \
> - "$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
> + "$dhcpd_arg_file" >"$tmpfile" && cp "$tmpfile" "$dhcpd_arg_file"
> sed -e 's/^INTERFACES="*\([^"]*\)"*/INTERFACES="\1'"${dev} "'"/' \
> - "$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
> + "$dhcpd_arg_file" >"$tmpfile" && cp "$tmpfile" "$dhcpd_arg_file"
> rm -f "$tmpfile"
> }
>
> @@ -121,12 +120,11 @@ dhcp_remove_entry()
> {
> local tmpfile=$(mktemp)
> grep -v "host $hostname" "$dhcpd_conf_file" >"$tmpfile"
> - if diff "$tmpfile" "$dhcpd_conf_file" >/dev/null
> + if ! diff "$tmpfile" "$dhcpd_conf_file" >/dev/null
> then
> - rm "$tmpfile"
> - else
> - mv "$tmpfile" "$dhcpd_conf_file"
> + cp "$tmpfile" "$dhcpd_conf_file"
> fi
> + rm "$tmpfile"
> dhcparg_remove_entry
> }
>
> --
> 2.7.4
>
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |