comparison src/core/ngx_connection.c @ 5264:b6ffe53f9c3d

Core: fixed possible use of an uninitialized variable. The call to ngx_sock_ntop() in ngx_connection_local_sockaddr() might be performed with the uninitialized "len" variable. The fix is to initialize variable to the size of corresponding socket address type. The issue was introduced in commit 05ba5bce31e0.
author Vladimir Homutov <vl@nginx.com>
date Thu, 11 Jul 2013 19:50:19 +0400
parents 05ba5bce31e0
children 31690d934175
comparison
equal deleted inserted replaced
5263:05ba5bce31e0 5264:b6ffe53f9c3d
1032 switch (c->local_sockaddr->sa_family) { 1032 switch (c->local_sockaddr->sa_family) {
1033 1033
1034 #if (NGX_HAVE_INET6) 1034 #if (NGX_HAVE_INET6)
1035 case AF_INET6: 1035 case AF_INET6:
1036 sin6 = (struct sockaddr_in6 *) c->local_sockaddr; 1036 sin6 = (struct sockaddr_in6 *) c->local_sockaddr;
1037 len = sizeof(struct sockaddr_in6);
1037 1038
1038 for (addr = 0, i = 0; addr == 0 && i < 16; i++) { 1039 for (addr = 0, i = 0; addr == 0 && i < 16; i++) {
1039 addr |= sin6->sin6_addr.s6_addr[i]; 1040 addr |= sin6->sin6_addr.s6_addr[i];
1040 } 1041 }
1041 1042
1042 break; 1043 break;
1043 #endif 1044 #endif
1044 1045
1045 default: /* AF_INET */ 1046 default: /* AF_INET */
1046 sin = (struct sockaddr_in *) c->local_sockaddr; 1047 sin = (struct sockaddr_in *) c->local_sockaddr;
1048 len = sizeof(struct sockaddr_in);
1047 addr = sin->sin_addr.s_addr; 1049 addr = sin->sin_addr.s_addr;
1048 break; 1050 break;
1049 } 1051 }
1050 1052
1051 if (addr == 0) { 1053 if (addr == 0) {