Return-Path: X-Original-To: apmail-subversion-dev-archive@minotaur.apache.org Delivered-To: apmail-subversion-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 305B8180F2 for ; Mon, 20 Jul 2015 14:41:11 +0000 (UTC) Received: (qmail 58654 invoked by uid 500); 20 Jul 2015 14:41:11 -0000 Delivered-To: apmail-subversion-dev-archive@subversion.apache.org Received: (qmail 58605 invoked by uid 500); 20 Jul 2015 14:41:11 -0000 Mailing-List: contact dev-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@subversion.apache.org Received: (qmail 58594 invoked by uid 99); 20 Jul 2015 14:41:10 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 20 Jul 2015 14:41:10 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 4D944189BA1 for ; Mon, 20 Jul 2015 14:41:10 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.7 X-Spam-Level: X-Spam-Status: No, score=0.7 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, KAM_ASCII_DIVIDERS=0.8, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=btopenworld.com Received: from mx1-us-east.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id uINjSmxiGSlr for ; Mon, 20 Jul 2015 14:41:03 +0000 (UTC) Received: from rgout0502.bt.lon5.cpcloud.co.uk (rgout0502.bt.lon5.cpcloud.co.uk [65.20.0.223]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with ESMTP id E2FEC43DF5 for ; Mon, 20 Jul 2015 14:41:02 +0000 (UTC) X-OWM-Source-IP: 209.85.212.179(US) X-OWM-Env-Sender: julianfoad@btinternet.com X-CTCH-RefID: str=0001.0A090202.55AD07BA.0097,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0 X-Junkmail-Premium-Raw: score=8/50,refid=2.7.2:2015.7.20.121216:17:8.129,ip=209.85.212.179,rules=__PHISH_SPEAR_HTTP_RECEIVED, __YOUTUBE_RCVD, __MIME_VERSION, __IN_REP_TO, __REFERENCES, __HAS_FROM, __HAS_MSGID, __SANE_MSGID, __BOUNCE_CHALLENGE_SUBJ, __BOUNCE_NDR_SUBJ_EXEMPT, __SUBJ_ALPHA_END, __TO_MALFORMED_2, __CT, __CTYPE_HAS_BOUNDARY, __CTYPE_MULTIPART, CTYPE_MULTIPART_NO_QUOTE, __CTYPE_MULTIPART_MIXED, __HELO_GMAIL, __ANY_URI, __URI_NO_WWW, __URI_NO_PATH, __SUBJ_ALPHA_NEGATE, __FORWARDED_MSG, BODYTEXTP_SIZE_3000_LESS, __MIME_TEXT_ONLY, __RDNS_GMAIL, __URI_NS, HTML_00_01, HTML_00_10, WEBMAIL_SOURCE, __PHISH_SPEAR_STRUCTURE_1, REFERENCES, NO_URI_HTTPS, MIME_TEXT_ONLY_MP_MIXED, __DQ_NEG_IP, __DQ_NEG_HEUR X-CTCH-Spam: Unknown Received: from mail-wi0-f179.google.com (209.85.212.179) by rgout05.bt.lon5.cpcloud.co.uk (8.6.122.06) (authenticated as julianfoad@btopenworld.com) id 55A2600D00DAFDF7 for dev@subversion.apache.org; Mon, 20 Jul 2015 15:37:42 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btopenworld.com; s=btcpcloud; t=1437403259; bh=Nd5BtdIxt6pimocRJFUiCjO6niW30hLuQ8PjZjTOXI0=; h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject:To; b=aL1HUUpLnK/NYfD/8ecXL8XzVsrzlKvoOXH2SRAxPLqWws3urE1tGaNmoOIbSBiZ7V57Jiv3LESpLTV5sPZfdgByFM6uAhae+gLyvDQAHGjBaKXi70gJS9Rgu5wNqe8fNpWG0pHArHnQzSJKkVns6sEQvlrI8qXcZerPHaIZMyk= Received: by wibxm9 with SMTP id xm9so93730541wib.0 for ; Mon, 20 Jul 2015 07:37:46 -0700 (PDT) X-Received: by 10.181.27.131 with SMTP id jg3mr21224827wid.89.1437403066026; Mon, 20 Jul 2015 07:37:46 -0700 (PDT) MIME-Version: 1.0 Received: by 10.194.33.230 with HTTP; Mon, 20 Jul 2015 07:37:26 -0700 (PDT) In-Reply-To: References: From: Julian Foad Date: Mon, 20 Jul 2015 15:37:26 +0100 Message-ID: Subject: Re: [Issue 4584] New - Non-canonical $HOME crashes GPG-agent support code To: dev Content-Type: multipart/mixed; boundary=001a1134804e266788051b4f7b8b --001a1134804e266788051b4f7b8b Content-Type: text/plain; charset=UTF-8 Bert said on IRC: "julianf: I would recommend fixing the api implementation (to follow our common rule: all passed paths are canonical, unless documented otherwise) and just backporting the fix." The minimal fix is committed to trunk in r1691928. Note that this fixes the *only* caller that exists so far that didn't canonicalize the resulting path. A better fix, but one less suitable for back-porting, is committed in r1691952. That makes svn_user_get_homedir() always return a canonical path. I tried writing a unit test for it, and came up with the attached 'test_svn_user_get_homedir.patch'. I don't like it much: it messes with the 'HOME' variable in the process's environment, and although it makes some attempt to avoid parallel execution and tries to reset the variable afterwards, it doesn't do so in all cases. Notably it errors out if the 'HOME' env var is unset to start with. Do we want a unit test something like this, and if so how should I make it more Good? I still intend to nominate the minimal fix r1691928 for backport to 1.8.x and 1.9.x. - Julian On 20 July 2015 at 14:05, Julian Foad wrote: > I (Julian Foad) wrote: >> I have a one-line fix for this issue, which I've tested by hand: >> [...] >> I don't have an automated regression test. Should I go ahead and commit >> the fix anyway, and propose for backport to 1.8 and 1.9? > > Of course, we would like to have a regression test. Can anyone help > me write one? I took a quick look in > subversion/tests/libsvn_subr/auth-test.c for inspiration and am a bit > lost where to start at that level. > > If we go for a 'proper' fix, we could write a unit test for > svn_user_get_homedir(), which would be much easier than a regression > test for the authentication scenario with GPG-agent. > > - Julian --001a1134804e266788051b4f7b8b Content-Type: text/x-diff; charset=US-ASCII; name="test_svn_user_get_homedir.patch" Content-Disposition: attachment; filename="test_svn_user_get_homedir.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_icc0fziv0 QWRkIGEgdW5pdCB0ZXN0IGZvciBzdm5fdXNlcl9nZXRfaG9tZWRpcigpLgoKKiBidWlsZC5jb25m CiAgKHVzZXItdGVzdCk6IE5ldyBzZWN0aW9uLgoKKiBzdWJ2ZXJzaW9uL3Rlc3RzL2xpYnN2bl9z dWJyL3VzZXItdGVzdC5jCiAgTmV3IGZpbGUuCi0tVGhpcyBsaW5lLCBhbmQgdGhvc2UgYmVsb3cs IHdpbGwgYmUgaWdub3JlZC0tCgpJbmRleDogYnVpbGQuY29uZgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBidWls ZC5jb25mCShyZXZpc2lvbiAxNjkxOTUyKQorKysgYnVpbGQuY29uZgkod29ya2luZyBjb3B5KQpA QCAtMTExMywxMiArMTExMywyMCBAQCBkZXNjcmlwdGlvbiA9IFRlc3QgdGltZSBmdW5jdGlvbnMK IHR5cGUgPSBleGUKIHBhdGggPSBzdWJ2ZXJzaW9uL3Rlc3RzL2xpYnN2bl9zdWJyCiBzb3VyY2Vz ID0gdGltZS10ZXN0LmMKIGluc3RhbGwgPSB0ZXN0CiBsaWJzID0gbGlic3ZuX3Rlc3QgbGlic3Zu X3N1YnIgYXByaWNvbnYgYXByCiAKK1t1c2VyLXRlc3RdCitkZXNjcmlwdGlvbiA9IFRlc3QgdXNl ciBmdW5jdGlvbnMKK3R5cGUgPSBleGUKK3BhdGggPSBzdWJ2ZXJzaW9uL3Rlc3RzL2xpYnN2bl9z dWJyCitzb3VyY2VzID0gdXNlci10ZXN0LmMKK2luc3RhbGwgPSB0ZXN0CitsaWJzID0gbGlic3Zu X3Rlc3QgbGlic3ZuX3N1YnIgYXByaWNvbnYgYXByCisKIFt1dGYtdGVzdF0KIGRlc2NyaXB0aW9u ID0gVGVzdCBVVEYtOCBmdW5jdGlvbnMKIHR5cGUgPSBleGUKIHBhdGggPSBzdWJ2ZXJzaW9uL3Rl c3RzL2xpYnN2bl9zdWJyCiBzb3VyY2VzID0gdXRmLXRlc3QuYwogaW5zdGFsbCA9IHRlc3QKSW5k ZXg6IHN1YnZlcnNpb24vdGVzdHMvbGlic3ZuX3N1YnIvdXNlci10ZXN0LmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gc3VidmVyc2lvbi90ZXN0cy9saWJzdm5fc3Vici91c2VyLXRlc3QuYwkobm9uZXhpc3RlbnQp CisrKyBzdWJ2ZXJzaW9uL3Rlc3RzL2xpYnN2bl9zdWJyL3VzZXItdGVzdC5jCSh3b3JraW5nIGNv cHkpCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiB1c2VyLXRlc3QuYyAtLSB0ZXN0IHRoZSB1c2Vy IGZ1bmN0aW9ucworICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAgICBMaWNlbnNlZCB0byB0aGUgQXBh Y2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiAgICBvciBtb3JlIGNv bnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqICAg IGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisg KiAgICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhp cyBmaWxlCisgKiAgICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu MCAodGhlCisgKiAgICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw dCBpbiBjb21wbGlhbmNlCisgKiAgICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4g YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5v cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiAgICBzb2Z0d2FyZSBkaXN0 cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogICAgIkFT IElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiAg ICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0 aGUKKyAqICAgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGlt aXRhdGlvbnMKKyAqICAgIHVuZGVyIHRoZSBMaWNlbnNlLgorICogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLwor CisjaW5jbHVkZSA8YXByX2Vudi5oPgorCisjaW5jbHVkZSAiLi4vc3ZuX3Rlc3QuaCIKKyNpbmNs dWRlICJzdm5fdXNlci5oIgorI2luY2x1ZGUgInN2bl9wb29scy5oIgorCisKKyNkZWZpbmUgQVBS X0VSUihzdGF0dXNfZXhwcikgXAorICBkbyB7IGFwcl9zdGF0dXNfdCBfYXByX2VyciA9IChzdGF0 dXNfZXhwcik7IFwKKyAgICBpZiAoX2Fwcl9lcnIgIT0gQVBSX1NVQ0NFU1MpIFwKKyAgICAgIHJl dHVybiBzdm5fZXJyb3Jfd3JhcF9hcHIoX2Fwcl9lcnIsIE5VTEwpOyBcCisgIH0gd2hpbGUgKDAp CisKKworLyogVmFsdWVzIHRvIHVzZSBpbiB0ZXN0X3N2bl91c2VyX2dldF9ob21lZGlyKCkuICov CisjaWZkZWYgV0lOMzIKKyNkZWZpbmUgSE9NRV9OT05fQ0FOT05JQ0FMICJDOlxcdXNlclxcIgor I2RlZmluZSBIT01FX0NBTk9OSUNBTElaRUQgIkM6XFx1c2VyIgorI2Vsc2UKKyNkZWZpbmUgSE9N RV9OT05fQ0FOT05JQ0FMICIvdXNlci8iCisjZGVmaW5lIEhPTUVfQ0FOT05JQ0FMSVpFRCAiL3Vz ZXIiCisjZW5kaWYKKworc3RhdGljIHN2bl9lcnJvcl90ICoKK3Rlc3Rfc3ZuX3VzZXJfZ2V0X2hv bWVkaXIoYXByX3Bvb2xfdCAqcG9vbCkKK3sKKyAgY2hhciAqb2xkX2hvbWU7CisgIGNvbnN0IGNo YXIgKmhvbWVkaXI7CisKKyAgLyogU2F2ZSB0aGUgdmFsdWUgb2YgSE9NRSBzbyB3ZSBjYW4gcmVz dG9yZSBpdCBhdCB0aGUgZW5kLgorICAgKiAjIyMgVGhpcyB3b24ndCBzYXZlIGFuZCByZXN0b3Jl IGl0IGNvcnJlY3RseSBpZiBpdCB3YXMgdW5kZWZpbmVkLiAqLworICBBUFJfRVJSKGFwcl9lbnZf Z2V0KCZvbGRfaG9tZSwgIkhPTUUiLCBwb29sKSk7CisKKyAgLyogVGVzdCBnZXR0aW5nIHRoZSBo b21lIGRpcmVjdG9yeSBmcm9tIEhPTUUgKi8KKyAgQVBSX0VSUihhcHJfZW52X3NldCgiSE9NRSIs IEhPTUVfTk9OX0NBTk9OSUNBTCwgcG9vbCkpOworICBob21lZGlyID0gc3ZuX3VzZXJfZ2V0X2hv bWVkaXIocG9vbCk7CisgIGlmICghIGhvbWVkaXIpCisgICAgcmV0dXJuIHN2bl9lcnJvcl9jcmVh dGVmKFNWTl9FUlJfVEVTVF9GQUlMRUQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJzdm5fdXNlcl9nZXRfaG9tZWRpcigpIHJldHVybmVkIE5VTEwgd2hlbiBIT01FIGRlZmlu ZWQiKTsKKyAgU1ZOX1RFU1RfQVNTRVJUKHN2bl9kaXJlbnRfaXNfY2Fub25pY2FsKGhvbWVkaXIs IHBvb2wpKTsKKyAgU1ZOX1RFU1RfU1RSSU5HX0FTU0VSVChob21lZGlyLCBIT01FX0NBTk9OSUNB TElaRUQpOworCisgIC8qIFRlc3QgZ2V0dGluZyB0aGUgaG9tZSBkaXJlY3Rvcnkgd2hlbiBIT01F IGlzIHVuZGVmaW5lZCAqLworICBBUFJfRVJSKGFwcl9lbnZfZGVsZXRlKCJIT01FIiwgcG9vbCkp OworICBob21lZGlyID0gc3ZuX3VzZXJfZ2V0X2hvbWVkaXIocG9vbCk7CisgIGlmICghIGhvbWVk aXIpCisgICAgcmV0dXJuIHN2bl9lcnJvcl9jcmVhdGVmKFNWTl9FUlJfVEVTVF9GQUlMRUQsIE5V TEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdm5fdXNlcl9nZXRfaG9tZWRpcigp IHJldHVybmVkIE5VTEwgd2hlbiBIT01FIHVuZGVmaW5lZCIpOworICBTVk5fVEVTVF9BU1NFUlQo c3ZuX2RpcmVudF9pc19jYW5vbmljYWwoaG9tZWRpciwgcG9vbCkpOworICBwcmludGYoIiVzXG4i LCBob21lZGlyKTsKKworICAvKiBSZXN0b3JlIHRoZSBvcmlnaW5hbCB2YWx1ZSBzbyB0aGlzIHRl c3Qgd29uJ3QgYWZmZWN0IHN1YnNlcXVlbnQgdGVzdHMgKi8KKyAgQVBSX0VSUihhcHJfZW52X3Nl dCgiSE9NRSIsIG9sZF9ob21lLCBwb29sKSk7CisgIHJldHVybiBTVk5fTk9fRVJST1I7Cit9CisK KworDAorLyogVGhlIHRlc3QgdGFibGUuICAqLworCitzdGF0aWMgaW50IG1heF90aHJlYWRzID0g MTsKKworc3RhdGljIHN0cnVjdCBzdm5fdGVzdF9kZXNjcmlwdG9yX3QgdGVzdF9mdW5jc1tdID0K KyAgeworICAgIFNWTl9URVNUX05VTEwsCisgICAgU1ZOX1RFU1RfUEFTUzIodGVzdF9zdm5fdXNl cl9nZXRfaG9tZWRpciwKKyAgICAgICAgICAgICAgICAgICAidGVzdCBzdm5fdXNlcl9nZXRfaG9t ZWRpciIpLAorICAgIFNWTl9URVNUX05VTEwKKyAgfTsKKworU1ZOX1RFU1RfTUFJTgoKUHJvcGVy dHkgY2hhbmdlcyBvbjogc3VidmVyc2lvbi90ZXN0cy9saWJzdm5fc3Vici91c2VyLXRlc3QuYwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cg== --001a1134804e266788051b4f7b8b--