=================================================================== RCS file: /cvs/mandoc/man.cgi.8,v retrieving revision 1.7 retrieving revision 1.11 diff -u -p -r1.7 -r1.11 --- mandoc/man.cgi.8 2014/07/18 19:03:39 1.7 +++ mandoc/man.cgi.8 2014/09/14 19:44:28 1.11 @@ -1,4 +1,4 @@ -.\" $Id: man.cgi.8,v 1.7 2014/07/18 19:03:39 schwarze Exp $ +.\" $Id: man.cgi.8,v 1.11 2014/09/14 19:44:28 schwarze Exp $ .\" .\" Copyright (c) 2014 Ingo Schwarze .\" @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: July 18 2014 $ +.Dd $Mdocdate: September 14 2014 $ .Dt MAN.CGI 8 .Os .Sh NAME @@ -43,6 +43,12 @@ either a name of a manual page or an using the syntax described in the .Xr apropos 1 manual; filling this in is required for each search. +.Pp +The expression is broken into words at whitespace. +Whitespace characters and backslashes can be escaped +by prepending a backslash. +The effect of prepending a backslash to another character is undefined; +in the current implementation, it has no effect. .It A .Dq Submit @@ -189,6 +195,11 @@ element. An ASCII string to be used for the HTML .Aq TITLE element. +.It Ev HTTP_HOST +The FQDN of the (possibly virtual) host the HTTP server is running on. +This is used for +.Ic Location: +headers in HTTP 303 responses. .It Ev MAN_DIR A path to the .Nm @@ -262,6 +273,34 @@ For backward compatibility with the traditional is supported as an alias for .Cm sec . .El +.Ss Restricted character set +For security reasons, in particular to prevent cross site scripting +attacks, some strings used by +.Nm +can only contain the following characters: +.Pp +.Bl -dash -compact -offset indent +.It +lower case and upper case ASCII letters +.It +the ten decimal digits +.It +the dash +.Pq Sq - +.It +the dot +.Pq Sq \&. +.It +the slash +.Pq Sq / +.It +the underscore +.Pq Sq _ +.El +.Pp +In particular, this applies to the +.Ev SCRIPT_NAME , +to all manpaths, and to all architecture names. .Sh ENVIRONMENT The web server may pass the following CGI variables to .Nm : @@ -274,7 +313,7 @@ and ending before the .Ev QUERY_STRING . It is used by the .Cm show -page to aquire the manpath and filename it needs. +page to acquire the manpath and filename it needs. .It Ev QUERY_STRING The HTTP query string passed from the client to the server. It is the final part of the URI, after the question mark. @@ -288,6 +327,10 @@ binary relative to the server root, usually .Pa /cgi-bin/man.cgi . This is used for generating URIs to be embedded in generated HTML code and HTTP headers. +If this contains any character not contained in the +.Sx Restricted character set , +.Nm +reports an internal server error and exits without doing anything. .El .Sh FILES .Bl -tag -width Ds @@ -327,6 +370,12 @@ Manual pages documenting itself, linked from the index page. .It Pa /man/manpath.conf The list of available manpaths, one per line. +If any of the lines in this file contains a slash +.Pq Sq / +or any character not contained in the +.Sx Restricted character set , +.Nm +reports an internal server error and exits without doing anything. .It Pa /man/OpenBSD-current/man1/mandoc.1 An example .Xr mdoc 7