Commit Graph
42 Commits
Author SHA1 Message Date
Thomas Egerer 4dc72f5e57 enum: Extend printf hook to print flags
Signed-off-by: Thomas Egerer <[email protected]>
2015-03-03 13:41:49 +01:00
Thomas Egerer 875f7be5fc ha: Perform child rekeying outside of CHILD_SA enumerator
When rekey_child_sa is called while enumerating the children of an IKE_SA, and
the child to be rekeyed is redundant a QUICK_DELETE task is queued instead of a
QUICK_MODE task. This alters the IKE_SA's list of children (ike_sa_t::child_sas)
invalidating the current element of the child_sa_enumerator. The enumerate
function of linked_list_t will then advance to an element with unpredictable
contents most likely resulting in an segmentation violation. A similar behavior
should be observed when delete_child_sa is called.

This patch creates a list of protocol/spi values while holding the
child_sa_enumerator and performs the rekeying (deletion of redundant) chlidren
after releasing the enumerator.

Signed-off-by: Thomas Egerer <[email protected]>
2015-02-19 10:58:40 +01:00
Thomas Egerer 1201ddcbc5 ikev1: Don't inherit children if INITITAL_CONTACT was seen
Signed-off-by: Thomas Egerer <[email protected]>
2014-10-30 11:53:56 +01:00
Thomas Egerer 11b42933bf ikev1: Send INITIAL_CONTACT notify in Main Mode
We currently send the notify in Main Mode only, as it is explicitly not allowed
by RFC 2407 to send (unprotected) notifications in Aggressive Mode. To make
that work, we'd need to handle that notify in Aggressive Mode, which could
allow a MitM to inject such notifies and do some harm.

Signed-off-by: Thomas Egerer <[email protected]>
2014-10-30 11:53:56 +01:00
Thomas Egerer 8d80528a60 credmgr: Fix copy and paste error in add_validator
This won't hurt as long as sets and validators are of the same class.
But as soon as one of the object's class is changed this will cause
either a compile error (best option), or result (most likely) in a
crash.

Signed-off-by: Thomas Egerer <[email protected]>
2014-08-29 13:22:23 +02:00
Thomas Egerer f51c923f69 starter: Don't monitor child if debugger is attached
Signed-off-by: Thomas Egerer <[email protected]>
2014-08-08 09:59:57 +02:00
Thomas Egerer 1b9b228c41 unit-tests: Support strongswan.conf defined plugin list and base directory
tests.load and tests.plugindir to allow the specification of the plugins
to be loaded and the directory to load them from.

Signed-off-by: Thomas Egerer <[email protected]>
2014-04-30 17:22:48 +02:00
Thomas Egerer f406a5bf72 unit-tests: Allow configuration of libstrongswan via config
By setting the environment variable TESTS_STRONGSWAN_CONF, the unit tests can
be asked to load a configuration file, thus enabling the tester to make use of
the usual configuration settings.

Signed-off-by: Thomas Egerer <[email protected]>
2014-04-30 17:22:48 +02:00
Thomas Egerer 7acdebf6c0 settings: Avoid conf file parsing beyond allocated buffer
A valgrind analysis of libstrongswan revealed an invalid read of 1 in
the function starts_with(). A more thorough analysis proved this to be
true and showed that with a specially crafted config file (e.g. a single
'#'-character not followed by a newline), the parser might even
interpret the random memory contents following the allocated buffer as
part of the configuration file.
The way the parser is designed, it must be able to skip an inserted
'\0' and continue parsing. Since it is not able to skip two '\0'
characters, the 'fix' of allocating two more bytes than the size of the
parsed file and setting them to '\0' seems to be a safe bet.

Signed-off-by: Thomas Egerer <[email protected]>
2014-03-03 17:27:58 +01:00
Thomas Egerer b351acfed6 leak_detective: Assign return value of realloc to buf
If realloc return a pointer value different from the value to be
reallocated, a double free can occur in this context.

Signed-off-by: Thomas Egerer <[email protected]>
2014-02-10 17:23:54 +01:00
Thomas Egerer 50d292d7d8 man: Add documentation of the dhcp interface option
Signed-off-by: Thomas Egerer <[email protected]>
2014-01-20 16:40:34 +01:00
Thomas Egerer 3711f66e54 dhcp: Allow binding of socket to particular interface
In certain situations it is desirable to bind the send/receive sockets
for the DHCP address allocation to a particular interface. With this
patch the strongswan.conf option charon.plugins.dhcp.interface can be
used to restrict the DHCP communication to a configurable interface.

Signed-off-by: Thomas Egerer <[email protected]>
2014-01-20 16:40:34 +01:00
Thomas Egerer 568e302260 proposal: Add possibility to register custom proposal keyword parser
If a proposal string cannot be matched to a token using strcmp (e.g. if
you want to register a whole class of algorithms containing their ID,
like my_alg_2342), you can use the provided function to register a
parser that transforms the given string into a proposal token.

Signed-off-by: Thomas Egerer <[email protected]>
2014-01-20 16:40:34 +01:00
Thomas Egerer b190899473 ike_sa: Defer task manager destruction after child destruction
This patch exports the task manager's flush to allow flushing of all
queues with one function call from ike_sa->destroy. It allows the
access of intact children during task destructoin (see git-commit
e44ebdcf) and allows the access of the task manager in
child_state_change hook.

Signed-off-by: Thomas Egerer <[email protected]>
2014-01-16 14:16:13 +01:00
Thomas Egerer 7d938be9e9 ikev1: For PFS prefer DH group from IKE_SA over first configured
If PFS is configured for a CHILD_SA first try to create a list of
proposals with using DH group negotiated during phase 1. If the
resulting list is empty (i.e. the DH group(s) configured for PFS differ
from the one(s) configured for the IKE_SA), fall back to the first
configured DH group from the CHILD_SA.
This modificiation is due to the fact that it is likely that the peer
supports the same DH group for PFS it did already for the IKE_SA.
2013-09-10 10:28:32 +02:00
Thomas Egerer d68b8dfec4 Destroy active task list before queued tasks
Since active task's destruction might result in adopting tasks from a
rekeyed ike sa it seems better to first destroy the active task list and
then destroy all queued tasks. This way adoption is possible at all,
while otherwise the queued task list would be empty.
2012-01-18 10:06:54 +01:00
Thomas Egerer 64c4fd0a60 Always unlock mutex for installed policies in kernel-netlink plugin. 2011-12-14 18:17:49 +01:00
Thomas Egerer 72a1b2e308 Allow support for CA-certificate retrieval in scepclient
I think somehow this functionality got lost in the way from
strongswan-2.7.0...
2011-11-04 15:13:32 +01:00
Thomas Egerer 93818392cd Change order of ocsp uris when parsing a cert 2011-11-04 11:11:17 +01:00
Thomas Egerer 6e5e2762d3 Handle certificates being on hold in a CRL
Certificates which are set on hold in a CRL might be removed from any
subsequent CRL. Hence you cannot conclude that a certificate is revoked
for good in this case, you would try to retrieve an update CRL to see if
the certificate on hold is still on it or not.
2011-11-04 11:11:17 +01:00
Thomas Egerer c125d1ba13 Memwipe request after sa update, too 2011-11-04 11:11:17 +01:00
Thomas Egerer 42e2da606c Use chunk_clear to memwipe shared secret 2011-11-04 11:11:17 +01:00
Thomas Egerer dbd2169569 Change order of destroy/get_ref function calls
Since DESTROY_IF might destroy the peer_cfg, a get_ref on a freed object
is subject to fail.
2011-11-04 11:11:17 +01:00
Thomas Egerer c230885a07 Fix resource leak in x509_ocsp_response 2011-11-04 11:11:17 +01:00
Thomas Egerer dbfd1a63aa Extend xfrm_attr_type_names by newly added enum values 2011-11-04 11:11:17 +01:00
Thomas Egerer 2feb3d9e0b Remove obsolete values from builder_part_names
Adds removal of builder parts obsoleted with git commit
15177f5785.
2011-09-02 13:44:17 +02:00
Thomas Egerer 59965aaf96 pluto: Securely wipe quick mode keys from memory.
Keying material is derived in two separate steps for local and remote
endpoint. This allows us to securely wipe local/remote secrets
separately, too -- a precondition to wipe quick mode keys from memory in
a secure fashion.
2011-05-10 15:39:00 +02:00
Thomas Egerer 9e6bb93ab9 pluto: Securely wipe sensitive data from memory. 2011-05-10 15:19:46 +02:00
Thomas Egerer f2e2a40550 Fix potential use after free 2011-01-19 09:59:01 +01:00
Thomas Egerer 76ce213c43 Guarantee entry->other is set when calling put_connected_peers
Given the original intent of entry->host, the check for DoS attacks, it
can happen that this value remains NULL when an entry is created. This
is particularly awkward if put_connected_peers is called to check if a
connection to a given peer already exists, since it takes the address
family into consideration (git commit b74219d0) which is gleaned from
entry->host.
This patch guarantees that entry->other is a clone of host before
put_connected_peers is called.
2010-12-06 10:56:57 +01:00
Thomas Egerer e66420566c Do not checkin a previously destroyed SA 2010-11-16 10:25:33 +01:00
Thomas Egerer 8f927116be Extend connected peers by peer family
This allows for simultanious IPv4 and IPv6 tunnel for same peers with
matching identities.
2010-11-12 16:28:04 +01:00
Thomas Egerer e54e86cb49 Check if colliding rekey actually created an IKE_INIT
In some cases (especially if a child is half-open) the colliding
rekey-job might not have created the ike_init member. If so, the
nonce check fails with SIGSEGV.
2010-08-25 10:16:42 +02:00
Thomas Egerer 86a73f16ab Do not touch child from collision if peer deleted it 2010-08-03 10:32:38 +02:00
Thomas Egerer 5d2e159b41 Fix segfault on 'ipsec stroke up ]' command 2010-07-29 14:03:11 +02:00
Thomas Egerer 31d0efd7e9 Use enumerator for queued_tasks migration to avoid infinite loop 2010-06-30 13:24:43 +02:00
Thomas Egerer 6d61e334f7 Correct check of traffic selectors before destruction 2010-06-29 09:22:50 +02:00
Thomas Egerer 7f1eb89517 Migrate queued_tasks tasks, to avoid dangling pointers 2010-06-29 09:20:05 +02:00
Thomas Egerer 03ffa88531 Add extra information in debug output for IKE_SA check{out, in}
This output helps tracing checkout and checkin of IKE_SAs when there is
more than one IKE_SAs with the same name. I also added the type of
in-air-exchange to the debug output issued by the task_manager in case
a task initiation is delayed, came in handy for me.
2010-06-07 15:12:13 +02:00
Thomas Egerer 980f0eccd0 Fixed use of stack local variable outside of function scope 2010-03-31 16:44:31 +02:00
Thomas Egerer a47576bff7 Fixed undefined behavior in use of stack variable 2010-03-31 11:04:27 +02:00
Thomas Egerer d266e8953e lookup exclusion for several arbitrary routing tables 2010-03-17 10:08:02 +01:00