Skip to content
Snippets Groups Projects
Commit 8536a09b authored by Richard Mudgett's avatar Richard Mudgett
Browse files

security-events: Fix SuccessfulAuth using_password declaration.

The SuccessfulAuth using_password field was declared as a pointer to a
uint32_t when the field was later read as a uint32_t value.  This resulted
in unnecessary casts and a non-portable field value reinterpret in
main/security_events.c:add_json_object().  i.e., It would work on a 32 bit
architecture but not on a 64 bit big endian architecture.

Change-Id: Ia08bc797613a62f07e5473425f9ccd8d77c80935
parent 890ffcd6
No related branches found
No related tags found
No related merge requests found
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
void sip_report_invalid_peer(const struct sip_pvt *p); void sip_report_invalid_peer(const struct sip_pvt *p);
void sip_report_failed_acl(const struct sip_pvt *p, const char *aclname); void sip_report_failed_acl(const struct sip_pvt *p, const char *aclname);
void sip_report_inval_password(const struct sip_pvt *p, const char *responsechallenge, const char *responsehash); void sip_report_inval_password(const struct sip_pvt *p, const char *responsechallenge, const char *responsehash);
void sip_report_auth_success(const struct sip_pvt *p, uint32_t *using_password); void sip_report_auth_success(const struct sip_pvt *p, uint32_t using_password);
void sip_report_session_limit(const struct sip_pvt *p); void sip_report_session_limit(const struct sip_pvt *p);
void sip_report_failed_challenge_response(const struct sip_pvt *p, const char *response, const char *expected_response); void sip_report_failed_challenge_response(const struct sip_pvt *p, const char *response, const char *expected_response);
void sip_report_chal_sent(const struct sip_pvt *p); void sip_report_chal_sent(const struct sip_pvt *p);
......
...@@ -120,7 +120,7 @@ void sip_report_inval_password(const struct sip_pvt *p, const char *response_cha ...@@ -120,7 +120,7 @@ void sip_report_inval_password(const struct sip_pvt *p, const char *response_cha
ast_security_event_report(AST_SEC_EVT(&inval_password)); ast_security_event_report(AST_SEC_EVT(&inval_password));
} }
void sip_report_auth_success(const struct sip_pvt *p, uint32_t *using_password) void sip_report_auth_success(const struct sip_pvt *p, uint32_t using_password)
{ {
char session_id[32]; char session_id[32];
...@@ -269,7 +269,8 @@ void sip_report_inval_transport(const struct sip_pvt *p, const char *transport) ...@@ -269,7 +269,8 @@ void sip_report_inval_transport(const struct sip_pvt *p, const char *transport)
} }
int sip_report_security_event(const char *peer, struct ast_sockaddr *addr, const struct sip_pvt *p, 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) { 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;
...@@ -295,9 +296,9 @@ int sip_report_security_event(const char *peer, struct ast_sockaddr *addr, const ...@@ -295,9 +296,9 @@ int sip_report_security_event(const char *peer, struct ast_sockaddr *addr, const
case AUTH_SUCCESSFUL: case AUTH_SUCCESSFUL:
if (peer_report) { if (peer_report) {
if (ast_strlen_zero(peer_report->secret) && ast_strlen_zero(peer_report->md5secret)) { if (ast_strlen_zero(peer_report->secret) && ast_strlen_zero(peer_report->md5secret)) {
sip_report_auth_success(p, (uint32_t *) 0); sip_report_auth_success(p, 0);
} else { } else {
sip_report_auth_success(p, (uint32_t *) 1); sip_report_auth_success(p, 1);
} }
} }
break; break;
......
...@@ -394,7 +394,7 @@ struct ast_security_event_successful_auth { ...@@ -394,7 +394,7 @@ struct ast_security_event_successful_auth {
* \brief Using password - if a password was used or not * \brief Using password - if a password was used or not
* \note required, 0 = no, 1 = yes * \note required, 0 = no, 1 = yes
*/ */
uint32_t *using_password; uint32_t using_password;
}; };
/*! /*!
......
...@@ -186,7 +186,7 @@ void ast_sip_report_auth_success(struct ast_sip_endpoint *endpoint, pjsip_rx_dat ...@@ -186,7 +186,7 @@ void ast_sip_report_auth_success(struct ast_sip_endpoint *endpoint, pjsip_rx_dat
.transport = transport, .transport = transport,
}, },
.common.session_id = call_id, .common.session_id = call_id,
.using_password = auth ? (uint32_t *)1 : (uint32_t *)0, .using_password = auth ? 1 : 0,
}; };
security_event_populate(rdata, call_id, sizeof(call_id), &local, &remote); security_event_populate(rdata, call_id, sizeof(call_id), &local, &remote);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment