diff --git a/lib/middleware.js b/lib/middleware.js index 42b0bce..61ff466 100644 --- a/lib/middleware.js +++ b/lib/middleware.js @@ -24,6 +24,12 @@ const checkCache = async(req, res, next) => { const {logger} = req.locals; const registration = req.registration; const uri = parseUri(registration.aor); + // if cannot parse uri, then we cannot proceed + if (!uri) { + return res.send(403, {headers: { + 'X-Reason': 'Invalid address of record' + }}); + } const aor = `${uri.user}@${uri.host}`; req.locals.realm = uri.host; diff --git a/test/scenarios/uac-register-gh-83.xml b/test/scenarios/uac-register-gh-83.xml new file mode 100644 index 0000000..049e720 --- /dev/null +++ b/test/scenarios/uac-register-gh-83.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] +To: "sipp" +Call-ID: reg///[call_id] +CSeq: 8 REGISTER +Contact: +Expires: 3600 +Content-Length: 0 +User-Agent: SIPp + ]]> + + + + + + + + + + + + diff --git a/test/sip-register-tests.js b/test/sip-register-tests.js index 05a3f9c..b7ea2b3 100644 --- a/test/sip-register-tests.js +++ b/test/sip-register-tests.js @@ -56,7 +56,11 @@ test('register tests', (t) => { return sippUac('uac-register-auth-success-jane.xml', sippRegObj); }) .then(() => { - t.pass('successfully re-registered against short registration with re-auth'); + t.pass('successfully registered for jane'); + return sippUac('uac-register-gh-83.xml', sippRegObj); + }) + .then(() => { + t.pass('unsuccessfully registered for invalid From and To headers'); if (srf.locals.lb) srf.locals.lb.disconnect(); srf.disconnect(); t.end();