예제 #1
0
static int test_tls1_heartbleed()
	{
	SETUP_HEARTBEAT_TEST_FIXTURE(tls);
	/* Three-byte pad at the beginning for type and payload length */
	unsigned char payload_buf[] = "   HEARTBLEED                ";

	fixture.payload = &payload_buf[0];
	fixture.sent_payload_len = MAX_PRINTABLE_CHARACTERS;
	fixture.expected_return_value = 0;
	fixture.expected_payload_len = 0;
	fixture.expected_return_payload = "";
	EXECUTE_HEARTBEAT_TEST();
	}
예제 #2
0
static int test_tls1_not_bleeding()
	{
	SETUP_HEARTBEAT_TEST_FIXTURE(tls);
	/* Three-byte pad at the beginning for type and payload length */
	unsigned char payload_buf[] = "   Not bleeding, sixteen spaces of padding"
					"                ";
	const int payload_buf_len = honest_payload_size(payload_buf);

	fixture.payload = &payload_buf[0];
	fixture.sent_payload_len = payload_buf_len;
	fixture.expected_return_value = 0;
	fixture.expected_payload_len = payload_buf_len;
	fixture.expected_return_payload = "Not bleeding, sixteen spaces of padding";
	EXECUTE_HEARTBEAT_TEST();
	}
예제 #3
0
static int test_tls1_heartbleed_empty_payload()
	{
	SETUP_HEARTBEAT_TEST_FIXTURE(tls);
	/* Excluding the NUL at the end, one byte short of type + payload length +
	 * minimum padding */
	unsigned char payload_buf[MIN_PADDING_SIZE + 3];
	memset(payload_buf, ' ', sizeof(payload_buf));
	payload_buf[sizeof(payload_buf) - 1] = '\0';

	fixture.payload = &payload_buf[0];
	fixture.sent_payload_len = MAX_PRINTABLE_CHARACTERS;
	fixture.expected_return_value = 0;
	fixture.expected_payload_len = 0;
	fixture.expected_return_payload = "";
	EXECUTE_HEARTBEAT_TEST();
	}
예제 #4
0
static int test_dtls1_heartbleed_excessive_plaintext_length()
	{
	SETUP_HEARTBEAT_TEST_FIXTURE(dtls);
	/* Excluding the NUL at the end, one byte in excess of maximum allowed
	 * heartbeat message length */
	unsigned char payload_buf[SSL3_RT_MAX_PLAIN_LENGTH + 2];
	memset(payload_buf, ' ', sizeof(payload_buf));
	payload_buf[sizeof(payload_buf) - 1] = '\0';

	fixture.payload = &payload_buf[0];
	fixture.sent_payload_len = honest_payload_size(payload_buf);
	fixture.expected_return_value = 0;
	fixture.expected_payload_len = 0;
	fixture.expected_return_payload = "";
	EXECUTE_HEARTBEAT_TEST();
	}
예제 #5
0
static int test_tls1_not_bleeding_empty_payload()
	{
	int payload_buf_len;

	SETUP_HEARTBEAT_TEST_FIXTURE(tls);
	/* Three-byte pad at the beginning for type and payload length, plus a NUL
	 * at the end */
	unsigned char payload_buf[4 + MIN_PADDING_SIZE];
	memset(payload_buf, ' ', sizeof(payload_buf));
	payload_buf[sizeof(payload_buf) - 1] = '\0';
	payload_buf_len = honest_payload_size(payload_buf);

	fixture.payload = &payload_buf[0];
	fixture.sent_payload_len = payload_buf_len;
	fixture.expected_return_value = 0;
	fixture.expected_payload_len = payload_buf_len;
	fixture.expected_return_payload = "";
	EXECUTE_HEARTBEAT_TEST();
	}
예제 #6
0
static int test_dtls1_not_bleeding_empty_payload()
{
    int payload_buf_len;

    SETUP_HEARTBEAT_TEST_FIXTURE(dtls);
    /*
     * Three-byte pad at the beginning for type and payload length, plus a
     * NUL at the end
     */
    unsigned char payload_buf[4 + MAX_PRINTABLE_CHARACTERS];
    memset(payload_buf, ' ', MIN_PADDING_SIZE + 3);
    payload_buf[MIN_PADDING_SIZE + 3] = '\0';
    payload_buf_len = honest_payload_size(payload_buf);

    fixture.payload = &payload_buf[0];
    fixture.sent_payload_len = payload_buf_len;
    fixture.expected_return_value = 0;
    fixture.expected_payload_len = payload_buf_len;
    fixture.expected_return_payload = "";
    EXECUTE_HEARTBEAT_TEST();
}