lib: circbuf: avoid possible null pointer dereference
authorxypron.glpk@gmx.de <xypron.glpk@gmx.de>
Wed, 3 May 2017 21:20:10 +0000 (23:20 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 5 May 2017 20:45:57 +0000 (16:45 -0400)
We should not first dereference p and afterwards assert that is
was not NULL. Instead do the assert first.

The problem was indicated by cppcheck.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/circbuf.c

index 9848da3b7b6182df3957a8ac4c9dbfe8271d693f..6ed0516430422e5e444b10305c5dd70ace2ba260 100644 (file)
@@ -41,11 +41,13 @@ int buf_free (circbuf_t * buf)
 int buf_pop (circbuf_t * buf, char *dest, unsigned int len)
 {
        unsigned int i;
-       char *p = buf->top;
+       char *p;
 
        assert (buf != NULL);
        assert (dest != NULL);
 
+       p = buf->top;
+
        /* Cap to number of bytes in buffer */
        if (len > buf->size)
                len = buf->size;
@@ -69,11 +71,13 @@ int buf_push (circbuf_t * buf, const char *src, unsigned int len)
 {
        /* NOTE:  this function allows push to overwrite old data. */
        unsigned int i;
-       char *p = buf->tail;
+       char *p;
 
        assert (buf != NULL);
        assert (src != NULL);
 
+       p = buf->tail;
+
        for (i = 0; i < len; i++) {
                *p++ = src[i];
                if (p == buf->end) {