Update check for invalid values in pe_bfd_read_buildid function.
[deliverable/binutils-gdb.git] / bfd / libbfd.c
index 7a6f3814f5ef16ef3ccb90a3ca699182739fd025..2a49b61d2b441306c55f8683c7a380553263432a 100644 (file)
@@ -1,5 +1,5 @@
 /* Assorted BFD support routines, only used internally.
-   Copyright (C) 1990-2016 Free Software Foundation, Inc.
+   Copyright (C) 1990-2017 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -119,6 +119,15 @@ _bfd_norelocs_canonicalize_reloc (bfd *abfd ATTRIBUTE_UNUSED,
   return 0;
 }
 
+void
+_bfd_norelocs_set_reloc (bfd *abfd ATTRIBUTE_UNUSED,
+                         asection *sec ATTRIBUTE_UNUSED,
+                         arelent **relptr ATTRIBUTE_UNUSED,
+                         unsigned int count ATTRIBUTE_UNUSED)
+{
+  /* Do nothing.  */
+}
+
 bfd_boolean
 _bfd_nocore_core_file_matches_executable_p
   (bfd *ignore_core_bfd ATTRIBUTE_UNUSED,
@@ -786,6 +795,7 @@ _bfd_generic_get_section_contents (bfd *abfd,
   if (section->compress_status != COMPRESS_SECTION_NONE)
     {
       _bfd_error_handler
+       /* xgettext:c-format */
        (_("%B: unable to get decompressed section %A"),
         abfd, section);
       bfd_set_error (bfd_error_invalid_operation);
@@ -802,7 +812,11 @@ _bfd_generic_get_section_contents (bfd *abfd,
   else
     sz = section->size;
   if (offset + count < count
-      || offset + count > sz)
+      || offset + count > sz
+      || (abfd->my_archive != NULL
+         && !bfd_is_thin_archive (abfd->my_archive)
+         && ((ufile_ptr) section->filepos + offset + count
+             > arelt_size (abfd))))
     {
       bfd_set_error (bfd_error_invalid_operation);
       return FALSE;
@@ -857,7 +871,12 @@ _bfd_generic_get_section_contents_in_window
     sz = section->rawsize;
   else
     sz = section->size;
-  if (offset + count > sz
+  if (offset + count < count
+      || offset + count > sz
+      || (abfd->my_archive != NULL
+         && !bfd_is_thin_archive (abfd->my_archive)
+         && ((ufile_ptr) section->filepos + offset + count
+             > arelt_size (abfd)))
       || ! bfd_get_file_window (abfd, section->filepos + offset, count, w,
                                TRUE))
     return FALSE;
@@ -926,10 +945,10 @@ bfd_generic_is_local_label_name (bfd *abfd, const char *name)
    old routines.  */
 
 void
-warn_deprecated (const char *what,
-                const char *file,
-                int line,
-                const char *func)
+_bfd_warn_deprecated (const char *what,
+                     const char *file,
+                     int line,
+                     const char *func)
 {
   /* Poor man's tracking of functions we've already warned about.  */
   static size_t mask = 0;
@@ -940,6 +959,7 @@ warn_deprecated (const char *what,
       /* Note: separate sentences in order to allow
         for translation into other languages.  */
       if (func)
+       /* xgettext:c-format */
        fprintf (stderr, _("Deprecated %s called at %s line %d in %s\n"),
                 what, file, line, func);
       else
@@ -952,9 +972,9 @@ warn_deprecated (const char *what,
 /* Helper function for reading uleb128 encoded data.  */
 
 bfd_vma
-read_unsigned_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
-                     bfd_byte *buf,
-                     unsigned int *bytes_read_ptr)
+_bfd_read_unsigned_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
+                          bfd_byte *buf,
+                          unsigned int *bytes_read_ptr)
 {
   bfd_vma result;
   unsigned int num_read;
@@ -983,11 +1003,11 @@ read_unsigned_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
    No bytes will be read at address END or beyond.  */
 
 bfd_vma
-safe_read_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
-                 bfd_byte *data,
-                 unsigned int *length_return,
-                 bfd_boolean sign,
-                 const bfd_byte * const end)
+_bfd_safe_read_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
+                      bfd_byte *data,
+                      unsigned int *length_return,
+                      bfd_boolean sign,
+                      const bfd_byte * const end)
 {
   bfd_vma result = 0;
   unsigned int num_read = 0;
@@ -1019,9 +1039,9 @@ safe_read_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
 /* Helper function for reading sleb128 encoded data.  */
 
 bfd_signed_vma
-read_signed_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
-                   bfd_byte *buf,
-                   unsigned int *bytes_read_ptr)
+_bfd_read_signed_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
+                        bfd_byte *buf,
+                        unsigned int *bytes_read_ptr)
 {
   bfd_vma result;
   unsigned int shift;
This page took 0.025409 seconds and 4 git commands to generate.