git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: gitweb: using quotemeta

From
Jakub Narebski <jnareb@gmail.com>
Date
Oct 6, 2006, 12:38 UTC
Message-ID
<200610061438.50965.jnareb@gmail.com>
In-Reply-To
<7vven1syg0.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano wrote:
Show 29 quoted lines
> Jakub Narebski <jnareb@gmail.com> writes:
> 
>> But you forget that in HTTP headers, to be more exact in
>>       Content-Disposition: inline; filename="<filename>"
>> header, the quote '"' and end-of-line '\n' characters in <filename>
>> are treated specially. So you need to quote somehow at least those
>> two characters.
> 
> True, but untrue.  This is just a suggestion so we do not _have_
> to quote.  We only need to avoid spitting out dq and lf
> literally.  We could even just do something like the attached if
> we wanted to:
> 
>         s/[^ -~]+/?/g   ;# replace each sequence of bytes outside
>                          # ' ' to '~' range to a '?'
> 
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 44991b1..e7202ee 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -2651,7 +2651,7 @@ sub git_blob_plain {
>         # save as filename, even when no $file_name is given
>         my $save_as = "$hash";
>         if (defined $file_name) {
> -               $save_as = $file_name;
> +               ($save_as = $file_name) =~ s/[^ -~]+/?/g;
>         } elsif ($type =~ m/^text\//) {
>                 $save_as .= '.txt';
>         }

I'd rather add (and use) separate subroutine for quoting/escaping values in HTTP headers, or to be more exact for the filename part of HTTP header "Content-Disposition:". This way if we decide to not replace all characters outside US-ASCII in suggested filename to save with '?', but only qoublequote '"' and linefeed '\n' characters, or even implement RFC 2047 to do the encoding (of course if browsers can read it), we could do this in one place.

How such a subroutine should be named? esc_http? esc_header or esc_hdr? esc_http_header? Any other ideas?

-- 
Jakub Narebski
Poland
Previous: Junio C HamanoNext: Junio C Hamano
Message 8 of 14 in “gitweb: using quotemeta”
  1. Luben TuikovSep 28, 2006
  2. Junio C HamanoSep 28, 2006
  3. Luben TuikovSep 28, 2006
  4. Jakub NarebskiOct 2, 2006
  5. Luben TuikovOct 2, 2006
  6. Jakub NarebskiOct 2, 2006
  7. Junio C HamanoOct 3, 2006
  8. Jakub NarebskiOct 6, 2006
  9. Junio C HamanoOct 7, 2006
  10. Jakub NarebskiOct 7, 2006
  11. Luben TuikovOct 7, 2006
  12. Jakub NarebskiOct 11, 2006
  13. Petr BaudisOct 6, 2006
  14. Luben TuikovOct 6, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.