Simon Giesecke
af7df64ae7
Problem: mask and to_string member functions of tcp_address_mask_t are not referenced
...
Solution: remove them
2020-09-04 15:51:43 +02:00
Simon Giesecke
eb7b7db05d
Problem: assert used instead of zmq_assert
...
Solution: replace by zmq_assert
2020-09-04 10:58:16 +02:00
Luca Boccassi
97f8274129
Problem: setsockopt of CURVE key ignores parameter length
...
Solution: create std::string using length to avoid overflow
2020-08-23 13:47:17 +01:00
Luca Boccassi
2fb04c1018
Problem: ZMQ_METADATA setsockopt ignores length and assumes nUL-terminated string
...
Solution: use length too
2020-08-22 17:01:10 +01:00
Luca Boccassi
b84e164698
Problem: zmq_z85_decode doesn't check its input length
...
Solution: do it
2020-08-21 16:03:57 +01:00
Luca Boccassi
a4dbdb614e
Problem: some platforms do not have strnlen
...
Solution: move compat redefinition to compat.hpp header so that
it can be used from msg.cpp
2020-08-21 14:39:08 +01:00
Luca Boccassi
b02bdd566a
Problem: ws_engine leaks memory if Sec-WebSocket-Protocol header passed multiple times
...
Solution: ensure it's passed only once
2020-08-16 22:35:42 +01:00
Luca Boccassi
c733067d6d
Problem: use-after-free in WS
...
Solution: bail out of the stream engine out_event if ws_engine raises
an error
2020-08-15 14:31:09 +01:00
Luca Boccassi
110551d5df
Problem: formatting errors
...
Solution: apply clang-format-diff
2020-08-15 12:26:14 +01:00
Luca Boccassi
1668432894
Problem: WS might use handshake buffer for data
...
Solution: check for it before reusing it to avoid overflows
2020-08-15 12:25:52 +01:00
Stéphane Valès
3da6fde592
Problem : if socket is invalid for any reason, as_socket_base_t() will return NULL and 'as_socket_base_t (items_[i].socket)->is_thread_safe ()' will crash ( #4004 )
...
* Problem : if socket is invalid for any reason, as_socket_base_t() will return NULL and 'as_socket_base_t (items_[i].socket)->is_thread_safe ()' will crash
Solution: expand the code to test the returned value from as_socket_base_t() before calling is_thread_safe() and make zmq_poll() return -1 if as_socket_base_t() returned NULL.
NB: this occurred on the destruction of a SUB socket while running a zloop and without previously calling zloop_reader_set_tolerant and zloop_reader_end. When entering zmq_poll, the PUB socket was already destroyed but still registered in the poll items.
NB: making zmq_poll return -1 is OK as it is what happens anyway, and errno is properly set to ENOTSOCK by as_socket_base_t() when it returns NULL.
Co-authored-by: Stéphane Valès <stephane@vales.fr@users.noreply.github.com>
2020-08-07 09:13:52 +01:00
Davit Kalantaryan
0a424486a0
Modifications to compile code for WINDOWS ARM and ARM64 ( #4003 )
...
* Modifications to compile code for WINDOWS ARM and ARM64
[why]
In order to compile ZMQ related software on WINDOWS ARM
[how]
Replaced code in the file clock.cpp around the line 240.
Added intrinsics for ARM to replace '__rdtsc'
[todo]
Find proper tick counter query for ARM64 (see file:clock.cpp,line:~250)
* RELICENSEing
[why]
To make usage of changed code properly usable by libzmq project team
[how]
Added file /RELICENSE/kalantar.md with necessary information
2020-08-06 17:41:15 +01:00
Luca Boccassi
7deb8ded43
Merge pull request #3996 from tarmo/xpub-unmatch
...
Problem: XPUB keeps matched pipes between failed non-blocking sends
2020-07-29 17:35:18 +01:00
Tarmo Tänav
27bf9bf7d0
Problem: XPUB keeps matched pipes between failed non-blocking sends
...
Solution: always unmatch all pipes before matching for an initial
message part.
2020-07-29 16:35:43 +03:00
Luca Boccassi
4dd504abeb
Merge pull request #3973 from bluca/fuzzers
...
Problem: test_security_zap occasionally segfaults
2020-06-30 16:02:04 +01:00
Doron Somech
fb852fd3e7
problem: pthread_cond_timedwait sometimes fail with EINVAL
...
Solution: fix rounding error and assert if the clock_gettime fails
2020-06-28 17:02:38 +03:00
Luca Boccassi
350b4b34f4
Problem: test_security_zap occasionally segfaults
...
Solution: check if a session's _pipe has been allocated before using
it, since as a consequence of creating the pipes after the handshake
it's no longer guaranteed to be there.
Fixes #3971
2020-06-28 13:37:07 +01:00
Luca Boccassi
1ddfeb56ec
Problem: formatting errors
...
Solution: run make clang-format-diff
2020-06-26 23:45:39 +01:00
Bill Torpey
c04f6581e0
rebase reconnect-redux on master ( #3960 )
...
* add option to stop reconnecting on failed handshake
2020-06-26 23:41:44 +01:00
Bill Torpey
c7aef56048
- resolve FPE when ZMQ_RECONNECT_IVL == 0
2020-06-26 16:16:31 +01:00
Luca Boccassi
ab301ebf79
Problem: mtrie use of non-tail recursion leads to stack overflow
...
Solution: convert add and rm functions to iterative algorithms
2020-06-16 21:10:59 +01:00
Luca Boccassi
e0e3ce081e
Problem: XPUB treats non-sub/cancel as sub/cancel
...
Solution: only process for sub/cancel if the messages are actually sub/cancel.
Regression introduced by cf9ccbb which tried to skip non-sub/cancel processing
for PUB.
2020-06-16 21:05:26 +01:00
Luca Boccassi
1d2af8d388
Problem: formatting error in ip.cpp
...
Solution: fix it
2020-06-15 23:47:35 +01:00
Jovan Bunjevacki
c32462cde0
Small fix.
2020-05-30 20:30:23 +02:00
Luca Boccassi
cf9ccbbd37
Problem: metadata is stored for PUB sockets and never processed
...
Solution: do not store user messages when the socket type is PUB, they
will never be processed
2020-05-25 15:49:32 +01:00
Luca Boccassi
821ab88f96
Problem: XPUB leaks unprocessed metadata on close
...
Solution: dereference and delete any metadata object left in memory
2020-05-25 15:49:32 +01:00
Luca Boccassi
38349198a6
Problem: MSAN complains about uninitialised buffers in CURVE greetings
...
Solution: memset some of the CURVE greetings buffers. Most likely false
positives, but easier to fix here than convince Clang of being wrong.
2020-05-24 14:26:14 +01:00
Jovan Bunjevacki
2887c0fbb1
Problem: Usage of invalidated iterator of _timers container in zmq::poller_base_t::execute_timers ().
...
Solution: Safe iteration through _timers container, valid only for std::multimap (currently it is).
2020-05-20 15:03:10 +02:00
Luca Boccassi
55dfa239ff
Problem: build fails with Clang 10
...
Solution: wrap generic_mtrie_t in zmq namespace
2020-05-17 15:01:51 +01:00
Luca Boccassi
dccf1723cc
Problem: invalid address results in out-of-range string access
...
Solution: check for zone string length before using it in ip_resolver
It turns out std::string::at does not check for string length before
dereferencing
2020-05-16 13:40:55 +01:00
Luca Boccassi
6815138501
Problem: unfinished message can be leaked by client pipe
...
When a pipe processes a delimiter and is already not in active state but still
has an unfinished message, the message is leaked.
Solution: issue a rollback before losing the reference to the pipe.
2020-05-15 18:19:38 +01:00
Doron Somech
e7f0090b16
problem: zeromq connects peer before handshake is completed
...
Solution: delay connecting the peer pipe until the handshake is completed
2020-05-13 19:36:13 +03:00
Luca Boccassi
be77a8d932
Merge pull request #3903 from bjovke/msvc_cplusplus
...
Problem: MSVC always reports __cplusplus macro value as 199711L. Some…
2020-05-09 10:50:43 +01:00
Doron Somech
3da84c6d06
problem: no thread-safe alternative for ZMQ_PAIR
...
Solution: create ZMQ_CHANNEL, the thread safe alternative
2020-05-09 08:49:01 +03:00
Jovan Bunjevacki
804d528114
Problem: MSVC always reports __cplusplus macro value as 199711L. Some newer features are switched off even with latest Visual studio version.
...
Solution: Add check for MSVC version along with __cplusplus check.
2020-05-09 01:20:47 +02:00
Luca Boccassi
397ac80850
Problem: ZMTP v1 static allocator is needlessly resized
...
Solution: don't do it, resizing the shared allocator makes sense
as it can take the message buff for zero copy, but the static allocator
is fixed
2020-05-08 18:18:34 +01:00
Luca Boccassi
7df845fb82
Problem: memory sanitizer detects uninitialised global variable usage
...
Solution: revert "Problem: complexity of start_connecting"
https://travis-ci.org/github/google/oss-fuzz/jobs/680325364
This reverts commit c590873ff7a81a3c373884eab37cbe2068fbfe4a.
Conflicts:
src/session_base.cpp
src/session_base.hpp
2020-05-04 22:02:04 +01:00
Luca Boccassi
60ccf54fa6
Problem: sub/cancel broken with CURVE
...
Solution: handle downgrading sub/cancel messages in CURVE engine
2020-05-03 17:42:53 +01:00
Luca Boccassi
534580c31d
Merge pull request #3893 from gummif/gfa/blob-ref
...
Problem: extra blob copy
2020-05-02 14:26:06 +01:00
Gudmundur Adalsteinsson
47a080aac0
Problem: extra blob copy
...
Solution: use reference tag
2020-05-01 22:27:44 +00:00
Gudmundur Adalsteinsson
284d90a436
Problem: unnecessary event struct and UB
...
Solution: simply use zmq_poller_event_t
2020-05-01 22:12:30 +00:00
Gudmundur Adalsteinsson
e18772f942
Problem: -1 used for invalid socket
...
Solution: use retired_fd instead
2020-04-29 17:12:08 +00:00
Luca Boccassi
1443c0e787
Merge pull request #3887 from gummif/gfa/unify-fd
...
Problem: Multiple fd_t definitions
2020-04-28 13:32:52 +01:00
Gudmundur Adalsteinsson
d426f2ab0c
Problem: Multiple fd_t definitions
...
Solution: Unify definition
2020-04-28 08:50:18 +00:00
Gudmundur Adalsteinsson
bf22a9f3e9
Problem: Poller event fd unspecified
...
Solution: Specify an invalid file descriptor for socket events
2020-04-27 21:00:45 +00:00
Luca Boccassi
a525323757
Merge pull request #3878 from Eelis/master
...
Problem: out-of-bounds array access in socket_poller::check_events.
2020-04-20 12:50:41 +01:00
Luca Boccassi
f00f464566
Merge pull request #3866 from gummif/gfa/poller-refactoring
...
Problem: poller item lookup can be simplified
2020-04-20 09:34:57 +01:00
Eelis van der Weegen
063f14a940
Problem: out-of-bounds array access in socket_poller::check_events.
2020-04-20 03:22:31 +02:00
Gudmundur Adalsteinsson
0b32fb3629
Problem: poller item lookup can be simplified
...
Solution: Extract generic find function
2020-04-19 20:53:56 +00:00
Doron Somech
6ca07a30e3
problem: checking the wrong socket when sending hello msg
2020-04-18 22:45:49 +03:00