Fix reallocation bug.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2974 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -63,8 +63,16 @@ emem_store(krb5_storage *sp, void *data, size_t size)
|
|||||||
{
|
{
|
||||||
emem_storage *s = (emem_storage*)sp->data;
|
emem_storage *s = (emem_storage*)sp->data;
|
||||||
if(size > s->base + s->size - s->ptr){
|
if(size > s->base + s->size - s->ptr){
|
||||||
s->size = 2 * (size + (s->ptr - s->base)); /* XXX */
|
void *base;
|
||||||
s->base = realloc(s->base, s->size);
|
size_t sz, off;
|
||||||
|
sz = 2 * (size + (s->ptr - s->base)); /* XXX */
|
||||||
|
off = s->ptr - s->base;
|
||||||
|
base = realloc(s->base, sz);
|
||||||
|
if(base == NULL)
|
||||||
|
return 0;
|
||||||
|
s->size = sz;
|
||||||
|
s->base = base;
|
||||||
|
s->ptr = (char*)base + off;
|
||||||
}
|
}
|
||||||
memmove(s->ptr, data, size);
|
memmove(s->ptr, data, size);
|
||||||
sp->seek(sp, size, SEEK_CUR);
|
sp->seek(sp, size, SEEK_CUR);
|
||||||
|
Reference in New Issue
Block a user