mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
lib: circbuf: avoid possible null pointer dereference
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>
This commit is contained in:
parent
1275a44e2f
commit
05d887b461
1 changed files with 6 additions and 2 deletions
|
@ -41,11 +41,13 @@ int buf_free (circbuf_t * buf)
|
||||||
int buf_pop (circbuf_t * buf, char *dest, unsigned int len)
|
int buf_pop (circbuf_t * buf, char *dest, unsigned int len)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
char *p = buf->top;
|
char *p;
|
||||||
|
|
||||||
assert (buf != NULL);
|
assert (buf != NULL);
|
||||||
assert (dest != NULL);
|
assert (dest != NULL);
|
||||||
|
|
||||||
|
p = buf->top;
|
||||||
|
|
||||||
/* Cap to number of bytes in buffer */
|
/* Cap to number of bytes in buffer */
|
||||||
if (len > buf->size)
|
if (len > buf->size)
|
||||||
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. */
|
/* NOTE: this function allows push to overwrite old data. */
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
char *p = buf->tail;
|
char *p;
|
||||||
|
|
||||||
assert (buf != NULL);
|
assert (buf != NULL);
|
||||||
assert (src != NULL);
|
assert (src != NULL);
|
||||||
|
|
||||||
|
p = buf->tail;
|
||||||
|
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
*p++ = src[i];
|
*p++ = src[i];
|
||||||
if (p == buf->end) {
|
if (p == buf->end) {
|
||||||
|
|
Loading…
Reference in a new issue