From aa87f85d4a12d4bcf712cb90bd84bf538a52892d Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Fri, 15 May 2026 12:58:12 +0200 Subject: [PATCH] Fix man module opts URL escaping --- man/search.cgi | 5 +++-- man/view_man.cgi | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/man/search.cgi b/man/search.cgi index 1beb907be..de9c910ea 100755 --- a/man/search.cgi +++ b/man/search.cgi @@ -213,8 +213,9 @@ if ($section{'man'}) { next if (!$all && $in{'and'} || !$any); push(@rv, [ $text{'search_man'}, - "view_man.cgi?page=$pp[0]&sec=$3&opts=". - $opts{'man'}, "$pp[0] ($sect)", + "view_man.cgi?page=".&urlize($pp[0]). + "&sec=".&urlize($sect)."&opts=". + &urlize($opts{'man'}), "$pp[0] ($sect)", &html_escape($desc), $exact ? 4 : 3 ]); } diff --git a/man/view_man.cgi b/man/view_man.cgi index 8e6809d11..84b4c03b4 100755 --- a/man/view_man.cgi +++ b/man/view_man.cgi @@ -69,10 +69,12 @@ else { $cmd = "cat"; } $qout = quotemeta($out); + $uopts = &urlize($in{'opts'}); $manout = &backquote_command("$config{'man2html_path'} -v 2>&1", 1); if ($manout =~ /Version:\s+([0-9\.]+)/i && $1 >= 3) { # New version uses a different syntax! - $cmd .= " $qout | nroff -mman | $config{'man2html_path'} --cgiurl ".quotemeta("view_man.cgi?page=\\\${title}&sec=\\\${section}&opts=$in{'opts'}")." --bare"; + $cgiurl = "view_man.cgi?page=\${title}&sec=\${section}&opts=$uopts"; + $cmd .= " $qout | nroff -mman | $config{'man2html_path'} --cgiurl ".quotemeta($cgiurl)." --bare"; $out = &backquote_command("$cmd 2>&1", 1); } else { @@ -82,8 +84,7 @@ else { $out =~ s/^.*Content-type:.*\n//i; $out =~ s/http:\/\///ig; $out =~ s/\?/\?sec=/ig; - $eopts = &html_escape($in{'opts'}); - $out =~ s/\+/&opts=$eopts&page=/ig; + $out =~ s/\+/&opts=$uopts&page=/ig; $out =~ s/.*//isg; $out =~ s/<\/HTML>//ig; $out =~ s/<\/BODY>//ig;