Commit cdbe1207 authored by jean-airoldie's avatar jean-airoldie

Problem: No invalid pointer handling for zmq_poller_fd

Solution: Add some and document it.
parent 19dd8195
...@@ -249,6 +249,8 @@ No registered event was signalled before the timeout was reached. ...@@ -249,6 +249,8 @@ No registered event was signalled before the timeout was reached.
On _zmq_poller_fd: On _zmq_poller_fd:
*EINVAL*:: *EINVAL*::
The poller has no associated file descriptor. The poller has no associated file descriptor.
*EFAULT*::
The provided 'poller' did not point to a valid poller.
EXAMPLE EXAMPLE
------- -------
......
...@@ -1280,7 +1280,13 @@ int zmq_poller_wait_all (void *poller_, ...@@ -1280,7 +1280,13 @@ int zmq_poller_wait_all (void *poller_,
int zmq_poller_fd (void *poller_) int zmq_poller_fd (void *poller_)
{ {
return static_cast<zmq::socket_poller_t *> (poller_)->signaler_fd (); if (!poller_
|| !(static_cast<zmq::socket_poller_t *> (poller_)->check_tag ())) {
errno = EFAULT;
return -1;
} else {
return static_cast<zmq::socket_poller_t *> (poller_)->signaler_fd ();
}
} }
// Peer-specific state // Peer-specific state
......
...@@ -195,6 +195,12 @@ void test_null_poller_pointers_wait_all_indirect () ...@@ -195,6 +195,12 @@ void test_null_poller_pointers_wait_all_indirect ()
EFAULT, zmq_poller_wait_all (&null_poller, &event, 1, 0)); EFAULT, zmq_poller_wait_all (&null_poller, &event, 1, 0));
} }
void test_null_poller_pointer_poller_fd ()
{
void *null_poller = NULL;
TEST_ASSERT_FAILURE_ERRNO (EFAULT, zmq_poller_fd (&null_poller));
}
void test_null_socket_pointers () void test_null_socket_pointers ()
{ {
void *poller = zmq_poller_new (); void *poller = zmq_poller_new ();
...@@ -269,6 +275,8 @@ void test_call_poller_fd_no_signaler () ...@@ -269,6 +275,8 @@ void test_call_poller_fd_no_signaler ()
TEST_ASSERT_FAILURE_ERRNO (EINVAL, zmq_poller_fd (poller)); TEST_ASSERT_FAILURE_ERRNO (EINVAL, zmq_poller_fd (poller));
TEST_ASSERT_SUCCESS_ERRNO (zmq_poller_destroy (&poller));
test_context_socket_close (socket); test_context_socket_close (socket);
} }
...@@ -284,6 +292,8 @@ void test_call_poller_fd () ...@@ -284,6 +292,8 @@ void test_call_poller_fd ()
TEST_ASSERT_SUCCESS_ERRNO (zmq_poller_fd (poller)); TEST_ASSERT_SUCCESS_ERRNO (zmq_poller_fd (poller));
TEST_ASSERT_SUCCESS_ERRNO (zmq_poller_destroy (&poller));
test_context_socket_close (socket); test_context_socket_close (socket);
} }
...@@ -656,6 +666,7 @@ int main (void) ...@@ -656,6 +666,7 @@ int main (void)
RUN_TEST (test_null_poller_pointers_wait_indirect); RUN_TEST (test_null_poller_pointers_wait_indirect);
RUN_TEST (test_null_poller_pointers_wait_all_direct); RUN_TEST (test_null_poller_pointers_wait_all_direct);
RUN_TEST (test_null_poller_pointers_wait_all_indirect); RUN_TEST (test_null_poller_pointers_wait_all_indirect);
RUN_TEST (test_null_poller_pointer_poller_fd);
RUN_TEST (test_null_socket_pointers); RUN_TEST (test_null_socket_pointers);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment