xmlSecInit() печатает ошибку подтверждения в stderr (g_xslt_default_security_prefs == NULL)
У меня есть код, который очень похож на пример на http://www.aleksey.com/xmlsec/api/xmlsec-examples-sign-template-file.html:
#ifndef XMLSEC_NO_XSLT
xsltSecurityPrefsPtr xsltSecPrefs = NULL;
#endif /* XMLSEC_NO_XSLT */
/* Init libxml and libxslt libraries */
xmlInitParser();
LIBXML_TEST_VERSION
xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
xmlSubstituteEntitiesDefault(1);
/* Init libxslt */
#ifndef XMLSEC_NO_XSLT
/* disable everything */
xsltSecPrefs = xsltNewSecurityPrefs();
xsltSetSecurityPrefs(xsltSecPrefs, XSLT_SECPREF_READ_FILE, xsltSecurityForbid);
xsltSetSecurityPrefs(xsltSecPrefs, XSLT_SECPREF_WRITE_FILE, xsltSecurityForbid);
xsltSetSecurityPrefs(xsltSecPrefs, XSLT_SECPREF_CREATE_DIRECTORY, xsltSecurityForbid);
xsltSetSecurityPrefs(xsltSecPrefs, XSLT_SECPREF_READ_NETWORK, xsltSecurityForbid);
xsltSetSecurityPrefs(xsltSecPrefs, XSLT_SECPREF_WRITE_NETWORK, xsltSecurityForbid);
xsltSetDefaultSecurityPrefs(xsltSecPrefs);
#endif /* XMLSEC_NO_XSLT */
/* Init xmlsec library */
if(xmlSecInit() < 0) {
fprintf(stderr, "Error: xmlsec initialization failed.\n");
return(-1);
}
Проблема в том, что пока xmlSecInit
успешно (возвращает 0), это регистрирует эту ошибку подтверждения в stderr:
func=xmlSecTransformXsltInitialize:file=xslt.c:line=109:obj=unknown:subj=g_xslt_default_security_prefs == NULL:error=100:assertion:
Я подозреваю, что это безвредно, но, вероятно, причина, по которой регистрируется ошибка. Я хочу знать, как этого избежать.
у меня нет XMLSEC_NO_XSLT
определены, поэтому эти строки кодов в #ifdef
s выполнить.
Спасибо!
1 ответ
Я посмотрел на источник xmlsec, и это выглядит как xmlSecInit
звонки xmlSecTransformIdsInit
, который вызывает xmlSecTransformXsltInitialize
, Первое, что делает последняя функция, это проверяет, что g_xslt_default_security_prefs
является NULL
, Затем он устанавливает g_xslt_default_security_prefs
,
Короче говоря, я звонил xmlSecInit()
более одного раза, и не должны этого делать.