security-events: Fix SuccessfulAuth using_password declaration.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 1 Dec 2017 19:54:26 +0000 (13:54 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 4 Dec 2017 23:21:27 +0000 (17:21 -0600)
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

channels/sip/include/security_events.h
channels/sip/security_events.c
include/asterisk/security_events_defs.h
res/res_pjsip/security_events.c

index 1d0f58b..9f4bb2e 100644 (file)
@@ -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);
index b51c473..86ab6c2 100644 (file)
@@ -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;
index 30a7136..1cae046 100644 (file)
@@ -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;
 };
 
 /*!
index ea3810b..b31445b 100644 (file)
@@ -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);