Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Dec 2005 14:09:16 +0100
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        Doug Ambrisko <ambrisko@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src Makefile.inc1 src/lib/libc/gen __xuname.c getosreldate.c
Message-ID:  <20051202130916.GB1427@garage.freebsd.pl>
In-Reply-To: <200512020050.jB20oU8c000911@repoman.freebsd.org>
References:  <200512020050.jB20oU8c000911@repoman.freebsd.org>

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

--4bRzO86E/ozDv8r1
Content-Type: text/plain; charset=iso-8859-2
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Dec 02, 2005 at 12:50:30AM +0000, Doug Ambrisko wrote:
+> ambrisko    2005-12-02 00:50:30 UTC
+>=20
+>   FreeBSD src repository
+>=20
+>   Modified files:
+>     .                    Makefile.inc1=20
+>     lib/libc/gen         __xuname.c getosreldate.c=20
+>   Log:
+>   Add support to easily build FreeBSD unpacked in a chroot of another
+>   FreeBSD machine.  To do this add the man 1 uname changes to __xuname.c
+>   so we can override the settings it reports.  Add OSVERSION override
+>   to getosreldate.  Finally which Makefile.inc1 to use uname -m instead
+>   of  sysctl -n hw.machine_arch to get the arch. type.
+>  =20
+>   With these change you can put a complete FreeBSD OS image into a
+>   chroot set:
+>           UNAME_s=3DFreeBSD
+>           UNAME_r=3D4.7-RELEASE
+>           UNAME_v=3D"FreeBSD $UNAME_r #1: Fri Jul 22 20:32:52 PDT 2005 f=
ake@fake:/usr/obj/usr/src/sys/FAKE"
+>           UNAME_m=3Di386
+>           UNAME_p=3Di386
+>           OSVERSION=3D470000
+>   on an amd64 or i386 and it just work including building ports and using
+>   pkg_add -r etc.  The caveat for this example is that these patches
+>   have to be applied to FreeBSD 4.7 and the uname(1) changes need to
+>   be merged.  This also addresses issue with libtool.
+>  =20
+>   This is usefull for when a build machine has been trashed for an
+>   old release and we want to do a build on a new machine that FreeBSD
+>   4.7 won't run on ...
[...]
+>  	name->sysname[sizeof(name->sysname) - 1] =3D '\0';
+> +	if ((p =3D getenv("UNAME_s")))
+> +		strncpy(name->sysname, p, sizeof(name->sysname));
[...]
+>  	name->release[sizeof(name->release) - 1] =3D '\0';
+> +	if ((p =3D getenv("UNAME_r")))
+> +		strncpy(name->release, p, sizeof(name->release));
[...]
+> +	if ((p =3D getenv("UNAME_v")))
+> +		strncpy(name->version, p, sizeof(name->version));
[...]
+>  	name->machine[sizeof(name->machine) - 1] =3D '\0';
+> +	if ((p =3D getenv("UNAME_m")))
+> +		strncpy(name->machine, p, sizeof(name->machine));

As you can see, previous code tried to NULL-terminate buffers copied using
strncpy(3) properly and you inserted your changes after these
terminations. Please, NULL-terminate the buffers after using strncpy(3).

PS. Very useful change. At least for me:)

--=20
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd@FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!

--4bRzO86E/ozDv8r1
Content-Type: application/pgp-signature
Content-Disposition: inline

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

iD8DBQFDkEd7ForvXbEpPzQRAgFNAKC7KJQl1RzqUvEeKiXiBkmxQpPd3QCg7WIH
DQZ0LTNK2lRzk6Aa4bPiYw4=
=7fTL
-----END PGP SIGNATURE-----

--4bRzO86E/ozDv8r1--



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