示例#1
0
文件: dns.c 项目: Pneumaticat/iodine
END_TEST

START_TEST(test_decode_response_with_high_trans_id)
{
	char buf[512];
	struct query q;
	int len;
	int ret;

	len = sizeof(buf);
	memset(&buf, 0, sizeof(buf));

	ret = dns_decode(buf, len, &q, QR_ANSWER, answer_packet_high_trans_id, sizeof(answer_packet_high_trans_id)-1);
	fail_unless(ret == strlen(msgData), "Bad data length: %d, expected %d", ret, strlen(msgData));
	fail_unless(strncmp(msgData, buf, strlen(msgData)) == 0, "Did not extract expected data");
	fail_unless(q.id == 0x8539, "q.id was %08X instead of %08X!", q.id, 0x8539);
}
示例#2
0
static int		get_request(void *req, char *output, t_conf *conf,
				    struct sockaddr_in *sa)
{
  char			buffer[MAX_HOST_NAME_ENCODED + 1];
  int			len;
  char			*data;


  data = JUMP_DNS_HDR(req);
  if (mystrnlen(data, MAX_HOST_NAME_ENCODED + 1) > MAX_HOST_NAME_ENCODED)
    return (-1);
  if (dns_decode((char *)req, data, buffer, conf, sa) == -1)
    return (-1);
  len = base64_decode((unsigned char *)output, buffer);
  output[len] = 0;
  return (len);
}
示例#3
0
文件: dns.c 项目: Pneumaticat/iodine
END_TEST

START_TEST(test_decode_query)
{
	char buf[512];
	char *domain;
	struct query q;
	struct encoder *enc;
	size_t len;

	memset(&q, 0, sizeof(struct query));
	memset(&buf, 0, sizeof(buf));
	q.id = 0;
	len = sizeof(query_packet) - 1;
	enc = get_base32_encoder();

	dns_decode(buf, sizeof(buf), &q, QR_QUERY, query_packet, len);
	domain = strstr(q.name, topdomain);
	len = sizeof(buf);
	unpack_data((uint8_t *)buf, len, (uint8_t *)(q.name + 1), (int) (domain - q.name) - 1, enc);

	fail_unless(strncmp(buf, innerData, strlen(innerData)) == 0, "Did not extract expected host: '%s'", buf);
	fail_unless(strlen(buf) == strlen(innerData), "Bad host length: %d, expected %d: '%s'", strlen(buf), strlen(innerData), buf);
}