From: Ulrich Drepper Date: Sat, 24 Jan 2009 00:32:21 +0000 (-0800) Subject: Fix handling of file descriptors for the files size opens. X-Git-Tag: elfutils-0.140~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ccccab08d66be13fe9ff5ca07f46709c069b45a2;p=thirdparty%2Felfutils.git Fix handling of file descriptors for the files size opens. --- diff --git a/src/ChangeLog b/src/ChangeLog index 30fdb07b7..6203f712a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2009-01-23 Ulrich Drepper + * size.c (process_file): When handling archive, close file descriptor + here. For unknown file format also close file descriptor. + (handle_ar): Don't close file descriptor here. + * readelf.c (parse_opt): Move code to add to dump_data_sections and string_sections list in local function add_dump_section. Adjust 'x' key handling. For 'a' key add .strtab, .dynstr, and .comment section diff --git a/src/size.c b/src/size.c index f6f23d55f..4698c350f 100644 --- a/src/size.c +++ b/src/size.c @@ -319,13 +319,23 @@ process_file (const char *fname) return 0; } else if (likely (elf_kind (elf) == ELF_K_AR)) - return handle_ar (fd, elf, NULL, fname); + { + int result = handle_ar (fd, elf, NULL, fname); + + if (unlikely (close (fd) != 0)) + error (EXIT_FAILURE, errno, gettext ("while closing '%s'"), fname); + + return result; + } /* We cannot handle this type. Close the descriptor anyway. */ if (unlikely (elf_end (elf) != 0)) INTERNAL_ERROR (fname); } + if (unlikely (close (fd) != 0)) + error (EXIT_FAILURE, errno, gettext ("while closing '%s'"), fname); + error (0, 0, gettext ("%s: file format not recognized"), fname); return 1; @@ -396,9 +406,6 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname) if (unlikely (elf_end (elf) != 0)) INTERNAL_ERROR (fname); - if (unlikely (close (fd) != 0)) - error (EXIT_FAILURE, errno, gettext ("while closing '%s'"), fname); - return result; }