sb: ubsan: do not apply 0 offset to NULL pointer

This commit is contained in:
Boris Faure 2020-04-04 16:41:19 +02:00
parent d5d96cb655
commit 58a1adac38
Signed by: borisfaure
GPG Key ID: 35C0410516166BE8
1 changed files with 8 additions and 2 deletions

View File

@ -14,8 +14,11 @@ ty_sb_add(struct ty_sb *sb, const char *s, size_t len)
{
size_t new_alloc = ((new_len + sb->gap + 15) / 16) * 24;
char *new_buf;
char *buf = sb->buf;
new_buf = realloc(sb->buf - sb->gap, new_alloc);
if (buf && sb->gap)
buf -= sb->gap;
new_buf = realloc(buf, new_alloc);
if (new_buf == NULL)
return -1;
sb->buf = new_buf + sb->gap;
@ -131,7 +134,10 @@ ty_sb_rskip(struct ty_sb *sb, int len)
void
ty_sb_free(struct ty_sb *sb)
{
free(sb->buf - sb->gap);
char *buf = sb->buf;
if (buf && sb->gap)
buf -= sb->gap;
free(buf);
sb->gap = sb->len = sb->alloc = 0;
sb->buf = NULL;
}