Mailing List Archive

r1547 - trunk/varnish-cache/bin/varnishd
Author: phk
Date: 2007-06-24 12:43:15 +0200 (Sun, 24 Jun 2007)
New Revision: 1547

Modified:
trunk/varnish-cache/bin/varnishd/cache.h
trunk/varnish-cache/bin/varnishd/cache_acceptor.c
trunk/varnish-cache/bin/varnishd/cache_session.c
trunk/varnish-cache/bin/varnishd/cache_vrt.c
trunk/varnish-cache/bin/varnishd/cache_vrt_acl.c
trunk/varnish-cache/bin/varnishd/mgt_cli.c
trunk/varnish-cache/bin/varnishd/tcp.c
Log:
Further sockaddr/sockaddr_storage sanitation in order to quiet FlexeLint


Modified: trunk/varnish-cache/bin/varnishd/cache.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache.h 2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache.h 2007-06-24 10:43:15 UTC (rev 1547)
@@ -276,10 +276,10 @@

struct worker *wrk;

- unsigned sockaddrlen;
- struct sockaddr_storage sockaddr[1];
- unsigned mysockaddrlen;
- struct sockaddr_storage mysockaddr[1];
+ socklen_t sockaddrlen;
+ socklen_t mysockaddrlen;
+ struct sockaddr *sockaddr;
+ struct sockaddr *mysockaddr;

/* formatted ascii client address */
char addr[TCP_ADDRBUFSIZE];

Modified: trunk/varnish-cache/bin/varnishd/cache_acceptor.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_acceptor.c 2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache_acceptor.c 2007-06-24 10:43:15 UTC (rev 1547)
@@ -113,7 +113,7 @@
VCA_Prep(struct sess *sp)
{

- TCP_name((struct sockaddr *)sp->sockaddr, sp->sockaddrlen,
+ TCP_name(sp->sockaddr, sp->sockaddrlen,
sp->addr, sizeof sp->addr, sp->port, sizeof sp->port);
VSL(SLT_SessionOpen, sp->fd, "%s %s", sp->addr, sp->port);
sp->acct.first = sp->t_open.tv_sec;

Modified: trunk/varnish-cache/bin/varnishd/cache_session.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_session.c 2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache_session.c 2007-06-24 10:43:15 UTC (rev 1547)
@@ -67,6 +67,7 @@
struct http http;
unsigned workspace;
TAILQ_ENTRY(sessmem) list;
+ struct sockaddr_storage sockaddr[2];
};

static TAILQ_HEAD(,sessmem) ses_free_mem[2] = {
@@ -255,6 +256,7 @@
SES_New(struct sockaddr *addr, unsigned len)
{
struct sessmem *sm;
+ struct sess *sp;
volatile unsigned u;

/*
@@ -295,20 +297,26 @@
return (NULL);
CHECK_OBJ_NOTNULL(sm, SESSMEM_MAGIC);
VSL_stats->n_sess++;
- memset(&sm->sess, 0, sizeof sm->sess);
- sm->sess.magic = SESS_MAGIC;
- sm->sess.mem = sm;
- sm->sess.http = &sm->http;
+ sp = &sm->sess;
+ memset(sp, 0, sizeof *sp);
+ sp->magic = SESS_MAGIC;
+ sp->mem = sm;
+ sp->http = &sm->http;
+ sp->sockaddr = (void*)(&sm->sockaddr[0]);
+ sp->sockaddrlen = sizeof(sm->sockaddr[0]);
+ sp->mysockaddr = (void*)(&sm->sockaddr[1]);
+ sp->mysockaddrlen = sizeof(sm->sockaddr[1]);
+ sp->sockaddr->sa_family = sp->mysockaddr->sa_family = PF_UNSPEC;

- assert(len < sizeof(sm->sess.sockaddr));
+ assert(len <= sp->sockaddrlen);
if (addr != NULL) {
- memcpy(sm->sess.sockaddr, addr, len);
- sm->sess.sockaddrlen = len;
+ memcpy(sp->sockaddr, addr, len);
+ sp->sockaddrlen = len;
}

http_Setup(&sm->http, (void *)(sm + 1), sm->workspace);

- return (&sm->sess);
+ return (sp);
}

void

Modified: trunk/varnish-cache/bin/varnishd/cache_vrt.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_vrt.c 2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache_vrt.c 2007-06-24 10:43:15 UTC (rev 1547)
@@ -257,22 +257,17 @@
VRT_r_client_ip(struct sess *sp)
{

- return ((struct sockaddr *)sp->sockaddr);
+ return (sp->sockaddr);
}

struct sockaddr *
VRT_r_server_ip(struct sess *sp)
{
- socklen_t l;

- if (sp->mysockaddrlen == 0) {
- l = sizeof sp->mysockaddr;
- AZ(getsockname(sp->fd,
- (struct sockaddr*)sp->mysockaddr, &l));
- sp->mysockaddrlen = l;
- }
+ if (sp->mysockaddr->sa_family == AF_UNSPEC)
+ AZ(getsockname(sp->fd, sp->mysockaddr, &sp->mysockaddrlen));

- return ((struct sockaddr*)sp->mysockaddr);
+ return (sp->mysockaddr);
}

/*--------------------------------------------------------------------*/

Modified: trunk/varnish-cache/bin/varnishd/cache_vrt_acl.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_vrt_acl.c 2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/cache_vrt_acl.c 2007-06-24 10:43:15 UTC (rev 1547)
@@ -104,7 +104,7 @@
for (a1 = ap->priv; a1 != NULL; a1 = a1->ai_next) {

/* only match the right family */
- if (a1->ai_family != sp->sockaddr->ss_family)
+ if (a1->ai_family != sp->sockaddr->sa_family)
continue;

if (a1->ai_family == AF_INET) {

Modified: trunk/varnish-cache/bin/varnishd/mgt_cli.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/mgt_cli.c 2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/mgt_cli.c 2007-06-24 10:43:15 UTC (rev 1547)
@@ -380,7 +380,7 @@

(void)what;
addrlen = sizeof addr;
- i = accept(ev->fd, (struct sockaddr *)&addr, &addrlen);
+ i = accept(ev->fd, (void *)&addr, &addrlen);
if (i < 0)
return (0);


Modified: trunk/varnish-cache/bin/varnishd/tcp.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/tcp.c 2007-06-24 10:42:08 UTC (rev 1546)
+++ trunk/varnish-cache/bin/varnishd/tcp.c 2007-06-24 10:43:15 UTC (rev 1547)
@@ -76,7 +76,8 @@
void
TCP_myname(int sock, char *abuf, unsigned alen, char *pbuf, unsigned plen)
{
- struct sockaddr addr[2]; /* XXX: IPv6 hack */
+ struct sockaddr_storage addr_s;
+ struct sockaddr *addr = (void*)&addr_s;
socklen_t l;

l = sizeof addr;