diff mbox

[U-Boot,1/1] lib: circbuf: avoid possible null pointer dereference

Message ID 20170503212010.13944-1-xypron.glpk@gmx.de
State Accepted
Commit 05d887b4619e54a2b7d487ac1c31b4544ce58533
Delegated to: Tom Rini
Headers show

Commit Message

Heinrich Schuchardt May 3, 2017, 9:20 p.m. UTC
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 | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Tom Rini May 7, 2017, 1:28 a.m. UTC | #1
On Wed, May 03, 2017 at 11:20:10PM +0200, xypron.glpk@gmx.de wrote:

> 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>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/lib/circbuf.c b/lib/circbuf.c
index 9848da3b7b..6ed0516430 100644
--- a/lib/circbuf.c
+++ b/lib/circbuf.c
@@ -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) {