Mercurial > pidgin.yaz
diff libpurple/protocols/oscar/bstream.c @ 27276:7f43d6779764
Apply [9bac0a540156fb1848eedd61c8630737dee752c7] here as well. I should
actually have committed this here first, then plucked to 2.5.8, but by the
time I realized this it was too late to fix. Refs #9483.
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Sat, 27 Jun 2009 18:50:48 +0000 |
parents | 3f3d21ae1825 |
children | bbb27d65681f |
line wrap: on
line diff
--- a/libpurple/protocols/oscar/bstream.c Sat Jun 27 17:50:49 2009 +0000 +++ b/libpurple/protocols/oscar/bstream.c Sat Jun 27 18:50:48 2009 +0000 @@ -161,15 +161,19 @@ return aimutil_getle32(bs->data + bs->offset - 4); } +static void byte_stream_getrawbuf_nocheck(ByteStream *bs, guint8 *buf, int len) +{ + memcpy(buf, bs->data + bs->offset, len); + bs->offset += len; +} + int byte_stream_getrawbuf(ByteStream *bs, guint8 *buf, int len) { if (byte_stream_empty(bs) < len) return 0; - memcpy(buf, bs->data + bs->offset, len); - bs->offset += len; - + byte_stream_getrawbuf_nocheck(bs, buf, len); return len; } @@ -177,12 +181,12 @@ { guint8 *ob; + if (byte_stream_empty(bs) < len) + return NULL; + ob = g_malloc(len); - if (byte_stream_getrawbuf(bs, ob, len) < len) { - g_free(ob); - return NULL; - } + byte_stream_getrawbuf_nocheck(bs, ob, len); return ob; } @@ -191,12 +195,12 @@ { char *ob; + if (byte_stream_empty(bs) < len) + return NULL; + ob = g_malloc(len + 1); - if (byte_stream_getrawbuf(bs, (guint8 *)ob, len) < len) { - g_free(ob); - return NULL; - } + byte_stream_getrawbuf_nocheck(bs, (guint8 *)ob, len); ob[len] = '\0';