libobs/util: Fix copy sizes in dstr_insert_* functions
These functions would copy the wrong amount of data, resulting in writing to memory that may not be allocated.master
parent
ae8b4bc538
commit
e9a814740b
|
@ -432,10 +432,11 @@ void dstr_insert(struct dstr *dst, const size_t idx, const char *array)
|
||||||
new_len = dst->len + len;
|
new_len = dst->len + len;
|
||||||
|
|
||||||
dstr_ensure_capacity(dst, new_len + 1);
|
dstr_ensure_capacity(dst, new_len + 1);
|
||||||
dst->len = new_len;
|
|
||||||
|
|
||||||
memmove(dst->array+idx+len, dst->array+idx, dst->len - idx + 1);
|
memmove(dst->array+idx+len, dst->array+idx, dst->len - idx + 1);
|
||||||
memcpy(dst->array+idx, array, len);
|
memcpy(dst->array+idx, array, len);
|
||||||
|
|
||||||
|
dst->len = new_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dstr_insert_dstr(struct dstr *dst, const size_t idx,
|
void dstr_insert_dstr(struct dstr *dst, const size_t idx,
|
||||||
|
@ -452,10 +453,11 @@ void dstr_insert_dstr(struct dstr *dst, const size_t idx,
|
||||||
new_len = dst->len + str->len;
|
new_len = dst->len + str->len;
|
||||||
|
|
||||||
dstr_ensure_capacity(dst, (new_len+1));
|
dstr_ensure_capacity(dst, (new_len+1));
|
||||||
dst->len = new_len;
|
|
||||||
|
|
||||||
memmove(dst->array+idx+str->len, dst->array+idx, dst->len - idx + 1);
|
memmove(dst->array+idx+str->len, dst->array+idx, dst->len - idx + 1);
|
||||||
memcpy(dst->array+idx, str->array, str->len);
|
memcpy(dst->array+idx, str->array, str->len);
|
||||||
|
|
||||||
|
dst->len = new_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dstr_insert_ch(struct dstr *dst, const size_t idx, const char ch)
|
void dstr_insert_ch(struct dstr *dst, const size_t idx, const char ch)
|
||||||
|
|
Loading…
Reference in New Issue