From: phk Date: Sat, 19 Jul 2008 12:04:25 +0000 (+0000) Subject: Technically speaking, vsb_len() could return -1, except it won't because X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=944b7a6ee4f4ae3d33c0b66d0aa008b74886a533;p=varnish Technically speaking, vsb_len() could return -1, except it won't because of the vsb_overflow() assert. Make this explicit for FlexeLint. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2967 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- diff --git a/varnish-cache/bin/varnishd/cache_fetch.c b/varnish-cache/bin/varnishd/cache_fetch.c index 29c4d15e..e098dcf7 100644 --- a/varnish-cache/bin/varnishd/cache_fetch.c +++ b/varnish-cache/bin/varnishd/cache_fetch.c @@ -40,7 +40,6 @@ #include "shmlog.h" #include "cache.h" #include "stevedore.h" -#include "cli.h" #include "cli_priv.h" static unsigned fetchfrag; @@ -204,7 +203,7 @@ fetch_chunked(struct sess *sp, struct http_conn *htc) /*--------------------------------------------------------------------*/ static void -dump_st(struct sess *sp, struct storage *st) +dump_st(const struct sess *sp, const struct storage *st) { txt t; @@ -247,7 +246,7 @@ fetch_eof(struct sess *sp, struct http_conn *htc) st->len += i; sp->obj->len += i; } - if (st != NULL && fetchfrag > 0) + if (fetchfrag > 0) dump_st(sp, st); if (st->len == 0) { @@ -272,7 +271,7 @@ FetchReqBody(struct sess *sp) unsigned long content_length; char buf[8192]; char *ptr, *endp; - int read; + int rdcnt; if (http_GetHdr(sp->http, H_Content_Length, &ptr)) { @@ -280,16 +279,16 @@ FetchReqBody(struct sess *sp) /* XXX should check result of conversion */ while (content_length) { if (content_length > sizeof buf) - read = sizeof buf; + rdcnt = sizeof buf; else - read = content_length; - read = HTC_Read(sp->htc, buf, read); - if (read <= 0) + rdcnt = content_length; + rdcnt = HTC_Read(sp->htc, buf, rdcnt); + if (rdcnt <= 0) return (1); - content_length -= read; + content_length -= rdcnt; if (!sp->sendbody) continue; - WRK_Write(sp->wrk, buf, read); + WRK_Write(sp->wrk, buf, rdcnt); /* XXX: stats ? */ if (WRK_Flush(sp->wrk)) return (2); } @@ -342,7 +341,7 @@ Fetch(struct sess *sp) return (__LINE__); TCP_blocking(vc->fd); /* XXX: we should timeout instead */ WRK_Reset(w, &vc->fd); - http_Write(w, hp, 0); + http_Write(w, hp, 0); /* XXX: stats ? */ /* Deal with any message-body the request might have */ i = FetchReqBody(sp); diff --git a/varnish-cache/bin/varnishd/cache_vary.c b/varnish-cache/bin/varnishd/cache_vary.c index abac5421..d7635303 100644 --- a/varnish-cache/bin/varnishd/cache_vary.c +++ b/varnish-cache/bin/varnishd/cache_vary.c @@ -67,7 +67,7 @@ VRY_Create(const struct sess *sp) { char *v, *p, *q, *h, *e; struct vsb *sb, *sbh; - unsigned l; + int l; /* No Vary: header, no worries */ if (!http_GetHdr(sp->obj->http, H_Vary, &v)) @@ -127,6 +127,7 @@ VRY_Create(const struct sess *sp) vsb_finish(sb); AZ(vsb_overflowed(sb)); l = vsb_len(sb); + assert(l >= 0); sp->obj->vary = malloc(l); AN(sp->obj->vary); memcpy(sp->obj->vary, vsb_data(sb), l); diff --git a/varnish-cache/bin/varnishd/flint.lnt b/varnish-cache/bin/varnishd/flint.lnt index 8140aee6..bba9de2f 100644 --- a/varnish-cache/bin/varnishd/flint.lnt +++ b/varnish-cache/bin/varnishd/flint.lnt @@ -53,7 +53,8 @@ -esym(534, strcpy) // Ignoring return value of function -esym(534, strlcpy) // Ignoring return value of function --emacro(506, isnan) // constant value boolean +-emacro(506, isnan, isfinite) // constant value boolean +-emacro(736, isfinite) // loss of precision -emacro(747, isnan) // significant coersion -emacro(506, assert) // constant value boolean -emacro(827, assert) // loop not reachable diff --git a/varnish-cache/bin/varnishd/flint.sh b/varnish-cache/bin/varnishd/flint.sh index 29279b67..25c35176 100755 --- a/varnish-cache/bin/varnishd/flint.sh +++ b/varnish-cache/bin/varnishd/flint.sh @@ -8,7 +8,7 @@ flexelint \ -I../.. \ -DVARNISH_STATE_DIR=\"foo\" \ flint.lnt \ - *.c > $T 2>&1 + *.c ../../lib/libvarnish/*.c > $T 2>&1 for t in Error Warning Info Note do diff --git a/varnish-cache/bin/varnishd/storage_file.c b/varnish-cache/bin/varnishd/storage_file.c index fb6ffde4..889f65f5 100644 --- a/varnish-cache/bin/varnishd/storage_file.c +++ b/varnish-cache/bin/varnishd/storage_file.c @@ -170,6 +170,7 @@ smf_calcsize(struct smf_sc *sc, const char *size, int newfile) */ l = st.st_size; } else { + AN(size); q = str2bytes(size, &l, fssize); if (q != NULL) diff --git a/varnish-cache/bin/varnishd/varnishd.c b/varnish-cache/bin/varnishd/varnishd.c index 1b6df279..8bcb35cc 100644 --- a/varnish-cache/bin/varnishd/varnishd.c +++ b/varnish-cache/bin/varnishd/varnishd.c @@ -401,7 +401,7 @@ cli_check(const struct cli *cli) /*--------------------------------------------------------------------*/ int -main(int argc, char *argv[]) +main(int argc, char * const *argv) { int o; unsigned C_flag = 0;