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

Eric Anholt eric at anholt.net
Tue Feb 13 10:31:04 UTC 2018


Ian Romanick <idr at freedesktop.org> writes:

> 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;

"If memory allocation wasn't possible, or some other error occurs, these
functions will return -1, and the contents of strp are undefined."
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180213/a45ae8df/attachment.sig>


More information about the mesa-dev mailing list