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(); }
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(); }
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(); }
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(); }
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(); }
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(); }