]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
prevent crash in StELFFile::dumpSections() for certain section types v1.2
authorLothar Waßmann <LW@KARO-electronics.de>
Fri, 9 Mar 2012 14:27:18 +0000 (15:27 +0100)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 9 Mar 2012 14:27:18 +0000 (15:27 +0100)
tools/elftosb/common/StELFFile.cpp

index 3b4b5686bb3aa6ac032bd655425d30c15061582f..09124d5e1f1591d3a7999781373dcf3f9b546d2a 100644 (file)
@@ -505,8 +505,20 @@ void StELFFile::dumpSections()
        {
                const Elf32_Shdr & header = getSectionAtIndex(i);
                std::string name = getSectionNameAtIndex(header.sh_name);
-               
-               printf("%s: %s, 0x%08x, 0x%08x, 0x%08x, %d, %d, %d\n", name.c_str(), sectionTypes[header.sh_type], header.sh_addr, header.sh_offset, header.sh_size, header.sh_link, header.sh_info, header.sh_entsize);
+
+               if (header.sh_type < sizeof(sectionTypes) / sizeof(sectionTypes[0])) {
+                       printf("%s: %s, 0x%08x, 0x%08x, 0x%08x, %d, %d, %d\n",
+                              name.c_str(), sectionTypes[header.sh_type],
+                              header.sh_addr, header.sh_offset,
+                              header.sh_size, header.sh_link,
+                              header.sh_info, header.sh_entsize);
+               } else {
+                       printf("%s: 0x%02x, 0x%08x, 0x%08x, 0x%08x, %d, %d, %d\n",
+                              name.c_str(), header.sh_type,
+                              header.sh_addr, header.sh_offset,
+                              header.sh_size, header.sh_link,
+                              header.sh_info, header.sh_entsize);
+               }
        }
 }