[libvirt] [PATCH 4/7] network: use virAsprintf when appropriate

Matthias Bolte matthias.bolte at googlemail.com
Wed Sep 1 21:20:13 UTC 2010


2010/9/1 Eric Blake <eblake at redhat.com>:
> * src/conf/network_conf.c (virNetworkAllocateBridge): Avoid
> limited buffer from snprintf.
> ---
>
> Why print to a fixed-width buffer to then just strdup it later,
> when we can print to a malloc'd buffer in the first place.  Besides,
> I couldn't easily guarantee if the buffer was large enough or if
> it would contain arbitrary user input.
>
>  src/conf/network_conf.c |   15 ++++++---------
>  1 files changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
> index 347fc0b..4c0248c 100644
> --- a/src/conf/network_conf.c
> +++ b/src/conf/network_conf.c
> @@ -891,17 +891,14 @@ char *virNetworkAllocateBridge(const virNetworkObjListPtr nets,
>         template = "virbr%d";
>
>     do {
> -        char try[50];
> -
> -        snprintf(try, sizeof(try), template, id);
> -
> -        if (!virNetworkBridgeInUse(nets, try, NULL)) {
> -            if (!(newname = strdup(try))) {
> -                virReportOOMError();
> -                return NULL;
> -            }
> +        if (virAsprintf(&newname, template, id) < 0) {
> +            virReportOOMError();
> +            return NULL;
> +        }
> +        if (!virNetworkBridgeInUse(nets, newname, NULL)) {
>             return newname;
>         }
> +        VIR_FREE(newname);
>
>         id++;
>     } while (id <= MAX_BRIDGE_ID);
> --
> 1.7.2.2
>

ACK.

Matthias




More information about the libvir-list mailing list