]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Check
authorVladimir Serbinenko <phcoder@gmail.com>
Mon, 9 Dec 2013 14:51:12 +0000 (15:51 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Mon, 9 Dec 2013 14:51:12 +0000 (15:51 +0100)
range of R_SPARC_HI22.
Implement R_SPARC_LM22.

ChangeLog
grub-core/kern/sparc64/dl.c

index cddcf38971ca80e7ae6391d810f5a45a73a5b8e1..2b9f300bb0d90dda9aa57b78a5cfa5e51463ff6d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-09  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Check
+       range of R_SPARC_HI22.
+       Implement R_SPARC_LM22.
+
 2013-12-09  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/kern/powerpc/dl_helper.c (grub_arch_dl_get_tramp_got_size):
index fa086ff5cdad2cda3e66e0b98d66bbb77cf89a14..c6cac6838c78e33c2c10e376f231fd06daa863cc 100644 (file)
@@ -90,6 +90,10 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
          *addr = (*addr & 0xFFFFFC00) | ((value >> 32) & 0x3FF);
          break;
        case R_SPARC_HI22: /* 9 V-imm22 */
+         if (value >> 32)
+           return grub_error (GRUB_ERR_BAD_MODULE,
+                              "address out of 32 bits range");
+       case R_SPARC_LM22:
          *addr = (*addr & 0xFFC00000) | ((value >> 10) & 0x3FFFFF);
          break;
        case R_SPARC_LO10: /* 12 T-simm13 */