[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