From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 11F733858C60 for ; Fri, 27 Aug 2021 15:31:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 11F733858C60 Received: from mail-io1-f72.google.com (mail-io1-f72.google.com [209.85.166.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-555-BkFtqiHyMhG04jgo5o71ZQ-1; Fri, 27 Aug 2021 11:30:59 -0400 X-MC-Unique: BkFtqiHyMhG04jgo5o71ZQ-1 Received: by mail-io1-f72.google.com with SMTP id i78-20020a6b3b51000000b005b8dd0f9e76so4218656ioa.9 for ; Fri, 27 Aug 2021 08:30:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ozUQScHycNo/wKSrWuMwahSeTw18oVf112xVJueeio0=; b=ZZfHvPHtjWvbWJMtgCYT/m078Yd0dL5ZKqZMpSIaq2LmIVFY3M8tBr+tSTk6mnT5Jw 2AUNv8WnHZkM5egErS5CNJNgBbCtCzEHnzOkmcREnji2iPJMcFp4+HKx6M5JvWFeCMF+ cm01ySpqHgJ4PpmuTkmPf9jPg0Bv9G9BnzuW5aPPN18Z7xLq9G1/tpYX2v5T37jbf4EM Spxs9QEhNbYl0aCRb1qxU/0OtP5XArl0FvJsrT+keYKA4WIW04W59JLKOk8Il7E87ure hg0xnYo6WntM/GCewmhSZqCM1C1IKD6cSUYM/6pC6CxllfFGZxmZ9EorCDnqsYdgfoT/ o+uw== X-Gm-Message-State: AOAM533gj5FhwnwDBDqBEUDPlhLYXl5Yx2G6J/QluyL8tEuXNIX+Bv/O 2jh1y9FJhqTIvzdMPVDEU7RYOZovtoOQ9LUnKTu7tzKzZ+gvLlxnRR0VNyC0XEvr2734BcllFLH 1h+fgtte7+efrzOO4x3yggfVqRIF1LtmsI2W+cx4S5w== X-Received: by 2002:a6b:8d15:: with SMTP id p21mr7872692iod.194.1630078259169; Fri, 27 Aug 2021 08:30:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz5Xu+WHb3ldrSrNFDtZecvVxsIwg/waP/Fo1X/GEoDw5Nuued8ZCa9EfBVryV621/2OyUwjRl8siJZDHXjHCI= X-Received: by 2002:a6b:8d15:: with SMTP id p21mr7872675iod.194.1630078258935; Fri, 27 Aug 2021 08:30:58 -0700 (PDT) MIME-Version: 1.0 References: <20210826210213.GM416@redhat.com> In-Reply-To: From: Noah Sanci Date: Fri, 27 Aug 2021 11:30:47 -0400 Message-ID: Subject: Re: [Bug debuginfod/28034] client-side %-escape url characters To: "Frank Ch. Eigler" Cc: elfutils-devel@sourceware.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="00000000000094ac0805ca8c2b17" X-Spam-Status: No, score=-14.4 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Aug 2021 15:31:12 -0000 --00000000000094ac0805ca8c2b17 Content-Type: text/plain; charset="UTF-8" Hello, Next update, removed redundant if statement. -Noah Sanci On Fri, Aug 27, 2021 at 11:07 AM Noah Sanci wrote: > > Hello > > Update 2, no longer append nulls unnecessarily. > > -Noah Sanci > > On Fri, Aug 27, 2021 at 10:44 AM Noah Sanci wrote: > > > > Hello, > > > > Here is an updated patch, using memmove. Much smaller. > > > > Thanks for the suggestions, > > > > Noah Sanci > > > > > > On Thu, Aug 26, 2021 at 5:02 PM Frank Ch. Eigler wrote: > > > > > > Hi - > > > > > > > /* PR28034 escape characters in completed url to %hh format. */ > > > > - char *escaped_string; > > > > - escaped_string = curl_easy_escape(data[i].handle, filename, 0); > > > > - if (!escaped_string) > > > > + char escaped_string[PATH_MAX] = {'\0'}; > > > > + char *loc = (char *) filename; > > > > + char *loc2; > > > > + char *tmp; > > > > + for(size_t j = 0; j < strlen(filename); ++j) > > > > { > > > > - rc = -ENOMEM; > > > > - goto out2; > > > > + loc2 = strstr(loc, "/"); > > > > + // If the first character is a '/' > > > > [...] > > > > > > Holy cow that's a lot of work to do it this way. > > > A couple of alternatives: > > > > > > - ditch curl_easy_escape :-( and use a > > > malloc(strlen(x)*3) > > > byte-by-byte copy from source string into destination > > > if not [a-zA-Z0-9/.~] then %-escape > > > > > > or: > > > - keep curl_easy_escape and postprocess > > > byte-by-byte examine the result of curl_easy_escape > > > - if seeing a "%2F", replace the % with a / and memmove the > > > rest of the string 2 bytes ahead > > > > > > It shouldn't need strtok or strstr or a lot of logic or stuff like > > > that really. > > > > > > - FChE > > > --00000000000094ac0805ca8c2b17 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-debuginfod-PR28034-client-side-escape-url-characters.patch" Content-Disposition: attachment; filename="0001-debuginfod-PR28034-client-side-escape-url-characters.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ksuigkis0 RnJvbSBhMjdjOWE4MjU0NmIwNDBmYmI4ZTUyNjMwMDNmZDhmYjMzZjFmMWUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIFNhbmNpIDxuc2FuY2lAcmVkaGF0LmNvbT4KRGF0ZTog RnJpLCAxNiBKdWwgMjAyMSAxNToxNjoyMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGRlYnVnaW5m b2Q6IFBSMjgwMzQgLSBjbGllbnQtc2lkZSAlLWVzY2FwZSB1cmwgY2hhcmFjdGVycwoKV2hlbiBy ZXF1ZXN0aW5nIHNvbWUgc291cmNlIGZpbGVzLCBzb21lIFVSTC1pbmNvbnZlbmllbnQgY2hhcnMK c29tZXRpbWVzIHBvcCB1cC4gIEV4YW1wbGUgZnJvbSBmMzMgbGlic3RkYysrOgovYnVpbGRpZC80 NGQ4NDg1Y2I3NTUxMmMyY2E1YzhmNzBhZmJkNDc1Y2FlMzBhZjRmL3NvdXJjZS91c3Ivc3JjL2Rl YnVnLwpnY2MtMTAuMy4xLTEuZmMzMy54ODZfNjQvb2JqLXg4Nl82NC1yZWRoYXQtbGludXgveDg2 XzY0LXJlZGhhdC1saW51eC8KbGlic3RkYysrLXYzL3NyYy9jKysxMS8uLi8uLi8uLi8uLi8uLi9s aWJzdGRjKystdjMvc3JjL2MrKzExLwpjb25kaXRpb25fdmFyaWFibGUuY2MKQXMgdGhpcyBVUkwg aXMgcGFzc2VkIGludG8gZGVidWdpbmZvZCdzIGhhbmRsZXJfY2IsIGl0IGFwcGVhcnMgdGhhdCB0 aGUKKyBzaWducyBhcmUgaGVscGZ1bGx5IHVuZXNjYXBlZCB0byBzcGFjZXMgYnkgbGlibWljcm9o dHRwZCwgd2hpY2gKJ2NvdXJzZSBicmVha3MgZXZlcnl0aGluZy4KSW4gb3JkZXIgdG8gZW5zdXJl IHRoZSBzZXJ2ZXIgcHJvcGVybHkgcGFyc2VzIHVybHMgc3VjaCBhcyB0aGlzIG9uZSwKJS1lc2Nh cGUgY2hhcmFjdGVycyBvbiB0aGUgY2xpZW50IHNpZGUgc28gdGhhdCB0aGUgY29ycmVjdCB1cmwK aXMgcHJlc2VydmVkIGFuZCBwcm9wZXJseSBwcm9jZXNzZWQgb24gdGhlIHNlcnZlciBzaWRlLgoK aHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjgwMzQKClNp Z25lZC1vZmYtYnk6IE5vYWggU2FuY2kgPG5zYW5jaUByZWRoYXQuY29tPgotLS0KIGRlYnVnaW5m b2QvZGVidWdpbmZvZC1jbGllbnQuYyB8IDEwICsrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA5 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kZWJ1Z2luZm9kL2Rl YnVnaW5mb2QtY2xpZW50LmMgYi9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QtY2xpZW50LmMKaW5kZXgg N2Q0YjIyMGYuLjczOTYwNDI0IDEwMDY0NAotLS0gYS9kZWJ1Z2luZm9kL2RlYnVnaW5mb2QtY2xp ZW50LmMKKysrIGIvZGVidWdpbmZvZC9kZWJ1Z2luZm9kLWNsaWVudC5jCkBAIC05MDYsMTIgKzkw NiwyMCBAQCBkZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlciAoZGVidWdpbmZvZF9jbGllbnQgKmMsCiAg ICAgICAgICAgLyogUFIyODAzNCBlc2NhcGUgY2hhcmFjdGVycyBpbiBjb21wbGV0ZWQgdXJsIHRv ICVoaCBmb3JtYXQuICovCiAgICAgICAgICAgY2hhciAqZXNjYXBlZF9zdHJpbmc7CiAgICAgICAg ICAgZXNjYXBlZF9zdHJpbmcgPSBjdXJsX2Vhc3lfZXNjYXBlKGRhdGFbaV0uaGFuZGxlLCBmaWxl bmFtZSwgMCk7CisgICAgICAgICAgY2hhciAqbG9jID0gZXNjYXBlZF9zdHJpbmc7CiAgICAgICAg ICAgaWYgKCFlc2NhcGVkX3N0cmluZykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgcmMg PSAtRU5PTUVNOwogICAgICAgICAgICAgICBnb3RvIG91dDI7CiAgICAgICAgICAgICB9Ci0gICAg ICAgICAgc25wcmludGYoZGF0YVtpXS51cmwsIFBBVEhfTUFYLCAiJXMvJXMvJXMvJXMiLCBzZXJ2 ZXJfdXJsLAorCisgICAgICAgICAgd2hpbGUoIChsb2MgPSBzdHJzdHIobG9jLCAiJTJGIikpICkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2NbMF0gPSAnLyc7CisgICAgICAgICAg ICAgICAgLy8gcHVsbCB0aGUgc3RyaW5nIGJhY2sgYWZ0ZXIgcmVwbGFjZW1lbnQKKyAgICAgICAg ICAgICAgICBtZW1tb3ZlKGxvYysxLGxvYyszLHN0cmxlbihsb2MrMykrMSk7CisgICAgICAgICAg ICB9CisgICAgICAgICAgc25wcmludGYoZGF0YVtpXS51cmwsIFBBVEhfTUFYLCAiJXMvJXMvJXMl cyIsIHNlcnZlcl91cmwsCiAgICAgICAgICAgICAgICAgICAgYnVpbGRfaWRfYnl0ZXMsIHR5cGUs IGVzY2FwZWRfc3RyaW5nKTsKICAgICAgICAgICBjdXJsX2ZyZWUoZXNjYXBlZF9zdHJpbmcpOwog ICAgICAgICB9Ci0tIAoyLjMxLjEKCg== --00000000000094ac0805ca8c2b17--