[Mesa-dev] [PATCH 08/17] loader: Fix compiler warnings about truncating the PCI ID path.

Ian Romanick idr at freedesktop.org
Mon Feb 12 21:56:30 UTC 2018


On 02/10/2018 08:33 AM, Eric Anholt wrote:
> My build was producing:
> 
> ../src/loader/loader.c:121:67: warning: ā€˜%1uā€™ directive output may be truncated writing between 1 and 3 bytes into a region of size 2 [-Wformat-truncation=]
> 
> and we can avoid this careful calculation by just using asprintf (as we do
> elsewhere in the file).
> 
> Cc: Eric Engestrom <eric.engestrom at imgtec.com>
> ---
>  src/loader/loader.c | 15 +++++++--------
>  1 file changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/src/loader/loader.c b/src/loader/loader.c
> index 913b3dcac032..92b4c5204b19 100644
> --- a/src/loader/loader.c
> +++ b/src/loader/loader.c
> @@ -110,17 +110,16 @@ static char *loader_get_dri_config_device_id(void)
>  
>  static char *drm_construct_id_path_tag(drmDevicePtr device)
>  {
> -#define PCI_ID_PATH_TAG_LENGTH sizeof("pci-xxxx_xx_xx_x")
>     char *tag = NULL;
>  
>     if (device->bustype == DRM_BUS_PCI) {
> -        tag = calloc(PCI_ID_PATH_TAG_LENGTH, sizeof(char));
> -        if (tag == NULL)
> -            return NULL;
> -
> -        snprintf(tag, PCI_ID_PATH_TAG_LENGTH, "pci-%04x_%02x_%02x_%1u",
> -                 device->businfo.pci->domain, device->businfo.pci->bus,
> -                 device->businfo.pci->dev, device->businfo.pci->func);
> +      if (asprintf(&tag, "pci-%04x_%02x_%02x_%1u",
> +                   device->businfo.pci->domain,
> +                   device->businfo.pci->bus,
> +                   device->businfo.pci->dev,
> +                   device->businfo.pci->func) < 0) {
> +         return NULL;

Won't tag be NULL on failure?  Then you could just

      asprintf(&tag, "pci-%04x_%02x_%02x_%1u",
               device->businfo.pci->domain,
               device->businfo.pci->bus,
               device->businfo.pci->dev,
               device->businfo.pci->func);
      return tag;

> +      }
>     }
>     return tag;
>  }
> 



More information about the mesa-dev mailing list