Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Aug 2012 11:59:37 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Alexander Kabaev <kabaev@gmail.com>
Cc:        freebsd-current@freebsd.org, Steve Kargl <sgk@troutmask.apl.washington.edu>
Subject:   Re: rtld dropping core on recent -current
Message-ID:  <20120803085937.GJ2676@deviant.kiev.zoral.com.ua>
In-Reply-To: <20120802215536.027914c9@kan.dyndns.org>
References:  <20120802213954.GA34928@troutmask.apl.washington.edu> <20120802215536.027914c9@kan.dyndns.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--I9F9dHb6y8qwQWx+
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Aug 02, 2012 at 09:55:36PM -0400, Alexander Kabaev wrote:
> It is weird that program tries to dlopen what appears to be the binary
> (itself?), but that did uncover the issue. Please try attached patch,
> I only very lightly tested it here.
>=20
> Also available here:
> http://people.freebsd.org/~kan/rtld-digest-notes.diff
>=20
> --=20
> Alexander Kabaev

diff --git a/libexec/rtld-elf/map_object.c b/libexec/rtld-elf/map_object.c
index 509a64f..350d437 100644
--- a/libexec/rtld-elf/map_object.c
+++ b/libexec/rtld-elf/map_object.c
@@ -153,7 +153,6 @@ map_object(int fd, const char *path, const struct stat =
*sb)
 		break;
 	    note_start =3D (Elf_Addr)(char *)hdr + phdr->p_offset;
 	    note_end =3D note_start + phdr->p_filesz;
-	    digest_notes(obj, note_start, note_end);
 	    break;
 	}
=20
@@ -292,6 +291,11 @@ map_object(int fd, const char *path, const struct stat=
 *sb)
     obj->relro_page =3D obj->relocbase + trunc_page(relro_page);
     obj->relro_size =3D round_page(relro_size);
=20
+    if (note_start < note_end)
+    {
+	digest_notes(obj, note_start, note_end);
+    }
+
     munmap(hdr, PAGE_SIZE);
     return (obj);
=20
This is the right fix.

Why do you need the '{}' there ?

--I9F9dHb6y8qwQWx+
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (FreeBSD)

iEYEARECAAYFAlAbkvkACgkQC3+MBN1Mb4gPFQCgo6iYJoBRTLpyR5SLhADUOz3e
ItkAnA61BcRblEy1vQ6DIs7ARb+9jlxP
=GpIa
-----END PGP SIGNATURE-----

--I9F9dHb6y8qwQWx+--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120803085937.GJ2676>