Merge "chan_sip.c: wrong peer searched in sip_report_security_event"

changes/88/1088/2
Mark Michelson 10 years ago committed by Gerrit Code Review
commit f96ce0de87

@ -28101,7 +28101,7 @@ static int handle_incoming(struct sip_pvt *p, struct sip_request *req, struct as
res = handle_request_invite(p, req, addr, seqno, recount, e, nounlock); res = handle_request_invite(p, req, addr, seqno, recount, e, nounlock);
if (res < 9) { if (res < 9) {
sip_report_security_event(p, req, res); sip_report_security_event(NULL, &p->recv, p, req, res);
} }
switch (res) { switch (res) {
@ -28140,7 +28140,7 @@ static int handle_incoming(struct sip_pvt *p, struct sip_request *req, struct as
break; break;
case SIP_REGISTER: case SIP_REGISTER:
res = handle_request_register(p, req, addr, e); res = handle_request_register(p, req, addr, e);
sip_report_security_event(p, req, res); sip_report_security_event(p->exten, NULL, p, req, res);
break; break;
case SIP_INFO: case SIP_INFO:
if (req->debug) if (req->debug)

@ -38,6 +38,7 @@ void sip_report_failed_challenge_response(const struct sip_pvt *p, const char *r
void sip_report_chal_sent(const struct sip_pvt *p); void sip_report_chal_sent(const struct sip_pvt *p);
void sip_report_inval_transport(const struct sip_pvt *p, const char *transport); void sip_report_inval_transport(const struct sip_pvt *p, const char *transport);
void sip_digest_parser(char *c, struct digestkeys *keys); void sip_digest_parser(char *c, struct digestkeys *keys);
int sip_report_security_event(const struct sip_pvt *p, const struct sip_request *req, const int res); int sip_report_security_event(const char *peer, struct ast_sockaddr *addr, const struct sip_pvt *p,
const struct sip_request *req, const int res);
#endif #endif

@ -270,7 +270,8 @@ void sip_report_inval_transport(const struct sip_pvt *p, const char *transport)
ast_security_event_report(AST_SEC_EVT(&inval_transport)); ast_security_event_report(AST_SEC_EVT(&inval_transport));
} }
int sip_report_security_event(const struct sip_pvt *p, const struct sip_request *req, const int res) { int sip_report_security_event(const char *peer, struct ast_sockaddr *addr, const struct sip_pvt *p,
const struct sip_request *req, const int res) {
struct sip_peer *peer_report; struct sip_peer *peer_report;
enum check_auth_result res_report = res; enum check_auth_result res_report = res;
@ -288,7 +289,7 @@ int sip_report_security_event(const struct sip_pvt *p, const struct sip_request
[K_LAST] = { NULL, NULL} [K_LAST] = { NULL, NULL}
}; };
peer_report = sip_find_peer(p->exten, NULL, TRUE, FINDPEERS, FALSE, 0); peer_report = sip_find_peer(peer, addr, TRUE, FINDPEERS, FALSE, p->socket.type);
switch(res_report) { switch(res_report) {
case AUTH_DONT_KNOW: case AUTH_DONT_KNOW:

Loading…
Cancel
Save