Date: Thu, 8 Jun 2006 21:56:28 -0700 From: Brooks Davis <brooks@one-eyed-alien.net> To: Doug White <dwhite@gumbysoft.com> Cc: freebsd-rc@freebsd.org Subject: Re: conf/94377 : [patch] /etc/rc.d/sshd improperly tests random dev state Message-ID: <20060609045628.GB25288@odin.ac.hmc.edu> In-Reply-To: <20060608175640.R50887@carver.gumbysoft.com> References: <200606082130.k58LUYQO069255@freefall.freebsd.org> <20060609005422.GA25288@odin.ac.hmc.edu> <20060608175640.R50887@carver.gumbysoft.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--kXdP64Ggrk/fb43R Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Jun 08, 2006 at 05:58:29PM -0700, Doug White wrote: > On Thu, 8 Jun 2006, Brooks Davis wrote: >=20 > >On Thu, Jun 08, 2006 at 09:30:34PM +0000, Doug White wrote: > >>The following reply was made to PR conf/94377; it has been noted by GNA= TS. > >> > >>From: Doug White <dwhite@gumbysoft.com> > >>To: Rostislav Krasny <rosti.bsd@gmail.com> > >>Cc: Florent Thoumie <flz@FreeBSD.org>, Doug White <dwhite@FreeBSD.org>, > >> bug-followup@FreeBSD.org > >>Subject: Re: conf/94377 : [patch] /etc/rc.d/sshd improperly tests rando= m=20 > >>dev > >> state > >>Date: Thu, 8 Jun 2006 10:36:05 -0700 (PDT) > >> > >> On Thu, 8 Jun 2006, Rostislav Krasny wrote: > >> > >>> I've seen that patch just today, when it is already MFCed. I think it > >>> could be simpler. Instead of > >>> > >>> [ "x${seeded}" !=3D "x" ] && [ ${seeded} -eq 0 ] > >>> > >>> you can write just > >>> > >>> [ "${seeded}" =3D "0" ] > >>> > >>> and it will be still correct against sysctl failing and returning an > >>> empty string. > >> > >> No, because if ${seeded} is empty, the shell interprets the test as > >> > >> [ =3D "0" ] > >> > >> which results in a syntax error. The 'x' in the first test is=20 > >> significant. > > > >Not true. The 'x' bit has been unnecessicary 31337 for quite some > >time IMO. If you didn't quote ${seeded} then it would be, but > >"${variable_that_expands_to_null}" is "". Otherwise -z and -n wouldn't > >work. >=20 > -z and -n are unary operations. They just check if the *have* an argument= .=20 > =3D is a comparison operation and requires two operands. I think they do actually check the argument, but weird things happen if you pass them an unquoted argument (both -z and -n return true if you use normal [ testargs ]; syntax). I'm not quite sure what's happening. > If it offends you two that much then file a new PR. I honestly don't give= =20 > a crap. I don't care about the change (at least not enough to do anything about it). It's fine, particularly since there's plenty of code like it in the system. I only responded because the belief that the x"${var}" idiom is necessicary is widely held for no reason I can figure out except perhaps that it's so widely used the obvious inference is that there must be some reason for doing so. :) I can only assume that some ancient system didn't have -n and -z and didn't handle null arguments properly. The following test code illustrates that the proposed solution would work and an oddity if you don't quote the arguments passed to -z and -n. -- Brooks ---<cut>--- #!/bin/sh nullvar=3D zerovar=3D0 if [ -z "${nullvar}" ]; then echo "nullvar is empty" else echo "nullvar is not empty" fi if [ "${nullvar}" =3D "0" ]; then echo "nullvar equals 0" else echo "nullvar does not equal 0" fi if [ -z "${zerovar}" ]; then echo "zerovar is empty" else echo "zerovar is not empty" fi if [ "${zerovar}" =3D "0" ]; then echo "zerovar equals 0" else echo "zerovar does not equal 0" fi echo 'testing "-z ${nullvar}"' if [ -z ${nullvar} ]; then echo true else echo false fi echo 'testing "-n ${nullvar}"' if [ -n ${nullvar} ]; then echo true else echo false fi ---<cut>--- --=20 Any statement of the form "X is the one, true Y" is FALSE. PGP fingerprint 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4 --kXdP64Ggrk/fb43R Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQFEiP98XY6L6fI4GtQRAkBeAJ9bwclBhsdDi7I+HgLTGgW5kccVrQCeNXFs XYnVbMV4H7YvU1Ij2yH+jSo= =8Gns -----END PGP SIGNATURE----- --kXdP64Ggrk/fb43R--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060609045628.GB25288>