Browse Source

printbuf_memset(): set gaps to zero

It is possible to have a printbuf with "gaps", i.e. areas within the
print buffer which have not been initialized by using printbuf_memset.

Always clear memory in such cases.

Example:
```
struct printbuf *pb = printbuf_new();
printbuf_memset(pb, 10, 'a', 2);
```
In this case pb->buf[0] is '\0' but pb->buf[1] up to pb->buf[9] are
not set. The length would be 12 due to successful printbuf_memset.
tags/json-c-0.16-20220414
Tobias Stoeckmann 3 years ago
parent
commit
63c602ff80
1 changed files with 2 additions and 0 deletions
  1. +2
    -0
      printbuf.c

+ 2
- 0
printbuf.c View File

@@ -120,6 +120,8 @@ int printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len)
return -1;
}

if (pb->bpos < offset)
memset(pb->buf + pb->bpos, '\0', offset - pb->bpos);
memset(pb->buf + offset, charvalue, len);
if (pb->bpos < size_needed)
pb->bpos = size_needed;


Loading…
Cancel
Save