@@ -49,7 +49,13 @@ exports.create = function(options, callback) {
4949 }
5050 } ;
5151
52- var doc = new Parser ( ) . parseFromString ( saml11 . toString ( ) ) ;
52+ var doc ;
53+ try {
54+ doc = new Parser ( ) . parseFromString ( saml11 . toString ( ) ) ;
55+ } catch ( err ) {
56+ return utils . reportError ( err , callback ) ;
57+ }
58+
5359 doc . documentElement . setAttribute ( 'AssertionID' , '_' + ( options . uid || utils . uid ( 32 ) ) ) ;
5460 if ( options . issuer )
5561 doc . documentElement . setAttribute ( 'Issuer' , options . issuer ) ;
@@ -156,8 +162,15 @@ function addSubjectConfirmation(options, doc, randomBytes, callback) {
156162 xmlenc . encryptKeyInfo ( randomBytes , encryptOptions , function ( err , keyinfo ) {
157163 if ( err ) return cb ( err ) ;
158164 var subjectConfirmationNodes = doc . documentElement . getElementsByTagNameNS ( NAMESPACE , 'SubjectConfirmation' ) ;
165+
159166 for ( var i = 0 ; i < subjectConfirmationNodes . length ; i ++ ) {
160- var keyinfoDom = new Parser ( ) . parseFromString ( keyinfo ) ;
167+ var keyinfoDom ;
168+ try {
169+ keyinfoDom = new Parser ( ) . parseFromString ( keyinfo ) ;
170+ } catch ( error ) {
171+ return utils . reportError ( error , callback ) ;
172+ }
173+
161174 var method = subjectConfirmationNodes [ i ] . getElementsByTagNameNS ( NAMESPACE , 'ConfirmationMethod' ) [ 0 ] ;
162175 method . textContent = 'urn:oasis:names:tc:SAML:1.0:cm:holder-of-key' ;
163176 subjectConfirmationNodes [ i ] . appendChild ( keyinfoDom . documentElement ) ;
@@ -169,11 +182,16 @@ function addSubjectConfirmation(options, doc, randomBytes, callback) {
169182
170183function sign ( options , sig , doc , callback ) {
171184 var token = utils . removeWhitespace ( doc . toString ( ) ) ;
172- sig . computeSignature ( token , options . xpathToNodeBeforeSignature ) ;
173- var signed = sig . getSignedXml ( ) ;
185+ var signed ;
186+ try {
187+ sig . computeSignature ( token , options . xpathToNodeBeforeSignature ) ;
188+ signed = sig . getSignedXml ( ) ;
189+ } catch ( err ) {
190+ return utils . reportError ( err , callback ) ;
191+ }
174192
175193 if ( ! callback ) return signed ;
176-
194+
177195 return callback ( null , signed ) ;
178196}
179197
0 commit comments