From 00debe0edd1d87b0e9bad265bec3bd5a4fe3d21c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Sun, 11 Jan 2009 21:43:21 +0000 Subject: [PATCH] update ->ptr on rebase, return -1 on failure git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24248 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/store_emem.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/krb5/store_emem.c b/lib/krb5/store_emem.c index 7401c9914..7c52947aa 100644 --- a/lib/krb5/store_emem.c +++ b/lib/krb5/store_emem.c @@ -67,7 +67,7 @@ emem_store(krb5_storage *sp, const void *data, size_t size) sz *= 2; base = realloc(s->base, sz); if(base == NULL) - return 0; + return -1; s->size = sz; s->base = base; s->ptr = (unsigned char*)base + off; @@ -112,8 +112,10 @@ emem_trunc(krb5_storage *sp, off_t offset) * If offset is larget then current size, or current size is * shrunk more then half of the current size, adjust buffer. */ - if (offset > s->size || s->size / 2 > offset ) { + if (offset > s->size || (s->size / 2) > offset) { void *base; + size_t off; + off = s->ptr - s->base; base = realloc(s->base, offset); if(base == NULL) return ENOMEM; @@ -121,6 +123,7 @@ emem_trunc(krb5_storage *sp, off_t offset) memset((char *)base + s->size, 0, offset - s->size); s->size = offset; s->base = base; + s->ptr = (unsigned char *)base + off; } s->len = offset; if ((s->ptr - s->base) > offset)