*
* Copyright 2002 Project Purple
*
- * $Id: parsekey.c,v 1.8 2003/06/08 19:04:32 noodles Exp $
+ * $Id: parsekey.c,v 1.11 2003/09/30 16:58:04 noodles Exp $
*/
#include <assert.h>
bool inpacket = false;
assert(packets != NULL);
+ curpacket = *packets;
+ while (curpacket->next != NULL) {
+ curpacket = curpacket->next;
+ }
while (!rc && !getchar_func(ctx, 1, &curchar)) {
if (!inpacket && (curchar & 0x80)) {
curpacket->packet->length += 192;
} else if (curpacket->packet->length > 223 &&
curpacket->packet->length < 255) {
- printf("Partial length; not supported.\n");
+ logthing(LOGTHING_NOTICE,
+ "Partial length;"
+ " not supported.\n");
} else if (curpacket->packet->length == 255) {
/*
* 5 byte length; ie 255 followed by 3
curpacket->packet->data =
malloc(curpacket->packet->length *
sizeof(unsigned char));
- rc = getchar_func(ctx,
- curpacket->packet->length,
- curpacket->packet->data);
+ if (curpacket->packet->data == NULL) {
+ logthing(LOGTHING_ERROR,
+ "Can't allocate memory for "
+ "packet!");
+ rc = -1;
+ } else {
+ rc = getchar_func(ctx,
+ curpacket->packet->length,
+ curpacket->packet->data);
+ }
}
inpacket = false;
} else {