[XEN PATCH] xen: address MISRA C:2012 Rule 4.1

Nicola Vetrini posted 1 patch 9 months, 2 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/378f18c287cfb65d25b42209c85645a2a10ff9b2.1689763253.git.nicola.vetrini@bugseng.com
xen/arch/x86/hvm/hvm.c  | 2 +-
xen/common/decompress.c | 4 ++--
xen/common/xz/stream.h  | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
[XEN PATCH] xen: address MISRA C:2012 Rule 4.1
Posted by Nicola Vetrini 9 months, 2 weeks ago
MISRA C:2012 Rule 4.1 has the following headline:
"Octal and hexadecimal escape sequences shall be terminated."

The string literals modified by this patch contain octal or
hexadecimal escape sequences that are neither terminated by the
end of the literal, nor by the beginning of another escape sequence.

Therefore, such unterminated sequences have been split into a
separate literal as a way to comply with the rule and preserve the
semantics of the code.

No functional changes.

Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com>
---
The choice whether to put a blank between the literals is up to
the maintainers' preference, I chose to do so to improve legibility.
---
 xen/arch/x86/hvm/hvm.c  | 2 +-
 xen/common/decompress.c | 4 ++--
 xen/common/xz/stream.h  | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 57363c2ae1..24ccf60d77 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -3853,7 +3853,7 @@ void hvm_ud_intercept(struct cpu_user_regs *regs)
                                         cs, &addr) &&
              (hvm_copy_from_guest_linear(sig, addr, sizeof(sig),
                                          walk, NULL) == HVMTRANS_okay) &&
-             (memcmp(sig, "\xf\xbxen", sizeof(sig)) == 0) )
+             (memcmp(sig, "\xf\xb" "xen", sizeof(sig)) == 0) )
         {
             regs->rip += sizeof(sig);
             regs->eflags &= ~X86_EFLAGS_RF;
diff --git a/xen/common/decompress.c b/xen/common/decompress.c
index 989336983f..2c2c2ad877 100644
--- a/xen/common/decompress.c
+++ b/xen/common/decompress.c
@@ -19,13 +19,13 @@ int __init decompress(void *inbuf, unsigned int len, void *outbuf)
     if ( len >= 3 && !memcmp(inbuf, "\x42\x5a\x68", 3) )
         return bunzip2(inbuf, len, NULL, NULL, outbuf, NULL, error);
 
-    if ( len >= 6 && !memcmp(inbuf, "\3757zXZ", 6) )
+    if ( len >= 6 && !memcmp(inbuf, "\375" "7zXZ", 6) )
         return unxz(inbuf, len, NULL, NULL, outbuf, NULL, error);
 
     if ( len >= 2 && !memcmp(inbuf, "\135\000", 2) )
         return unlzma(inbuf, len, NULL, NULL, outbuf, NULL, error);
 
-    if ( len >= 5 && !memcmp(inbuf, "\x89LZO", 5) )
+    if ( len >= 5 && !memcmp(inbuf, "\x89" "LZO", 5) )
         return unlzo(inbuf, len, NULL, NULL, outbuf, NULL, error);
 
     if ( len >= 2 && !memcmp(inbuf, "\x02\x21", 2) )
diff --git a/xen/common/xz/stream.h b/xen/common/xz/stream.h
index d36d0fec64..8d9fbbe1b5 100644
--- a/xen/common/xz/stream.h
+++ b/xen/common/xz/stream.h
@@ -18,7 +18,7 @@
 
 #define STREAM_HEADER_SIZE 12
 
-#define HEADER_MAGIC "\3757zXZ"
+#define HEADER_MAGIC "\375" "7zXZ"
 #define HEADER_MAGIC_SIZE 6
 
 #define FOOTER_MAGIC "YZ"
-- 
2.34.1
Re: [XEN PATCH] xen: address MISRA C:2012 Rule 4.1
Posted by Stefano Stabellini 9 months, 2 weeks ago
On Wed, 19 Jul 2023, Nicola Vetrini wrote:
> MISRA C:2012 Rule 4.1 has the following headline:
> "Octal and hexadecimal escape sequences shall be terminated."
> 
> The string literals modified by this patch contain octal or
> hexadecimal escape sequences that are neither terminated by the
> end of the literal, nor by the beginning of another escape sequence.
> 
> Therefore, such unterminated sequences have been split into a
> separate literal as a way to comply with the rule and preserve the
> semantics of the code.
> 
> No functional changes.
> 
> Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> The choice whether to put a blank between the literals is up to
> the maintainers' preference, I chose to do so to improve legibility.
> ---
>  xen/arch/x86/hvm/hvm.c  | 2 +-
>  xen/common/decompress.c | 4 ++--
>  xen/common/xz/stream.h  | 2 +-
>  3 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> index 57363c2ae1..24ccf60d77 100644
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -3853,7 +3853,7 @@ void hvm_ud_intercept(struct cpu_user_regs *regs)
>                                          cs, &addr) &&
>               (hvm_copy_from_guest_linear(sig, addr, sizeof(sig),
>                                           walk, NULL) == HVMTRANS_okay) &&
> -             (memcmp(sig, "\xf\xbxen", sizeof(sig)) == 0) )
> +             (memcmp(sig, "\xf\xb" "xen", sizeof(sig)) == 0) )
>          {
>              regs->rip += sizeof(sig);
>              regs->eflags &= ~X86_EFLAGS_RF;
> diff --git a/xen/common/decompress.c b/xen/common/decompress.c
> index 989336983f..2c2c2ad877 100644
> --- a/xen/common/decompress.c
> +++ b/xen/common/decompress.c
> @@ -19,13 +19,13 @@ int __init decompress(void *inbuf, unsigned int len, void *outbuf)
>      if ( len >= 3 && !memcmp(inbuf, "\x42\x5a\x68", 3) )
>          return bunzip2(inbuf, len, NULL, NULL, outbuf, NULL, error);
>  
> -    if ( len >= 6 && !memcmp(inbuf, "\3757zXZ", 6) )
> +    if ( len >= 6 && !memcmp(inbuf, "\375" "7zXZ", 6) )
>          return unxz(inbuf, len, NULL, NULL, outbuf, NULL, error);
>  
>      if ( len >= 2 && !memcmp(inbuf, "\135\000", 2) )
>          return unlzma(inbuf, len, NULL, NULL, outbuf, NULL, error);
>  
> -    if ( len >= 5 && !memcmp(inbuf, "\x89LZO", 5) )
> +    if ( len >= 5 && !memcmp(inbuf, "\x89" "LZO", 5) )
>          return unlzo(inbuf, len, NULL, NULL, outbuf, NULL, error);
>  
>      if ( len >= 2 && !memcmp(inbuf, "\x02\x21", 2) )
> diff --git a/xen/common/xz/stream.h b/xen/common/xz/stream.h
> index d36d0fec64..8d9fbbe1b5 100644
> --- a/xen/common/xz/stream.h
> +++ b/xen/common/xz/stream.h
> @@ -18,7 +18,7 @@
>  
>  #define STREAM_HEADER_SIZE 12
>  
> -#define HEADER_MAGIC "\3757zXZ"
> +#define HEADER_MAGIC "\375" "7zXZ"
>  #define HEADER_MAGIC_SIZE 6
>  
>  #define FOOTER_MAGIC "YZ"
> -- 
> 2.34.1
>
Re: [XEN PATCH] xen: address MISRA C:2012 Rule 4.1
Posted by Jan Beulich 9 months, 2 weeks ago
On 20.07.2023 02:23, Stefano Stabellini wrote:
> On Wed, 19 Jul 2023, Nicola Vetrini wrote:
>> MISRA C:2012 Rule 4.1 has the following headline:
>> "Octal and hexadecimal escape sequences shall be terminated."
>>
>> The string literals modified by this patch contain octal or
>> hexadecimal escape sequences that are neither terminated by the
>> end of the literal, nor by the beginning of another escape sequence.
>>
>> Therefore, such unterminated sequences have been split into a
>> separate literal as a way to comply with the rule and preserve the
>> semantics of the code.
>>
>> No functional changes.
>>
>> Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com>
> 
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

In order to get this off the plate
Acked-by: Jan Beulich <jbeulich@suse.com>
albeit I'm not overly happy with ...

>> --- a/xen/arch/x86/hvm/hvm.c
>> +++ b/xen/arch/x86/hvm/hvm.c
>> @@ -3853,7 +3853,7 @@ void hvm_ud_intercept(struct cpu_user_regs *regs)
>>                                          cs, &addr) &&
>>               (hvm_copy_from_guest_linear(sig, addr, sizeof(sig),
>>                                           walk, NULL) == HVMTRANS_okay) &&
>> -             (memcmp(sig, "\xf\xbxen", sizeof(sig)) == 0) )
>> +             (memcmp(sig, "\xf\xb" "xen", sizeof(sig)) == 0) )

... this. Imo it should never have been a string literal here. But
I'm also not really up to making yet another alternative patch.

Jan