]> granicus.if.org Git - libevent/commitdiff
buffer: add an assert for last_with_datap to suppress static analyzer
authorAzat Khuzhin <a3at.mail@gmail.com>
Sun, 28 Oct 2018 12:16:24 +0000 (15:16 +0300)
committerAzat Khuzhin <azat@libevent.org>
Sat, 2 Feb 2019 12:18:01 +0000 (15:18 +0300)
  ../buffer.c:2231:6: warning: Access to field 'flags' results in a dereference of a null pointer
          if (CHAIN_SPACE_LEN(*firstchainp) == 0) {
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../buffer.c:130:30: note: expanded from macro 'CHAIN_SPACE_LEN'
  #define CHAIN_SPACE_LEN(ch) ((ch)->flags & EVBUFFER_IMMUTABLE ? \

(cherry picked from commit f83ac92da9fff789135d1e5b9050653cf7fdb517)

buffer.c

index 8e88fdf54d8dd8020278d9c25a6161faceb22a7a..25a6e528b16ad5fd7ae5d69e289e8f18163f5b8d 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -2228,11 +2228,13 @@ evbuffer_read_setup_vecs_(struct evbuffer *buf, ev_ssize_t howmuch,
        so_far = 0;
        /* Let firstchain be the first chain with any space on it */
        firstchainp = buf->last_with_datap;
+       EVUTIL_ASSERT(*firstchainp);
        if (CHAIN_SPACE_LEN(*firstchainp) == 0) {
                firstchainp = &(*firstchainp)->next;
        }
 
        chain = *firstchainp;
+       EVUTIL_ASSERT(chain);
        for (i = 0; i < n_vecs_avail && so_far < (size_t)howmuch; ++i) {
                size_t avail = (size_t) CHAIN_SPACE_LEN(chain);
                if (avail > (howmuch - so_far) && exact)