Source: mklibs Version: 0.1.30 Severity: important Tags: patch This was originally found on armhf (a new port on debian-ports.org), when doing d-i work, but was also reproduced on amd64 and Ubuntu armel -which I guess uses the same source.
You can easily check it by doing: $ mklibs-readelf -n /sbin/ldconfig.real Segmentation fault I attach a simple patch that fixes this. It just checks to see if the about-to-be-checked elf dynamic section is non-null. This should be trivial to include, so please do so, I had d-i build image fail on me because of this. Thanks. Konstantinos -- System Information: Debian Release: squeeze/sid Architecture: armhf (armv7l) Kernel: Linux 2.6.31.14-efikamx (PREEMPT) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash
diff -ruN mklibs-0.1.30/src/mklibs-readelf/main.cpp mklibs-0.1.30.fixed//src/mklibs-readelf/main.cpp --- mklibs-0.1.30/src/mklibs-readelf/main.cpp 2010-06-02 17:47:32.000000000 +0000 +++ mklibs-0.1.30.fixed//src/mklibs-readelf/main.cpp 2010-12-10 12:32:08.939766620 +0000 @@ -56,11 +56,14 @@ static void process_dynamics (Elf::file *file, int64_t tag) { const Elf::section_type<Elf::section_type_DYNAMIC> *section = file->get_section_DYNAMIC (); - for (std::vector<Elf::dynamic *>::const_iterator it = section->get_dynamics ().begin (); it != section->get_dynamics ().end (); ++it) - { - Elf::dynamic *dynamic = *it; - if (dynamic->get_tag () == tag) - std::cout << dynamic->get_val_string () << '\n'; + std::cout << "process_dynamics: section = " << std::hex << section << "\n"; + if (section != NULL) { + for (std::vector<Elf::dynamic *>::const_iterator it = section->get_dynamics ().begin (); it != section->get_dynamics ().end (); ++it) + { + Elf::dynamic *dynamic = *it; + if (dynamic->get_tag () == tag) + std::cout << dynamic->get_val_string () << '\n'; + } } }