diff options
| author | Varun Shastry <vshastry@redhat.com> | 2012-09-17 15:44:16 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-09-17 21:19:37 -0700 | 
| commit | f7342ad3a91ac5140e9c24e20007519847f4f4ec (patch) | |
| tree | b611dbab90e234c95bd525743e6fc4fa6ed0a64e /rpc/rpc-lib | |
| parent | 4d0895c966f38355950d22ce378579fd35b7c9b2 (diff) | |
Clean up of typepunning errors ( Strict aliasing warnings )
Change-Id: I48733967facc526fb523a8dc9bd068f8c5cc5971
BUG: 764282
Signed-off-by: Varun Shastry <vshastry@redhat.com>
Reviewed-on: http://review.gluster.org/3950
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'rpc/rpc-lib')
| -rw-r--r-- | rpc/rpc-lib/src/rpcsvc.c | 23 | 
1 files changed, 11 insertions, 12 deletions
diff --git a/rpc/rpc-lib/src/rpcsvc.c b/rpc/rpc-lib/src/rpcsvc.c index 972461a0a..ca637a506 100644 --- a/rpc/rpc-lib/src/rpcsvc.c +++ b/rpc/rpc-lib/src/rpcsvc.c @@ -2173,14 +2173,14 @@ rpcsvc_transport_peer_check_addr (dict_t *options, char *volname,          int     rjret = RPCSVC_AUTH_REJECT;          char    clstr[RPCSVC_PEER_STRLEN];          char   *tmp   = NULL; -        struct sockaddr_storage sastorage = {0,}; -        struct sockaddr        *sockaddr  = NULL; +        union gf_sock_union sock_union;          if (!trans)                  return ret;          ret = rpcsvc_transport_peeraddr (trans, clstr, RPCSVC_PEER_STRLEN, -                                         &sastorage, sizeof (sastorage)); +                                         &sock_union.storage, +                                         sizeof (sock_union.storage));          if (ret != 0) {                  gf_log (GF_RPCSVC, GF_LOG_ERROR, "Failed to get remote addr: "                          "%s", gai_strerror (ret)); @@ -2188,8 +2188,7 @@ rpcsvc_transport_peer_check_addr (dict_t *options, char *volname,                  goto err;          } -        sockaddr = (struct sockaddr *) &sastorage; -        switch (sockaddr->sa_family) { +        switch (sock_union.sa.sa_family) {          case AF_INET:          case AF_INET6: @@ -2307,10 +2306,9 @@ int  rpcsvc_transport_privport_check (rpcsvc_t *svc, char *volname,                                   rpc_transport_t *trans)  { -        struct sockaddr_storage sastorage = {0,}; -        struct sockaddr_in     *sa = NULL; +        union gf_sock_union     sock_union;          int                     ret = RPCSVC_AUTH_REJECT; -        socklen_t               sasize = sizeof (sa); +        socklen_t               sinsize = sizeof (&sock_union.sin);          char                    *srchstr = NULL;          char                    *valstr = NULL;          int                     globalinsecure = RPCSVC_AUTH_REJECT; @@ -2318,12 +2316,13 @@ rpcsvc_transport_privport_check (rpcsvc_t *svc, char *volname,          uint16_t                port = 0;          gf_boolean_t            insecure = _gf_false; +        memset (&sock_union, 0, sizeof (sock_union)); +          if ((!svc) || (!volname) || (!trans))                  return ret; -        sa = (struct sockaddr_in*) &sastorage; -        ret = rpcsvc_transport_peeraddr (trans, NULL, 0, &sastorage, -                                         sasize); +        ret = rpcsvc_transport_peeraddr (trans, NULL, 0, &sock_union.storage, +                                         sinsize);          if (ret != 0) {                  gf_log (GF_RPCSVC, GF_LOG_ERROR, "Failed to get peer addr: %s",                          gai_strerror (ret)); @@ -2331,7 +2330,7 @@ rpcsvc_transport_privport_check (rpcsvc_t *svc, char *volname,                  goto err;          } -        port = ntohs (sa->sin_port); +        port = ntohs (sock_union.sin.sin_port);          gf_log (GF_RPCSVC, GF_LOG_TRACE, "Client port: %d", (int)port);          /* If the port is already a privileged one, dont bother with checking           * options.  | 
