String 空TCL字符串导致不可打印字符,导致项目打开崩溃

String 空TCL字符串导致不可打印字符,导致项目打开崩溃,string,tcl,openacs,project-open,aolserver,String,Tcl,Openacs,Project Open,Aolserver,我在ubuntu上安装了Project Open 只要tcl中有空字符串,HTML表单就会包含一个不可打印的字符 是什么导致了这个问题?Web服务器是openACS/AOLServer TCL代码:设置电子邮件“”(index.TCL) ADP代码:email=“@email@”(index.ADP) HTML输出:在某些版本的AOLserver(4.5.0到最后一次发布,但在cvs HEAD中已修复)中存在一个已知错误,该错误导致nsquotehTML在收到空字符串时返回无效数据。OpenAC

我在ubuntu上安装了Project Open

只要tcl中有空字符串,HTML表单就会包含一个不可打印的字符

是什么导致了这个问题?Web服务器是openACS/AOLServer

TCL代码:设置电子邮件“”(index.TCL)

ADP代码:email=“@email@”(index.ADP)


HTML输出:
在某些版本的AOLserver(4.5.0到最后一次发布,但在cvs HEAD中已修复)中存在一个已知错误,该错误导致
nsquotehTML
在收到空字符串时返回无效数据。OpenACS检测并解决了这个bug,但有一个版本没有

受影响版本的解决方法是将
template::adp_compile
中的
nsquotehtml
更改为
adquotehtml
,定义见
packages/acs templating/tcl/parse procs.tcl


请看

您能再详细一点吗?是Tcl源文件中的空字符串,还是来自用户输入或其他地方?空字符串来自Tcl源文件。我尝试了[string length$email],它返回0个hanks,但没有发现问题。(几年前我在一个project open安装上工作,但现在没有访问权限。)我不知道是什么导致了这个问题,但十六进制00表示空字符。这是一个很难调试的问题,而不知道更多关于您的设置的信息。您能否检查AOLserver配置文件(在ns_部分ns/参数部分)中的以下设置:ns_参数HackContentType 1 ns_参数DefaultCharset utf-8 ns_参数HttpOpenCharset utf-8 ns_参数OutputCharset utf-8 ns_参数URLCharset utf-8Thx用于共享。。这是很好的信息。不幸的是,该文件中没有ns_quotehtml。我在adp_编译部分找到了
{\1[ad_quotehtml[lang::util::localize${\2}]}

我在
template::expand_percentage_signs
TODO:ad quotehtml
中发现,您提供的链接中的讨论似乎非常详细地讨论了这个问题,并给出了一些解决方法的提示。但没有关于如何修复的细节。还有什么建议吗?@ThorstenNiehues这是该漏洞的补丁@特洛伊名字,谢谢。仅替换parse-procs.tcl中的行没有帮助。但是替换所有ACS文件修复了这个问题。很高兴你解决了这个问题。你不得不替换所有的文件,这有点奇怪。