0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-11-15 22:41:12 +01:00
construct/rb
Aaron Jones 3fccd78d32
openssl: Avoid use-after-free when rehashing fails to load new files
Commit cf12678 introduced a fix for issue #186 by freeing the old SSL_CTX
structure before constructing a new one, which could disconnect existing
clients otherwise.

Unfortunately, the freeing is done first, which means that if setting up
a new structure fails for any reason, there will be no usable structures
left, but they are still referenced.

This fix moves the freeing to the end of the function, using intermediate
new variables in the meantime. This problem was discovered while testing
against OpenSSL 1.1.0 RC6.
2016-08-12 13:37:37 +00:00
..
arc4random.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
balloc.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
commio.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
crypt.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
devpoll.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
dictionary.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
epoll.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
event.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
export-syms.txt Refactor repository layout. 2016-07-21 20:51:02 -07:00
format.cc rb: import formatter library 2016-07-31 17:55:43 -05:00
gnutls.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
helper.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
kqueue.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
linebuf.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
Makefile.am rb: remove export-syms.txt for now 2016-07-31 18:06:26 -05:00
mbedtls.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
mbedtls_embedded_data.h Refactor repository layout. 2016-07-21 20:51:02 -07:00
nossl.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
openssl.c openssl: Avoid use-after-free when rehashing fails to load new files 2016-08-12 13:37:37 +00:00
patricia.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
poll.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
ports.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
radixtree.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
rawbuf.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
rb.cc Convert IRCd to C++ 2016-07-22 19:46:27 -07:00
README.md Refactor repository layout. 2016-07-21 20:51:02 -07:00
select.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
sigio.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
terminate.cc Convert IRCd to C++ 2016-07-22 19:46:27 -07:00
tools.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
unix.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
version.c Refactor repository layout. 2016-07-21 20:51:02 -07:00
win32.c Refactor repository layout. 2016-07-21 20:51:02 -07:00

librb

This is based on libratbox, the common runtime support code in ircd-ratbox. It has significant modifications and is no longer compatible with libratbox itself (nor can be used as a dropin replacement), so we renamed it.

original libratbox notes

  1. Most of this code isn't anywhere near threadsafe at this point. Don't hold your breath on this either.
  2. The linebuf code is designed to deal with pretty much 512 bytes per line and that is it. Anything beyond that length unless in raw mode, gets discard. For some non-irc purposes, this can be a problem, but for ircd stuff its fine.
  3. The helper code when transmitting data between helpers, the same 512 byte limit applies there as we recycle the linebuf code for this.