> On 25 Aug 2023, at 09:28, Jan Beulich <jbeul...@suse.com> wrote:
>
> On 25.08.2023 10:18, Michal Orzel wrote:
>> Hi Stefano,
>>
>> On 25/08/2023 00:24, Stefano Stabellini wrote:
>>>
>>>
>>> Hi Luca,
>>>
>>> We are looking into adding ECLAIR support for xen-analysis so that we
>>> can use the SAF-n-safe tags also with ECLAIR.
>>>
>>> One question that came up is about multi-line statements. For instance,
>>> in a case like the following:
>>>
>>> diff --git a/xen/common/inflate.c b/xen/common/inflate.c
>>> index 8fa4b96d12..8bdc9208da 100644
>>> --- a/xen/common/inflate.c
>>> +++ b/xen/common/inflate.c
>>> @@ -1201,6 +1201,7 @@ static int __init gunzip(void)
>>> magic[1] = NEXTBYTE();
>>> method = NEXTBYTE();
>>>
>>> + /* SAF-1-safe */
>>> if (magic[0] != 037 ||
>>> ((magic[1] != 0213) && (magic[1] != 0236))) {
>>> error("bad gzip magic numbers");
>>>
>>>
>>> Would SAF-1-safe cover both 037, and also 0213 and 0213?
>>> Or would it cover only 037?
>>>
>>> We haven't use SAFE-n-safe extensively through the codebase yet but
>>> my understanding is that SAFE-n-safe would cover the entire statement of
>>> the following line, even if it is multi-line. Is that also your
>>> understanding? Does it work like that with cppcheck?
>> Looking at the docs and the actual script, only the single line below SAF
>> comment is excluded.
>> So in your case you would require:
>>
>> /* SAF-1-safe */
>> if (magic[0] != 037 ||
>> /* SAF-1-safe */
>> ((magic[1] != 0213) && (magic[1] != 0236))) {
>> error("bad gzip magic numbers");
>
> Or (perhaps more neatly):
>
> /* SAF-1-safe */
> if (magic[0] != 037 || (magic[1] != 0213 && magic[1] != 0236)) {
> error("bad gzip magic numbers");
+1 for this approach, I was going to suggest it
>
> Jan