From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7721 invoked by alias); 24 Jan 2015 19:09:21 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 34371 Received: (qmail 4846 invoked from network); 24 Jan 2015 19:09:19 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=YJ/KclaeshrGzr7qc0J9l5EhNAvsQplblvhi18PPgng=; b=vXUbKQ+I9NNiQKdYhauM9Kqdp/Lam/8dttDsy8ct+7L2o0Zif6ixJsvTsomT6shf6M fllgneqCRKeqi/wLaEKXFW3a0lmaCTfSHJ2gRImULGqUNktFz0bpJ49oPT6hBvta26/i xfUMzMn9c03JDNzO3fOEvqnx0oe5BgrrdzLQvXmhzbxhdaPMj0cSf8UMuiUOsjg0dOD4 FlpQ9PLVNN7rP9mqB7qeV4oB6G/ddb7opzKQgeHpFQO5Jw7e4Fi8yE0y+aMibtmXN4aC YW2rqHMXoqBVeL/UVs+t31lVW4Yme5+kyZSDyodaczN02Dlg8/pH+vemf69FmkLcv45d 3I8A== MIME-Version: 1.0 X-Received: by 10.50.79.196 with SMTP id l4mr8572383igx.14.1422126554098; Sat, 24 Jan 2015 11:09:14 -0800 (PST) In-Reply-To: <20150120203436.4bf346a4@ntlworld.com> References: <1874234.7FAblKt7ne@kdudka.brq.redhat.com> <150120102810.ZM28542@torch.brasslantern.com> <20150120203436.4bf346a4@ntlworld.com> Date: Sat, 24 Jan 2015 20:09:14 +0100 Message-ID: Subject: Re: 'cd' built-in crashed zsh on a broken file system From: Mikael Magnusson To: Peter Stephenson Cc: zsh workers Content-Type: text/plain; charset=UTF-8 On Tue, Jan 20, 2015 at 9:34 PM, Peter Stephenson wrote: > > How about this? > > diff --git a/Src/utils.c b/Src/utils.c > index 4561b5e..cf18f12 100644 > --- a/Src/utils.c > +++ b/Src/utils.c > @@ -1108,10 +1108,13 @@ getnameddir(char *name) > if ((pw = getpwnam(name))) { > char *dir = isset(CHASELINKS) ? xsymlink(pw->pw_dir) > : ztrdup(pw->pw_dir); > - adduserdir(name, dir, ND_USERNAME, 1); > - str = dupstring(dir); > - zsfree(dir); > - return str; > + if (dir) { > + adduserdir(name, dir, ND_USERNAME, 1); > + str = dupstring(dir); > + zsfree(dir); > + return str; > + } else > + return ztrdup(pw->pw_dir); This ztrdup triggered a couple of errors in valgrind. Since everything else returned from getnameddir seems to be heap allocated, should this be dupstring instead? -- Mikael Magnusson