Return-Path: X-Original-To: apmail-apr-dev-archive@www.apache.org Delivered-To: apmail-apr-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2C362106AD for ; Wed, 2 Oct 2013 23:52:03 +0000 (UTC) Received: (qmail 37489 invoked by uid 500); 2 Oct 2013 23:52:03 -0000 Delivered-To: apmail-apr-dev-archive@apr.apache.org Received: (qmail 37406 invoked by uid 500); 2 Oct 2013 23:52:02 -0000 Mailing-List: contact dev-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Id: Delivered-To: mailing list dev@apr.apache.org Received: (qmail 37394 invoked by uid 99); 2 Oct 2013 23:52:02 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 Oct 2013 23:52:02 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of trawick@gmail.com designates 209.85.215.53 as permitted sender) Received: from [209.85.215.53] (HELO mail-la0-f53.google.com) (209.85.215.53) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 Oct 2013 23:51:57 +0000 Received: by mail-la0-f53.google.com with SMTP id el20so1303525lab.12 for ; Wed, 02 Oct 2013 16:51:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=FGPLpGHgUNS+OCtxz5pgPdq5U20wyvuQzHwJa0n+6iw=; b=CE7TAHgm+Mc58FculNumluhPvxzKUNC4gLGloT7OWyziEumxOmnJ/GT7XtuvJ7Y7G1 gAcMM4RJ4xyx4QGSvP3NedI2dzcdIPn/6ZHjF3bkU7AQJ9dcxiiq20bijImvUmstfeRs 6VC3e/N5fEwMH0Dqj+A46t9e1Qme4XUP7e0MWcDpeL58crKcULdQtbMMIJdfkPTGNARP dZr2GLkpWCjrNwUHyeBotJxCl2Son6syj7ljRKYXY7zRayjYXtBhbkmT3uuQfNiysnf6 fHE8ltNm9P7GWl0L6tXvJKEmUfDHvz4WcWZoYZjIZwdwNwxkUYKJU/jmiLKKo8nzxmSJ 1gKw== MIME-Version: 1.0 X-Received: by 10.152.10.99 with SMTP id h3mr4172186lab.13.1380757895982; Wed, 02 Oct 2013 16:51:35 -0700 (PDT) Received: by 10.114.187.71 with HTTP; Wed, 2 Oct 2013 16:51:35 -0700 (PDT) Date: Wed, 2 Oct 2013 19:51:35 -0400 Message-ID: Subject: [PATCH] apr escape API, portability issues seen on Windows From: Jeff Trawick To: APR Developer List Content-Type: multipart/mixed; boundary=001a1132f26ae94cda04e7cabfd7 X-Virus-Checked: Checked by ClamAV on apache.org --001a1132f26ae94cda04e7cabfd7 Content-Type: multipart/alternative; boundary=001a1132f26ae94cd504e7cabfd5 --001a1132f26ae94cd504e7cabfd5 Content-Type: text/plain; charset=ISO-8859-1 I dug into the glitches seen on Windows... \e is a non-portable escape (GNU extension), and shell escaping treats \n differently on Windows and OS/2, which the testcase didn't account for. I guess the code that used \e doesn't match anything in httpd? -- Born in Roswell... married an alien... http://emptyhammock.com/ --001a1132f26ae94cd504e7cabfd5 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
I dug into the glitches seen on Windows... =A0 \e is a non= -portable escape (GNU extension), and shell escaping treats \n differently = on Windows and OS/2, which the testcase didn't account for.

I guess the code that used \e doesn't match anything in httpd?

--
Born in Roswell... married an alien...
http://emptyhammock.com/=
--001a1132f26ae94cd504e7cabfd5-- --001a1132f26ae94cda04e7cabfd7 Content-Type: text/plain; charset=US-ASCII; name="escape-e-is-gnu-extension.txt" Content-Disposition: attachment; filename="escape-e-is-gnu-extension.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hmb7g9mn0 SW5kZXg6IGVuY29kaW5nL2Fwcl9lc2NhcGUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGVuY29kaW5nL2Fw cl9lc2NhcGUuYwkocmV2aXNpb24gMTUyODY3MSkNCisrKyBlbmNvZGluZy9hcHJfZXNjYXBlLmMJ KHdvcmtpbmcgY29weSkNCkBAIC04NjIsMTEgKzg2Miw2IEBADQogICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSAxOwogICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1xlJzoK LSAgICAgICAgICAgICAgICAgICAgICAgICpkKysgPSAnZSc7Ci0gICAgICAgICAgICAgICAgICAg ICAgICBzaXplKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IDE7Ci0gICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSAnXGYnOgog ICAgICAgICAgICAgICAgICAgICAgICAgKmQrKyA9ICdmJzsKICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemUrKzsKQEAgLTkzMSw3ICs5MjYsNiBAQA0KICAgICAgICAgICAgICAgICAgICAgc3dp dGNoIChjKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1xhJzoKICAgICAgICAgICAgICAg ICAgICAgY2FzZSAnXGInOgotICAgICAgICAgICAgICAgICAgICBjYXNlICdcZSc6CiAgICAgICAg ICAgICAgICAgICAgIGNhc2UgJ1xmJzoKICAgICAgICAgICAgICAgICAgICAgY2FzZSAnXG4nOgog ICAgICAgICAgICAgICAgICAgICBjYXNlICdccic6CkluZGV4OiB0ZXN0L3Rlc3Rlc2NhcGUuYw0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KLS0tIHRlc3QvdGVzdGVzY2FwZS5jCShyZXZpc2lvbiAxNTI4NjcxKQ0KKysr IHRlc3QvdGVzdGVzY2FwZS5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMzQsMTUgKzM0LDMzIEBADQog CiAgICAgYXByX3Bvb2xfY3JlYXRlKCZwb29sLCBOVUxMKTsKIAorICAgIHNyYyA9ICJIZWxsbyBX b3JsZCAmO2AnXCJ8Kj9+PD5eKClbXXt9JFxcIjsKKyAgICB0YXJnZXQgPSAiSGVsbG8gV29ybGQg XFwmXFw7XFxgXFwnXFxcIlxcfFxcKlxcP1xcflxcPFxcPlxcXlxcKFxcKVxcW1xcXVxce1xcfVxc JFxcXFwiOworICAgIGRlc3QgPSBhcHJfcGVzY2FwZV9zaGVsbChwb29sLCBzcmMpOworICAgIEFC VFNfQVNTRVJUKHRjLAorICAgICAgICAgICAgICAgIGFwcl9wc3ByaW50Zihwb29sLCAic2hlbGwg ZXNjYXBlZCAoJXMpIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIG91dHB1dCAoJXMpIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgdGFyZ2V0KSwKKyAgICAgICAgICAgICAgICAo c3RyY21wKGRlc3QsIHRhcmdldCkgPT0gMCkpOworICAgIGFwcl9lc2NhcGVfc2hlbGwoTlVMTCwg c3JjLCBBUFJfRVNDQVBFX1NUUklORywgJmxlbik7CisgICAgQUJUU19BU1NFUlQodGMsCisgICAg ICAgICAgICBhcHJfcHNwcmludGYocG9vbCwgInNpemUgbWlzbWF0Y2ggKCUiIEFQUl9TSVpFX1Rf Rk1UICIhPSUiIEFQUl9TSVpFX1RfRk1UICIpIiwgbGVuLCBzdHJsZW4oZGVzdCkgKyAxKSwKKyAg ICAgICAgICAgIChsZW4gPT0gc3RybGVuKGRlc3QpICsgMSkpOworCisjaWYgIShkZWZpbmVkKE9T MikgfHwgZGVmaW5lZChXSU4zMikpCisgICAgLyogTm93IHRyeSB3aXRoIG5ld2xpbmUsIHdoaWNo IGlzIGNvbnZlcnRlZCB0byBhIHNwYWNlIG9uIE9TLzIgYW5kIFdpbmRvd3MuCisgICAgICovCiAg ICAgc3JjID0gIkhlbGxvIFdvcmxkICY7YCdcInwqP348Pl4oKVtde30kXFxcbiI7CiAgICAgdGFy Z2V0ID0gIkhlbGxvIFdvcmxkIFxcJlxcO1xcYFxcJ1xcXCJcXHxcXCpcXD9cXH5cXDxcXD5cXF5c XChcXClcXFtcXF1cXHtcXH1cXCRcXFxcXFxcbiI7CiAgICAgZGVzdCA9IGFwcl9wZXNjYXBlX3No ZWxsKHBvb2wsIHNyYyk7Ci0gICAgQUJUU19BU1NFUlQodGMsICJzaGVsbCBlc2NhcGVkIG1hdGNo ZXMgZXhwZWN0ZWQgb3V0cHV0IiwKKyAgICBBQlRTX0FTU0VSVCh0YywKKyAgICAgICAgICAgICAg ICBhcHJfcHNwcmludGYocG9vbCwgInNoZWxsIGVzY2FwZWQgKCVzKSBkb2VzIG5vdCBtYXRjaCBl eHBlY3RlZCBvdXRwdXQgKCVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Qs IHRhcmdldCksCiAgICAgICAgICAgICAgICAgKHN0cmNtcChkZXN0LCB0YXJnZXQpID09IDApKTsK ICAgICBhcHJfZXNjYXBlX3NoZWxsKE5VTEwsIHNyYywgQVBSX0VTQ0FQRV9TVFJJTkcsICZsZW4p OwogICAgIEFCVFNfQVNTRVJUKHRjLAogICAgICAgICAgICAgYXByX3BzcHJpbnRmKHBvb2wsICJz aXplIG1pc21hdGNoICglIiBBUFJfU0laRV9UX0ZNVCAiIT0lIiBBUFJfU0laRV9UX0ZNVCAiKSIs IGxlbiwgc3RybGVuKGRlc3QpICsgMSksCiAgICAgICAgICAgICAobGVuID09IHN0cmxlbihkZXN0 KSArIDEpKTsKKyNlbmRpZgogCiAgICAgc3JjID0gIkhlbGxvIjsKICAgICBkZXN0ID0gYXByX3B1 bmVzY2FwZV91cmwocG9vbCwgc3JjLCBOVUxMLCBOVUxMLCAwKTsKQEAgLTE5Niw4ICsyMTQsOCBA QA0KICAgICBkZXN0ID0gYXByX3Blc2NhcGVfZWNobyhwb29sLCBzcmMsIDApOwogICAgIEFCVFNf UFRSX0VRVUFMKHRjLCBzcmMsIGRlc3QpOwogCi0gICAgc3JjID0gIlxhXGJcZVxmXFxuXHJcdFx2 XCJIZWxsbyBXb3JsZFwiIjsKLSAgICB0YXJnZXQgPSAiXFxhXFxiXFxlXFxmXFxcXG5cXHJcXHRc XHZcIkhlbGxvIFdvcmxkXCIiOworICAgIHNyYyA9ICJcYVxiXGZcXG5cclx0XHZcIkhlbGxvIFdv cmxkXCIiOworICAgIHRhcmdldCA9ICJcXGFcXGJcXGZcXFxcblxcclxcdFxcdlwiSGVsbG8gV29y bGRcIiI7CiAgICAgZGVzdCA9IGFwcl9wZXNjYXBlX2VjaG8ocG9vbCwgc3JjLCAwKTsKICAgICBB QlRTX1NUUl9FUVVBTCh0YywgdGFyZ2V0LCBkZXN0KTsKICAgICBhcHJfZXNjYXBlX2VjaG8oTlVM TCwgc3JjLCBBUFJfRVNDQVBFX1NUUklORywgMCwgJmxlbik7CkBAIC0yMDUsOCArMjIzLDggQEAN CiAgICAgICAgICAgICBhcHJfcHNwcmludGYocG9vbCwgInNpemUgbWlzbWF0Y2ggKCUiIEFQUl9T SVpFX1RfRk1UICIhPSUiIEFQUl9TSVpFX1RfRk1UICIpIiwgbGVuLCBzdHJsZW4oZGVzdCkgKyAx KSwKICAgICAgICAgICAgIChsZW4gPT0gc3RybGVuKGRlc3QpICsgMSkpOwogCi0gICAgc3JjID0g IlxhXGJcZVxmXFxuXHJcdFx2XCJIZWxsbyBXb3JsZFwiIjsKLSAgICB0YXJnZXQgPSAiXFxhXFxi XFxlXFxmXFxcXG5cXHJcXHRcXHZcXFwiSGVsbG8gV29ybGRcXFwiIjsKKyAgICBzcmMgPSAiXGFc YlxmXFxuXHJcdFx2XCJIZWxsbyBXb3JsZFwiIjsKKyAgICB0YXJnZXQgPSAiXFxhXFxiXFxmXFxc XG5cXHJcXHRcXHZcXFwiSGVsbG8gV29ybGRcXFwiIjsKICAgICBkZXN0ID0gYXByX3Blc2NhcGVf ZWNobyhwb29sLCBzcmMsIDEpOwogICAgIEFCVFNfU1RSX0VRVUFMKHRjLCB0YXJnZXQsIGRlc3Qp OwogICAgIGFwcl9lc2NhcGVfZWNobyhOVUxMLCBzcmMsIEFQUl9FU0NBUEVfU1RSSU5HLCAxLCAm bGVuKTsK --001a1132f26ae94cda04e7cabfd7--