diff options
author | Richard Mudgett <rmudgett@digium.com> | 2017-12-01 13:54:26 -0600 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2017-12-04 17:21:15 -0600 |
commit | 04f7a58f67d28c42ba66914e900b4757b2ef3be3 (patch) | |
tree | 24fdba2631e9b810d1ce13bdbcdd1d9d04e18f1e | |
parent | 1022fd98c64160e4396466cef4b67080e6fff190 (diff) |
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
-rw-r--r-- | channels/sip/include/security_events.h | 2 | ||||
-rw-r--r-- | channels/sip/security_events.c | 9 | ||||
-rw-r--r-- | include/asterisk/security_events_defs.h | 2 | ||||
-rw-r--r-- | res/res_pjsip/security_events.c | 2 |
4 files changed, 8 insertions, 7 deletions
diff --git a/channels/sip/include/security_events.h b/channels/sip/include/security_events.h index 1d0f58b41..9f4bb2ec9 100644 --- a/channels/sip/include/security_events.h +++ b/channels/sip/include/security_events.h @@ -32,7 +32,7 @@ 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_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_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); diff --git a/channels/sip/security_events.c b/channels/sip/security_events.c index b51c4736c..86ab6c2f5 100644 --- a/channels/sip/security_events.c +++ b/channels/sip/security_events.c @@ -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)); } -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]; @@ -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, - const struct sip_request *req, const int res) { + const struct sip_request *req, const int res) +{ struct sip_peer *peer_report; enum check_auth_result res_report = res; @@ -295,9 +296,9 @@ int sip_report_security_event(const char *peer, struct ast_sockaddr *addr, const case AUTH_SUCCESSFUL: if (peer_report) { 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 { - sip_report_auth_success(p, (uint32_t *) 1); + sip_report_auth_success(p, 1); } } break; diff --git a/include/asterisk/security_events_defs.h b/include/asterisk/security_events_defs.h index 30a713606..1cae046f9 100644 --- a/include/asterisk/security_events_defs.h +++ b/include/asterisk/security_events_defs.h @@ -394,7 +394,7 @@ struct ast_security_event_successful_auth { * \brief Using password - if a password was used or not * \note required, 0 = no, 1 = yes */ - uint32_t *using_password; + uint32_t using_password; }; /*! diff --git a/res/res_pjsip/security_events.c b/res/res_pjsip/security_events.c index ea3810bfd..b31445b0c 100644 --- a/res/res_pjsip/security_events.c +++ b/res/res_pjsip/security_events.c @@ -186,7 +186,7 @@ void ast_sip_report_auth_success(struct ast_sip_endpoint *endpoint, pjsip_rx_dat .transport = transport, }, .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); |