내가 http://www.aleksey.com/xmlsec/api/xmlsec-examples-sign-template-file.html의 예와 매우 유사합니다 일부 코드가 있습니다xmlSecInit()가 stderr에 어설 션 오류를 출력 (g_xslt_default_security_prefs == NULL)
#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) 성공하면서, 그것은 표준 에러이 어설 션 오류 로그 :
func=xmlSecTransformXsltInitialize:file=xslt.c:line=109:obj=unknown:subj=g_xslt_default_security_prefs == NULL:error=100:assertion:
나는 그것이 무해 의심을하지만, 오류가 기록되고있는 이유는 아마이있다. 나는 그것을 피하는 법을 알고 싶다.
XMLSEC_NO_XSLT
이 정의되어 있지 않으므로 #ifdef
에있는 코드 줄이 실행됩니다.
감사합니다.