[Libguestfs] [PATCH] daemon: Remove use of fixed-size stack buffers.

Pino Toscano ptoscano at redhat.com
Wed Apr 19 16:53:44 UTC 2017


On Wednesday, 19 April 2017 18:47:11 CEST Richard W.M. Jones wrote:
> GCC 7 complains that the fixed size buffers are not large enough
> (at least in theory) when using ‘-O3 -mtune=broadwell’.
> ---
>  daemon/devsparts.c | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/daemon/devsparts.c b/daemon/devsparts.c
> index 584e7d8b8..eac79197e 100644
> --- a/daemon/devsparts.c
> +++ b/daemon/devsparts.c
> @@ -125,13 +125,16 @@ foreach_block_device (block_dev_func_t func, bool return_md)
>  static int
>  add_device (const char *device, struct stringsbuf *r)
>  {
> -  char dev_path[256];
> -  snprintf (dev_path, sizeof dev_path, "/dev/%s", device);
> +  CLEANUP_FREE char *dev_path;

Please init it to NULL, so it is not a problem in case new code is
added between this and what follows.  OTOH ...

>  
> -  if (add_string (r, dev_path) == -1) {
> +  if (asprintf (&dev_path, "/dev/%s", device) == -1) {
> +    reply_with_perror ("asprintf");
>      return -1;
>    }
>  
> +  if (add_string (r, dev_path) == -1)
> +    return -1;

... this could be add_string_nodup, handing over the dev_path string
to the stringbuf, and thus removing one memory allocation.

> +
>    return 0;
>  }
>  
> @@ -153,10 +156,13 @@ do_list_devices (void)
>  static int
>  add_partitions (const char *device, struct stringsbuf *r)
>  {
> -  char devdir[256];
> +  CLEANUP_FREE char *devdir;

Same note here about the initialization to NULL.

Thanks,
-- 
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20170419/b9fa4ffc/attachment.sig>


More information about the Libguestfs mailing list