Mercurial > hg > nginx
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) { |