]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
commands/i386/pc/sendkey: Fix "writing 1 byte into a region of size 0" build error
authorDaniel Kiper <daniel.kiper@oracle.com>
Thu, 10 Mar 2022 15:48:50 +0000 (16:48 +0100)
committerDaniel Kiper <daniel.kiper@oracle.com>
Mon, 14 Mar 2022 22:05:00 +0000 (23:05 +0100)
Latest GCC may complain in that way:

  commands/i386/pc/sendkey.c: In function ‘grub_sendkey_postboot’:
  commands/i386/pc/sendkey.c:223:21: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
    223 |   *((char *) 0x41a) = 0x1e;
        |   ~~~~~~~~~~~~~~~~~~^~~~~~

The volatile keyword addition helps and additionally assures us the
compiler will not optimize out fixed assignments.

Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
Reviewed-by: Robbie Harwood <rharwood@redhat.com>
grub-core/commands/i386/pc/sendkey.c

index af91cc835a1163f047b771c173732406d6649949..184befabfbeac98244198c223ff3e9582c50bd96 100644 (file)
@@ -220,8 +220,8 @@ grub_sendkey_postboot (void)
 
   *flags = oldflags;
 
-  *((char *) 0x41a) = 0x1e;
-  *((char *) 0x41c) = 0x1e;
+  *((volatile char *) 0x41a) = 0x1e;
+  *((volatile char *) 0x41c) = 0x1e;
 
   return GRUB_ERR_NONE;
 }
@@ -236,8 +236,8 @@ grub_sendkey_preboot (int noret __attribute__ ((unused)))
   oldflags = *flags;
 
   /* Set the sendkey.  */
-  *((char *) 0x41a) = 0x1e;
-  *((char *) 0x41c) = keylen + 0x1e;
+  *((volatile char *) 0x41a) = 0x1e;
+  *((volatile char *) 0x41c) = keylen + 0x1e;
   grub_memcpy ((char *) 0x41e, sendkey, 0x20);
 
   /* Transform "any ctrl" to "right ctrl" flag.  */