mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-17 16:43:58 +00:00
Problem: No invalid pointer handling for zmq_poller_fd
Solution: Add some and document it.
This commit is contained in:
parent
19dd8195be
commit
cdbe120738
@ -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_,
|
|||||||
|
|
||||||
int zmq_poller_fd (void *poller_)
|
int zmq_poller_fd (void *poller_)
|
||||||
{
|
{
|
||||||
|
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 ();
|
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 ()
|
|||||||
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 ()
|
|||||||
|
|
||||||
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 ()
|
|||||||
|
|
||||||
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)
|
|||||||
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);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user