Exemple #1
0
int
unpack_msgpack_raw32(struct qserver *server, char **valp, unsigned char **datap, unsigned char *last)
{
	uint32_t len;

	if (*datap + 5 > last) {
		malformed_packet(server, "packet too small");
		return 0;
	}
	(*datap)++;

	if (!unpack_msgpack_uint32(server, &len, datap, last, 1))
		return 0;

	return unpack_msgpack_raw_len(server, valp, datap, last, len);
}
Exemple #2
0
int
unpack_msgpack_raw16(struct qserver *server, char **valp, unsigned char **datap, unsigned char *last)
{
	uint16_t len;

	if (*datap + 3 > last) {
		malformed_packet(server, "packet too small");
		return (0);
	}
	(*datap)++;

	if (!unpack_msgpack_uint16(server, &len, datap, last, 1)) {
		return (0);
	}

	return (unpack_msgpack_raw_len(server, valp, datap, last, (uint32_t)len));
}
Exemple #3
0
int
unpack_msgpack_raw(struct qserver *server, char **valp, unsigned char **datap, unsigned char *last)
{
	unsigned char type, len;

	if (*datap + 1 > last) {
		malformed_packet(server, "packet too small");
		return 0;
	}

	type = (**datap & 0xa0);
	len = (**datap & 0x1f);
	if (0xa0 != type) {
		malformed_packet(server, "invalid raw type 0x%02hhx", **datap);
		return 0;
	}
	(*datap)++;

	return unpack_msgpack_raw_len(server, valp, datap, last, (uint32_t)len);
}