[PATCH] lxc: Fix segfault when lxc.network does not start with 'type'
Michal Privoznik
mprivozn at redhat.com
Thu Feb 6 08:50:53 UTC 2020
On 2/6/20 3:12 AM, Julio Faracco wrote:
> To configure network settings using config file, legacy LXC settings
> require starting them with 'lxc.network.type' entry. If someone
> accidentally starts with 'lxc.network.name', libvirt will crash with
> segfault. This patch checks if this case is happening.
>
> Sample invalid settings:
> lxc.network.link = eth0
> lxc.network.type = phys
> lxc.network.name = eth1
> lxc.network.ipv4 = 192.168.122.2/24
> lxc.network.ipv4.gateway = 192.168.122.1
>
> Now, libvirt only see error without segmentation fault.
>
> Signed-off-by: Julio Faracco <jcfaracco at gmail.com>
> ---
> src/lxc/lxc_native.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/src/lxc/lxc_native.c b/src/lxc/lxc_native.c
> index 59f3dd4fee..5462b74b85 100644
> --- a/src/lxc/lxc_native.c
> +++ b/src/lxc/lxc_native.c
> @@ -717,7 +717,11 @@ lxcNetworkGetParseDataByIndexLegacy(lxcNetworkParseDataArray *networks,
> }
>
> /* Return last element added like a stack. */
> - return networks->parseData[ndata - 1];
> + if (networks->ndata > 0)
> + return networks->parseData[ndata - 1];
This doesn't feel right. The same variable should be used in both lines.
I mean either go with:
if (ndata > 0)
return networks->parseData[ndata - 1];
or:
if (networks->ndata > 0)
return networks->parseData[networks->ndata - 1];
The first one looks better to me. I can fix it before pushing, if you agree.
Michal
More information about the libvir-list
mailing list