From owner-svn-src-all@FreeBSD.ORG Mon Jan 12 09:44:29 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3A686106567E for ; Mon, 12 Jan 2009 09:44:29 +0000 (UTC) (envelope-from christoph.mallon@gmx.de) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mx1.freebsd.org (Postfix) with SMTP id 7AFEB8FC13 for ; Mon, 12 Jan 2009 09:44:27 +0000 (UTC) (envelope-from christoph.mallon@gmx.de) Received: (qmail invoked by alias); 12 Jan 2009 09:44:26 -0000 Received: from p54A3E57E.dip.t-dialin.net (EHLO tron.homeunix.org) [84.163.229.126] by mail.gmx.net (mp027) with SMTP; 12 Jan 2009 10:44:26 +0100 X-Authenticated: #1673122 X-Provags-ID: V01U2FsdGVkX19AwuxRocBAenTPK2/Evp0Bt5lY5Ik/jEn+Ii+4Ej qiO5QWxZaRvfV+ Message-ID: <496B10F9.20201@gmx.de> Date: Mon, 12 Jan 2009 10:44:25 +0100 From: Christoph Mallon User-Agent: Thunderbird 2.0.0.19 (X11/20090103) MIME-Version: 1.0 To: obrien@freebsd.org References: <200812262254.mBQMsrbR052676@svn.freebsd.org> <4960FA9A.1090509@gmx.de> <20090111041543.GB17602@dragon.NUXI.org> <4969A626.6070908@gmx.de> <20090112082510.GA69194@dragon.NUXI.org> In-Reply-To: <20090112082510.GA69194@dragon.NUXI.org> Content-Type: multipart/mixed; boundary="------------050908040806000001080607" X-Y-GMX-Trusted: 0 X-FuHaFi: 0.51,0.46 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r186504 - head/sbin/mount X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jan 2009 09:44:30 -0000 This is a multi-part message in MIME format. --------------050908040806000001080607 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit David O'Brien schrieb: > On Sun, Jan 11, 2009 at 08:56:22AM +0100, Christoph Mallon wrote: >> David O'Brien schrieb: >>> On Sun, Jan 04, 2009 at 07:06:18PM +0100, Christoph Mallon wrote: >>>> I'm pretty sure $SUPERNATURAL_BEING_OF_YOUR_CHOICE killed a kitten for >>>> the ugly hack you added to mount. The moment you overflow a buffer, you >>>> are in no man's land and there's no escape. I appended a patch, which >>>> solves this issue once and for all: The argv array gets dynamically >>>> expanded, when its limit is reached. >>>> Please - for all kittens out there - commit this patch. >>> Hi Christoph, >>> Unfortunately your patch doesn't work. >>> For a 'ufs' file system listed in /etc/fstab >>> $ umount /foo >>> $ mount /foo >>> Does not work. >> Why haven't you told me earlier? > > Wow, wish I did have the gift to know something before I know something. > Especially tomorrow's lotto #'s. ;-) I sent you my patch almost a week before you commited your changes. I think, there was enough time to tell me, that my patch had a flaw. Alternatively I would have gladly reviewed your solution. >> It was a trivial glitch - just a missing >> "--mnt_argc;". I would've corrected it right away. I tested with a CD and >> this takes a different code path, which does not trigger the problem. >> Attached is the corrected patch. > > Actually this version doesn't work either. > Trying to mount root from ufs:/dev/ad4s1a > > .. > usage: mount [-t fstype] [-o options] target_fs mount_point > Mounting /etc/fstab filesystems failed, startup aborted > ERROR: ABORTING BOOT (sending SIGTERM to parent)! > > Your over use of global variables made my adult cat cry in pain. > Too bad you didn't at least follow the lead of what I committed. > > I've committed something in the spirit of your patches. I hope > that suits everyone. Actually this version doesn't work either. tron# ./mount -a usage: mount [-t fstype] [-o options] target_fs mount_point tron# ./mount -d -a mount -t ufs -o rw -o update /dev/ad0s1a / mount -t ufs ��`X (濿��`X /dev/ad0s1f /data (Sorry for the garbage, it actually printed that. You can turn it into a "clean" segfault by memset()ing mnt_argv just after its declaration) Your incorrect use of local variables and the resulting undefined behaviour made the cat, who visits me on a roof behind the house sometimes, almost fall from said roof, when he saw your commit: You expect the local variable "struct cpa mnt_argv" still to have the same values after mountfs() was left and reentered. Too bad you didn't at least follow the lead of what I proposed. I've attached a corrected version of my patch, which has a mnt_argc = 0; added in order to reset the argument vector on reentry of mountfs() (instead of appending to the arguments of the last round). --------------050908040806000001080607 Content-Type: text/plain; name="mount.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="mount.diff" SW5kZXg6IG1vdW50LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbW91bnQuYwkoUmV2aXNpb24gMTg3 MDkzKQorKysgbW91bnQuYwkoQXJiZWl0c2tvcGllKQpAQCAtNjcsMTggKzY3LDE2IEBACiAj ZGVmaW5lIE1PVU5UX01FVEFfT1BUSU9OX0NVUlJFTlQJImN1cnJlbnQiCiAKIGludCBkZWJ1 ZywgZnN0YWJfc3R5bGUsIHZlcmJvc2U7CitzdGF0aWMgY2hhciAqKm1udF9hcmd2Oworc3Rh dGljIGludCBtbnRfYXJndl9zaXplOworc3RhdGljIGludCBtbnRfYXJnYzsKIAotc3RydWN0 IGNwYSB7Ci0JY2hhcgkqKmE7Ci0JaW50CWM7Ci19OwotCiBjaGFyICAgKmNhdG9wdChjaGFy ICosIGNvbnN0IGNoYXIgKik7CiBzdHJ1Y3Qgc3RhdGZzICpnZXRtbnRwdChjb25zdCBjaGFy ICopOwogaW50CWhhc29wdChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiBpbnQJaXNt b3VudGVkKHN0cnVjdCBmc3RhYiAqLCBzdHJ1Y3Qgc3RhdGZzICosIGludCk7CiBpbnQJaXNy ZW1vdW50YWJsZShjb25zdCBjaGFyICopOwotdm9pZAltYW5nbGUoY2hhciAqLCBzdHJ1Y3Qg Y3BhICopOworc3RhdGljIHZvaWQJbWFuZ2xlKGNoYXIgKik7CiBjaGFyICAgKnVwZGF0ZV9v cHRpb25zKGNoYXIgKiwgY2hhciAqLCBpbnQpOwogaW50CW1vdW50ZnMoY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKIAkJCWludCwgY29uc3QgY2hhciAqLCBj b25zdCBjaGFyICopOwpAQCAtNTAxLDI4ICs0OTksMjQgQEAKIH0KIAogc3RhdGljIHZvaWQK LWFwcGVuZF9hcmcoc3RydWN0IGNwYSAqc2EsIGNoYXIgKmFyZykKK2FwcGVuZF9hcmd2KGNo YXIgKmFyZykKIHsKLQlzdGF0aWMgaW50IGFfc3o7Ci0KLQlpZiAoc2EtPmMgKyAxID09IGFf c3opIHsKLQkJYV9zeiA9IGFfc3ogPT0gMCA/IDggOiBhX3N6ICogMjsKLQkJc2EtPmEgPSBy ZWFsbG9jKHNhLT5hLCBzaXplb2Yoc2EtPmEpICogYV9zeik7Ci0JCWlmIChzYS0+YSA9PSBO VUxMKQorCWlmIChtbnRfYXJnYyA9PSBtbnRfYXJndl9zaXplKSB7CisJCW1udF9hcmd2X3Np emUgPSBtbnRfYXJndl9zaXplID09IDAgPyAxNiA6IG1udF9hcmd2X3NpemUgKiAyOworCQlt bnRfYXJndiA9IHJlYWxsb2MobW50X2FyZ3YsIHNpemVvZigqbW50X2FyZ3YpICogbW50X2Fy Z3Zfc2l6ZSk7CisJCWlmIChtbnRfYXJndiA9PSBOVUxMKQogCQkJZXJyeCgxLCAicmVhbGxv YyBmYWlsZWQiKTsKIAl9Ci0Jc2EtPmFbKytzYS0+Y10gPSBhcmc7CisJbW50X2FyZ3ZbbW50 X2FyZ2MrK10gPSBhcmc7CiB9CiAKIGludAogbW91bnRmcyhjb25zdCBjaGFyICp2ZnN0eXBl LCBjb25zdCBjaGFyICpzcGVjLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MsCiAJY29u c3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqbW50b3B0cykKIHsKLQlzdHJ1Y3QgY3Bh IG1udF9hcmd2OwogCXN0cnVjdCBzdGF0ZnMgc2Y7CiAJaW50IGksIHJldDsKIAljaGFyICpv cHRidWYsIGV4ZWNuYW1lW1BBVEhfTUFYXSwgbW50cGF0aFtQQVRIX01BWF07Ci0Jc3RhdGlj IGludCBtbnRfYXJndl9pbml0ZWQ7CiAKIAkvKiByZXNvbHZlIHRoZSBtb3VudHBvaW50IHdp dGggcmVhbHBhdGgoMykgKi8KIAkodm9pZCljaGVja3BhdGgobmFtZSwgbW50cGF0aCk7CkBA IC01NTcsMzIgKzU1MSwyOSBAQAogCS8qIENvbnN0cnVjdCB0aGUgbmFtZSBvZiB0aGUgYXBw cm9wcmlhdGUgbW91bnQgY29tbWFuZCAqLwogCSh2b2lkKXNucHJpbnRmKGV4ZWNuYW1lLCBz aXplb2YoZXhlY25hbWUpLCAibW91bnRfJXMiLCB2ZnN0eXBlKTsKIAotCWlmICghbW50X2Fy Z3ZfaW5pdGVkKSB7Ci0JCW1udF9hcmd2X2luaXRlZCsrOwotCQltbnRfYXJndi5hID0gTlVM TDsKLQl9Ci0JbW50X2FyZ3YuYyA9IC0xOwotCWFwcGVuZF9hcmcoJm1udF9hcmd2LCBleGVj bmFtZSk7Ci0JbWFuZ2xlKG9wdGJ1ZiwgJm1udF9hcmd2KTsKLQlhcHBlbmRfYXJnKCZtbnRf YXJndiwgc3RyZHVwKHNwZWMpKTsKLQlhcHBlbmRfYXJnKCZtbnRfYXJndiwgc3RyZHVwKG5h bWUpKTsKLQlhcHBlbmRfYXJnKCZtbnRfYXJndiwgTlVMTCk7CisJbW50X2FyZ2MgPSAwOyAv KiBSZXNldCBhcmd1bWVudCB2ZWN0b3IgKi8KKwlhcHBlbmRfYXJndihleGVjbmFtZSk7CisJ bWFuZ2xlKG9wdGJ1Zik7CisJYXBwZW5kX2FyZ3Yoc3RyZHVwKHNwZWMpKTsKKwlhcHBlbmRf YXJndihzdHJkdXAobmFtZSkpOworCWFwcGVuZF9hcmd2KE5VTEwpOworCS0tbW50X2FyZ2M7 IC8qIERvIG5vdCBjb3VudCB0aGUgdGVybWluYXRpbmcgbnVsbCBwb2ludGVyICovCiAKIAlp ZiAoZGVidWcpIHsKIAkJaWYgKHVzZV9tb3VudHByb2codmZzdHlwZSkpCiAJCQlwcmludGYo ImV4ZWM6IG1vdW50XyVzIiwgdmZzdHlwZSk7CiAJCWVsc2UKIAkJCXByaW50ZigibW91bnQg LXQgJXMiLCB2ZnN0eXBlKTsKLQkJZm9yIChpID0gMTsgaSA8IG1udF9hcmd2LmM7IGkrKykK LQkJCSh2b2lkKXByaW50ZigiICVzIiwgbW50X2FyZ3YuYVtpXSk7CisJCWZvciAoaSA9IDE7 IGkgPCBtbnRfYXJnYzsgaSsrKQorCQkJKHZvaWQpcHJpbnRmKCIgJXMiLCBtbnRfYXJndltp XSk7CiAJCSh2b2lkKXByaW50ZigiXG4iKTsKIAkJcmV0dXJuICgwKTsKIAl9CiAKIAlpZiAo dXNlX21vdW50cHJvZyh2ZnN0eXBlKSkgewotCQlyZXQgPSBleGVjX21vdW50cHJvZyhuYW1l LCBleGVjbmFtZSwgbW50X2FyZ3YuYSk7CisJCXJldCA9IGV4ZWNfbW91bnRwcm9nKG5hbWUs IGV4ZWNuYW1lLCBtbnRfYXJndik7CiAJfSBlbHNlIHsKLQkJcmV0ID0gbW91bnRfZnModmZz dHlwZSwgbW50X2FyZ3YuYywgbW50X2FyZ3YuYSk7CisJCXJldCA9IG1vdW50X2ZzKHZmc3R5 cGUsIG1udF9hcmdjLCBtbnRfYXJndik7CiAJfQogCiAJZnJlZShvcHRidWYpOwpAQCAtNjg0 LDggKzY3NSw4IEBACiAJcmV0dXJuIChjcCk7CiB9CiAKLXZvaWQKLW1hbmdsZShjaGFyICpv cHRpb25zLCBzdHJ1Y3QgY3BhICphKQorc3RhdGljIHZvaWQKK21hbmdsZShjaGFyICpvcHRp b25zKQogewogCWNoYXIgKnAsICpzOwogCkBAIC03MjAsMTUgKzcxMSwxNSBAQAogCQkJICAg IHNpemVvZihncm91cHF1b3RhZXEpIC0gMSkgPT0gMCkgewogCQkJCWNvbnRpbnVlOwogCQkJ fSBlbHNlIGlmICgqcCA9PSAnLScpIHsKLQkJCQlhcHBlbmRfYXJnKGEsIHApOworCQkJCWFw cGVuZF9hcmd2KHApOwogCQkJCXAgPSBzdHJjaHIocCwgJz0nKTsKIAkJCQlpZiAocCAhPSBO VUxMKSB7CiAJCQkJCSpwID0gJ1wwJzsKLQkJCQkJYXBwZW5kX2FyZyhhLCBwICsgMSk7CisJ CQkJCWFwcGVuZF9hcmd2KHAgKyAxKTsKIAkJCQl9CiAJCQl9IGVsc2UgewotCQkJCWFwcGVu ZF9hcmcoYSwgc3RyZHVwKCItbyIpKTsKLQkJCQlhcHBlbmRfYXJnKGEsIHApOworCQkJCWFw cGVuZF9hcmd2KHN0cmR1cCgiLW8iKSk7CisJCQkJYXBwZW5kX2FyZ3YocCk7CiAJCQl9CiAJ CX0KIH0K --------------050908040806000001080607--