[linux-lvm] [PATCH] gcc: change zero-sized array to fexlible array

heming.zhao at suse.com heming.zhao at suse.com
Sat Aug 29 03:11:42 UTC 2020



On 8/29/20 3:32 AM, Zdenek Kabelac wrote:
> Dne 26. 08. 20 v 7:18 heming.zhao at suse.com napsal(a):
>> ping.
>>
>> @Marian & other maintainers
>>
>>
>> On 8/21/20 12:05 AM, Zhao Heming wrote:
>>> this patch makes gcc happy with compiling option: [-Wstringop-overflow=]
>>>
>>> Signed-off-by: Zhao Heming <heming.zhao at suse.com>
>>> ---
>>>    device_mapper/libdm-common.c | 2 +-
>>>    lib/activate/fs.c            | 2 +-
>>>    libdm/libdm-common.c         | 2 +-
>>>    3 files changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/device_mapper/libdm-common.c b/device_mapper/libdm-common.c
>>> index bc691d6..3627457 100644
>>> --- a/device_mapper/libdm-common.c
>>> +++ b/device_mapper/libdm-common.c
>>> @@ -1445,7 +1445,7 @@ struct node_op_parms {
>>>        char *old_name;
>>>        int warn_if_udev_failed;
>>>        unsigned rely_on_udev;
>>> -    char names[0];
>>> +    char names[];
>>>    };
> 
> 
> Hi
> 
> Here I don't see much problem with patch itself - except it seems to be somewhat mysterious. Lvm2 is not strict ISO C compilable - there are far to many other things which would need to be fixed - thus flexible arrays shouldn't be an issue.
> 
> I'm curious why these 3 were important in your case - while other 26 appearances passed for you just fine (see attachment).
> 
> So can you paste what sort of gcc problem do you actually try to solve ?
> 
> Regards
> 
> Zdenek

These 3 zero-sized array blocked me to create lvm2 package for opensuse tumbleweed.
Opensuse uses OBS (open build service: https://openbuildservice.org/) to create rpm packages.
In my eyes, the OBS is black-box, it only showed these 3 warning and stopped building work.
So I filed patch only about these 3 places.

the build error just related with [-Wstringop-overflow=]
```
[   72s] In function 'strcpy',
[   72s]     inlined from '_store_str' at device_mapper/libdm-common.c:1453:2,
[   72s]     inlined from '_stack_node_op' at device_mapper/libdm-common.c:1589:2:
[   72s] /usr/include/bits/string_fortified.h:90:10: warning: '__builtin_strcpy' writing 1 or more bytes into a region of size 0 overflows the destination [-Wstringop-overflow=]
[   72s]    90 |   return __builtin___strcpy_chk (__dest, __src, __bos (__dest));
```

thanks,
heming





More information about the linux-lvm mailing list