strongswan.git
6 years agosocket-default: Make sure sockets are open when checking with FD_ISSET
Tobias Brunner [Fri, 14 Jun 2013 15:25:16 +0000 (17:25 +0200)]
socket-default: Make sure sockets are open when checking with FD_ISSET

6 years agosocket-default: Properly initialize NAT-T port if opening regular socket failed
Tobias Brunner [Fri, 14 Jun 2013 14:41:33 +0000 (16:41 +0200)]
socket-default: Properly initialize NAT-T port if opening regular socket failed

6 years agoandroid: Forward initiator flag to libipsec when adding IPsec SA
Tobias Brunner [Thu, 13 Jun 2013 11:55:58 +0000 (13:55 +0200)]
android: Forward initiator flag to libipsec when adding IPsec SA

6 years agolibipsec: Add initiator flag to definition of ipsec_sa_mgr_t.add_sa()
Tobias Brunner [Thu, 13 Jun 2013 11:53:16 +0000 (13:53 +0200)]
libipsec: Add initiator flag to definition of ipsec_sa_mgr_t.add_sa()

6 years agoUse subset matching instead of is_contained_in() to select a child_cfg
Martin Willi [Thu, 13 Jun 2013 11:34:12 +0000 (13:34 +0200)]
Use subset matching instead of is_contained_in() to select a child_cfg

If one selector has a wider IP range than the other, but the other has a
wider port/protocol selector than the first one, none is completely contained
in the other. The check for a match using is_contained_in() therefore would
fail. Using get_subset() can handle such cases, fixing configuration selection.

6 years agoha: Fix CHILD_SA installation in ha_dispatcher after adding initiator flag
Tobias Brunner [Thu, 13 Jun 2013 11:17:55 +0000 (13:17 +0200)]
ha: Fix CHILD_SA installation in ha_dispatcher after adding initiator flag

6 years agokernel-interface: add an exchange initiator parameter to add_sa()
Martin Willi [Wed, 8 May 2013 08:31:06 +0000 (10:31 +0200)]
kernel-interface: add an exchange initiator parameter to add_sa()

This new flag gives the kernel-interface a hint how it should priorize the
use of newly installed SAs during rekeying.

Consider the following rekey procedure in IKEv2:

Initiator  ---    Responder

I1 -------CREATE-------> R1
I2 <------CREATE--------
   -------DELETE-------> R2
I3 <------DELETE--------

SAs are always handled as pairs, the following happens at the SA level:

  * Initiator starts the exchange at I1
  * Responder installs new SA pair at R1
  * Initiator installs new SA pair at I2
  * Responder removes old SA pair at R2
  * Initiator removes old SA pair at I3

This makes sure SAs get installed/removed overlapping during rekeying. However,
to avoid any packet loss, it is crucial that the new outbound SA gets
activated at the correct position:

  * as exchange initiator, in I2
  * as exchange responder, in R2

This should guarantee that we don't use the new outbound SA before the peer
could install its corresponding inbound SA.

The new parameter allows the kernel backend to install the new SA with
appropriate priorities, i.e. it should:

  * as exchange inititator, have the new outbound SA installed with higher
    priority than the old SA
  * as exchange responder, have the new outbound SA installed with lower
    priority than the old SA

While we could split up the SA installation at the responder, this approach
has another advantage: it allows the kernel backend to switch SAs based on
other criteria, for example when receiving traffic on the new inbound SA.

6 years agoMerge branch 'unique-sas'
Martin Willi [Tue, 11 Jun 2013 13:51:50 +0000 (15:51 +0200)]
Merge branch 'unique-sas'

Makes IKE_SA unique ID and CHILD_SA reqid counters atomic.

6 years agoikev1: keep vendor ID task alive during full Main/Aggressive Mode
Martin Willi [Thu, 6 Jun 2013 13:38:38 +0000 (15:38 +0200)]
ikev1: keep vendor ID task alive during full Main/Aggressive Mode

Fixes DPD with Cisco IOS sending the DPD vendor ID not in the first message.

6 years agoUse ref_get() to make sure IKE_SA unique IDs are unique
Martin Willi [Wed, 8 May 2013 13:19:52 +0000 (15:19 +0200)]
Use ref_get() to make sure IKE_SA unique IDs are unique

6 years agoMerge branch 'init-auth-fail'
Martin Willi [Tue, 11 Jun 2013 13:46:04 +0000 (15:46 +0200)]
Merge branch 'init-auth-fail'

Properly notifies the responder if authentication of an IKE_SA or installation
of a CHILD_SA fails as initiator, keeping SA state on peers consistent.

6 years agoUse ref_get() to make sure CHILD_SA reqids are unique
Martin Willi [Wed, 8 May 2013 13:18:50 +0000 (15:18 +0200)]
Use ref_get() to make sure CHILD_SA reqids are unique

6 years agoikev2: if installing a CHILD_SA as initiator fails, notify the responder
Martin Willi [Fri, 7 Jun 2013 09:35:43 +0000 (11:35 +0200)]
ikev2: if installing a CHILD_SA as initiator fails, notify the responder

6 years agoutils: ref_get() returns the new value of the reference counter
Martin Willi [Wed, 8 May 2013 13:07:09 +0000 (15:07 +0200)]
utils: ref_get() returns the new value of the reference counter

This allows us to use ref_get() for getting unique values.

6 years agoMerge branch 'scep-bind'
Martin Willi [Tue, 11 Jun 2013 13:42:23 +0000 (15:42 +0200)]
Merge branch 'scep-bind'

Extend fetcher interface by an option to specify a source IP, implement
it in the curl plugin and provide a --bind option in scepclient.

6 years agoikev2: raise LOCAL_AUTH_FAILED when receiving INFORMATIONAL with AUTH_FAILED
Martin Willi [Fri, 17 May 2013 08:36:40 +0000 (10:36 +0200)]
ikev2: raise LOCAL_AUTH_FAILED when receiving INFORMATIONAL with AUTH_FAILED

6 years agoscepclient: support a --bind option to fetch from a specific source IP
Martin Willi [Wed, 15 May 2013 14:59:34 +0000 (16:59 +0200)]
scepclient: support a --bind option to fetch from a specific source IP

6 years agoikev2: close an established IKE_SA when receiving AUTHENTICATION_FAILED
Martin Willi [Fri, 17 May 2013 08:30:13 +0000 (10:30 +0200)]
ikev2: close an established IKE_SA when receiving AUTHENTICATION_FAILED

RFC 5996 compatible implementations MAY send an INFORMATIONAL message
with an AUTHENTICATION_FAILED if the initiator failed to authenticate us.
Handle such a message like a DELETE for an IKE_SA.

6 years agocurl: add an option to fetch bound to a local source address
Martin Willi [Wed, 15 May 2013 14:34:12 +0000 (16:34 +0200)]
curl: add an option to fetch bound to a local source address

6 years agoikev2: if responder authentication fails, send AUTHENTICATION_FAILED
Martin Willi [Fri, 17 May 2013 08:22:00 +0000 (10:22 +0200)]
ikev2: if responder authentication fails, send AUTHENTICATION_FAILED

According to RFC 5996, we MAY send an INFORMATIONAL message having an
AUTHENTICATION_FAILED. We don't do any retransmits, though, but just close
the IKE_SA after one message has been sent, avoiding the danger that an
unauthenticated IKE_SA stays alive.

6 years agoAllow IPComp on NATed connections, both for IKEv1 and IKEv2
Martin Willi [Thu, 16 May 2013 11:32:48 +0000 (13:32 +0200)]
Allow IPComp on NATed connections, both for IKEv1 and IKEv2

While this was problematic in earlier releases, it seems that it works just
fine the way we handle compression now. So there is no need to disable it over
NATed connections or when using forceencaps.

6 years agofetcher: add missing "continue" when handling FETCH_CALLBACK
Martin Willi [Wed, 15 May 2013 14:27:15 +0000 (16:27 +0200)]
fetcher: add missing "continue" when handling FETCH_CALLBACK

6 years agoleak-detective: Resolve hooked functions during initialization
Tobias Brunner [Tue, 11 Jun 2013 13:38:56 +0000 (15:38 +0200)]
leak-detective: Resolve hooked functions during initialization

If uses of dlopen(), e.g. when loading plugins, produce errors an error
string could get allocated dynamically.  At this point realloc() might not
yet be resolved and when dlsym() is later called by leak detective to do
so the error string might get freed while leak detective is disabled and
real_free() will be called with a pointer into one of leak detective's
memory blocks instead of a pointer to the block itself, causing a SIGSEGV.

6 years agoProperly compare CHILD_SAs during rekey collision
Tobias Brunner [Fri, 31 May 2013 17:01:05 +0000 (19:01 +0200)]
Properly compare CHILD_SAs during rekey collision

The previous code did not properly check for the situation when the
DELETE for a redundant CHILD_SA created by a responder during a
CHILD_SA rekey collision arrives before the responder's answer to the
initiator's winning CREATE_CHILD_SA request.

6 years agoMerge branch 'plugin-loader'
Tobias Brunner [Tue, 11 Jun 2013 09:18:33 +0000 (11:18 +0200)]
Merge branch 'plugin-loader'

Improves how plugin loader resolves dependencies between plugins.  The
old loader had problems if plugins had dependencies on features provided
by plugins listed later in the plugin list.  For instance, it was not
possible to use the X.509 implementation provided by the x509 plugin
while using all the crypto primitives provided by the openssl plugin.
Because the x509 plugin has a dependency on SHA1, the old loader skipped
that plugin until it loaded a SHA1 implementation.  Because the loader
also loaded all features with resolved dependencies provided by a specific
plugin it would, while loading the openssl plugin's SHA1 implementation,
also load its X.509 implementation.  So to use the x509 plugin it was
necessary to load the sha1 plugin before it so that its dependencies
could be properly resolved.

With the new implementation the plugins don't have to be in a specific
order to resolve dependencies.  But the order still matters if two
plugins provide the same feature.

Also, support for the get_features() interface was added to all plugins.

6 years agoRemoved stray *_plugin_create() declarations from header files
Tobias Brunner [Mon, 10 Jun 2013 16:33:49 +0000 (18:33 +0200)]
Removed stray *_plugin_create() declarations from header files

6 years agoeap-radius: Do initialization in a plugin feature callback
Tobias Brunner [Mon, 10 Jun 2013 16:15:40 +0000 (18:15 +0200)]
eap-radius: Do initialization in a plugin feature callback

6 years agoRefactored plugin-loader with improved dependency resolution
Tobias Brunner [Sat, 8 Jun 2013 13:46:33 +0000 (15:46 +0200)]
Refactored plugin-loader with improved dependency resolution

With the new implementation the plugins don't have to be listed in any
special order, dependencies are properly resolved.  The order only
matters if two plugins provide the same feature.

6 years agoandroid-log: Use plugin features
Tobias Brunner [Sat, 8 Jun 2013 09:05:02 +0000 (11:05 +0200)]
android-log: Use plugin features

6 years agoandroid-dns: Use plugin features to register attribute handler
Tobias Brunner [Sat, 8 Jun 2013 09:03:42 +0000 (11:03 +0200)]
android-dns: Use plugin features to register attribute handler

6 years agomaemo: Use plugin features
Tobias Brunner [Sat, 8 Jun 2013 09:02:26 +0000 (11:02 +0200)]
maemo: Use plugin features

6 years agomedsrv: Use plugin features with dependency on database implementation
Tobias Brunner [Sat, 8 Jun 2013 09:00:48 +0000 (11:00 +0200)]
medsrv: Use plugin features with dependency on database implementation

6 years agomedcli: Use plugin features with dependency on database implementation
Tobias Brunner [Sat, 8 Jun 2013 08:56:44 +0000 (10:56 +0200)]
medcli: Use plugin features with dependency on database implementation

6 years agowhitelist: Use plugin features to register listener
Tobias Brunner [Sat, 8 Jun 2013 08:55:42 +0000 (10:55 +0200)]
whitelist: Use plugin features to register listener

6 years agoupdown: Use plugin features to register listener and attribute handler
Tobias Brunner [Sat, 8 Jun 2013 08:47:38 +0000 (10:47 +0200)]
updown: Use plugin features to register listener and attribute handler

6 years agounity: Use plugin features to register listener and attribute handler/provider
Tobias Brunner [Sat, 8 Jun 2013 08:44:56 +0000 (10:44 +0200)]
unity: Use plugin features to register listener and attribute handler/provider

6 years agounit-tester: Use plugin features
Tobias Brunner [Sat, 8 Jun 2013 08:41:39 +0000 (10:41 +0200)]
unit-tester: Use plugin features

6 years agouci: Use plugin features to register backend and credential set
Tobias Brunner [Sat, 8 Jun 2013 08:34:44 +0000 (10:34 +0200)]
uci: Use plugin features to register backend and credential set

6 years agosystime-fix: Use plugin features to register validator
Tobias Brunner [Sat, 8 Jun 2013 08:34:31 +0000 (10:34 +0200)]
systime-fix: Use plugin features to register validator

6 years agosmp: Use plugin features
Tobias Brunner [Sat, 8 Jun 2013 08:29:09 +0000 (10:29 +0200)]
smp: Use plugin features

6 years agoradattr: Use plugin features to register listener
Tobias Brunner [Sat, 8 Jun 2013 08:25:37 +0000 (10:25 +0200)]
radattr: Use plugin features to register listener

6 years agolookip: Use plugin features to register listener
Tobias Brunner [Sat, 8 Jun 2013 08:22:23 +0000 (10:22 +0200)]
lookip: Use plugin features to register listener

6 years agoled: Use plugin features to register listener
Tobias Brunner [Sat, 8 Jun 2013 08:18:00 +0000 (10:18 +0200)]
led: Use plugin features to register listener

6 years agotest-vectors: Use plugin features
Tobias Brunner [Fri, 7 Jun 2013 17:35:24 +0000 (19:35 +0200)]
test-vectors: Use plugin features

6 years agorevocation: Use plugin features with soft dependencies on fetcher and en-/decoding
Tobias Brunner [Fri, 7 Jun 2013 17:31:51 +0000 (19:31 +0200)]
revocation: Use plugin features with soft dependencies on fetcher and en-/decoding

6 years agopadlock: Use plugin features to properly register algorithms
Tobias Brunner [Fri, 7 Jun 2013 17:23:11 +0000 (19:23 +0200)]
padlock: Use plugin features to properly register algorithms

6 years agopkcs11: Use plugin_features_add() in get_features()
Tobias Brunner [Fri, 7 Jun 2013 17:22:26 +0000 (19:22 +0200)]
pkcs11: Use plugin_features_add() in get_features()

6 years agoplugin-feature: Added helper function to extend arrays of plugin features
Tobias Brunner [Fri, 7 Jun 2013 17:19:22 +0000 (19:19 +0200)]
plugin-feature: Added helper function to extend arrays of plugin features

6 years agoconstraints: Use plugin features with soft dependency on X.509 decoding
Tobias Brunner [Fri, 7 Jun 2013 17:01:40 +0000 (19:01 +0200)]
constraints: Use plugin features with soft dependency on X.509 decoding

6 years agoblowfish: Use plugin features to properly register crypter
Tobias Brunner [Fri, 7 Jun 2013 16:57:15 +0000 (18:57 +0200)]
blowfish: Use plugin features to properly register crypter

6 years agoresolve: Use plugin features to register attribute handler
Tobias Brunner [Fri, 7 Jun 2013 16:54:36 +0000 (18:54 +0200)]
resolve: Use plugin features to register attribute handler

6 years agoattr: Use plugin features to register attribute provider
Tobias Brunner [Fri, 7 Jun 2013 16:52:33 +0000 (18:52 +0200)]
attr: Use plugin features to register attribute provider

6 years agoipseckey: Allow en-/disabling at runtime using plugin reload feature
Tobias Brunner [Fri, 7 Jun 2013 16:38:16 +0000 (18:38 +0200)]
ipseckey: Allow en-/disabling at runtime using plugin reload feature

6 years agoipseckey: Use plugin features and depend on RESOLVER
Tobias Brunner [Fri, 7 Jun 2013 16:22:41 +0000 (18:22 +0200)]
ipseckey: Use plugin features and depend on RESOLVER

Also fixed a double-free of the resolver instance.

6 years agounbound: Use plugin features and provide RESOLVER
Tobias Brunner [Fri, 7 Jun 2013 16:16:08 +0000 (18:16 +0200)]
unbound: Use plugin features and provide RESOLVER

6 years agoplugin-feature: Add feature for DNSSEC-enabled resolvers
Tobias Brunner [Fri, 7 Jun 2013 16:11:46 +0000 (18:11 +0200)]
plugin-feature: Add feature for DNSSEC-enabled resolvers

6 years agoha: Use plugin features to register listeners and attribute provider
Tobias Brunner [Fri, 7 Jun 2013 15:58:12 +0000 (17:58 +0200)]
ha: Use plugin features to register listeners and attribute provider

6 years agofarp: Use plugin features to register listener
Tobias Brunner [Fri, 7 Jun 2013 15:50:12 +0000 (17:50 +0200)]
farp: Use plugin features to register listener

6 years agoerror-notify: Use plugin features to register listener
Tobias Brunner [Fri, 7 Jun 2013 15:46:43 +0000 (17:46 +0200)]
error-notify: Use plugin features to register listener

6 years agoduplicheck: Use plugin features to register listener
Tobias Brunner [Fri, 7 Jun 2013 15:43:41 +0000 (17:43 +0200)]
duplicheck: Use plugin features to register listener

6 years agocoupling: Use plugin features and soft depend on SHA1
Tobias Brunner [Fri, 7 Jun 2013 15:37:13 +0000 (17:37 +0200)]
coupling: Use plugin features and soft depend on SHA1

6 years agocertexpire: Use plugin features to register listener
Tobias Brunner [Fri, 7 Jun 2013 15:19:13 +0000 (17:19 +0200)]
certexpire: Use plugin features to register listener

6 years agoaddrblock: Use plugin features with soft dependency on X.509 decoding
Tobias Brunner [Fri, 7 Jun 2013 13:45:02 +0000 (15:45 +0200)]
addrblock: Use plugin features with soft dependency on X.509 decoding

6 years agodhcp: Use plugin features with dependency to RNG implementation
Tobias Brunner [Fri, 7 Jun 2013 13:35:47 +0000 (15:35 +0200)]
dhcp: Use plugin features with dependency to RNG implementation

6 years agosql: Use plugin features with dependency to database backend
Tobias Brunner [Fri, 7 Jun 2013 13:14:52 +0000 (15:14 +0200)]
sql: Use plugin features with dependency to database backend

6 years agoattr-sql: Use plugin features with dependency to database backend
Tobias Brunner [Fri, 7 Jun 2013 13:07:39 +0000 (15:07 +0200)]
attr-sql: Use plugin features with dependency to database backend

6 years agoplugin-feature: Function added to exactly compare plugin features
Tobias Brunner [Fri, 7 Jun 2013 12:44:52 +0000 (14:44 +0200)]
plugin-feature: Function added to exactly compare plugin features

6 years agoSocket plugins soft depend on the kernel-ipsec plugin feature
Tobias Brunner [Fri, 7 Jun 2013 12:41:12 +0000 (14:41 +0200)]
Socket plugins soft depend on the kernel-ipsec plugin feature

On most platforms calls to methods to bypass the IKE sockets and enabling
UDP decapsulation are required.

6 years agoMerge branch 'unit-tests'
Tobias Brunner [Tue, 11 Jun 2013 09:07:43 +0000 (11:07 +0200)]
Merge branch 'unit-tests'

Adds a test runner and several test suites for libstrongswan.
Also adds an option to produce a test coverage report.

Several bugs were fixed in the process and chunk_hash() was replaced
with an improved implementation based on SipHash-2-4 (with a randomly
allocated key to prevent hash flooding attacks).

6 years agoSuppress log messages during tests
Tobias Brunner [Wed, 5 Jun 2013 14:34:04 +0000 (16:34 +0200)]
Suppress log messages during tests

6 years agoRemove explicit leak detective checks as these are now done for all tests
Tobias Brunner [Wed, 5 Jun 2013 12:14:12 +0000 (14:14 +0200)]
Remove explicit leak detective checks as these are now done for all tests

6 years agoEnable leak detective for all test cases
Tobias Brunner [Wed, 5 Jun 2013 12:01:40 +0000 (14:01 +0200)]
Enable leak detective for all test cases

6 years agoAdded tests for bio_writer_t
Tobias Brunner [Tue, 4 Jun 2013 16:29:06 +0000 (18:29 +0200)]
Added tests for bio_writer_t

6 years agoEnsure buffer in bio_writer_t is properly increased
Tobias Brunner [Tue, 4 Jun 2013 15:29:40 +0000 (17:29 +0200)]
Ensure buffer in bio_writer_t is properly increased

The previous code was problematic if bufsize/increase was smaller than 8
and an u_int64_t was written when the buffer was too small.  Also, for
large chunks and small bufsizes realloc() was called several times
instead of just once.

6 years agoAdded tests for bio_reader_t
Tobias Brunner [Tue, 4 Jun 2013 14:25:22 +0000 (16:25 +0200)]
Added tests for bio_reader_t

6 years agoAdd getter for the number of leaks to leak_detective_t
Tobias Brunner [Tue, 4 Jun 2013 14:21:48 +0000 (16:21 +0200)]
Add getter for the number of leaks to leak_detective_t

6 years agoAdded tests for utils/enum.c
Tobias Brunner [Mon, 3 Jun 2013 16:58:14 +0000 (18:58 +0200)]
Added tests for utils/enum.c

6 years agoGracefully handle NULL as argument for enum_from_name()
Tobias Brunner [Mon, 3 Jun 2013 16:45:57 +0000 (18:45 +0200)]
Gracefully handle NULL as argument for enum_from_name()

6 years agoAdditional tests for identification_t added
Tobias Brunner [Thu, 28 Mar 2013 15:53:07 +0000 (16:53 +0100)]
Additional tests for identification_t added

6 years agoFail DN parsing if OID is unterminated
Tobias Brunner [Mon, 3 Jun 2013 15:30:40 +0000 (17:30 +0200)]
Fail DN parsing if OID is unterminated

This is the case if the last OID is not followed by a = or if the string
starts with a =.

6 years agoFix DN printing if last RDN has an empty value
Tobias Brunner [Mon, 3 Jun 2013 14:41:45 +0000 (16:41 +0200)]
Fix DN printing if last RDN has an empty value

6 years agoFix DN parsing if last RDN has an empty value
Tobias Brunner [Mon, 3 Jun 2013 13:53:46 +0000 (15:53 +0200)]
Fix DN parsing if last RDN has an empty value

6 years agoFix output of ASN.1 GN
Tobias Brunner [Tue, 23 Apr 2013 10:06:54 +0000 (12:06 +0200)]
Fix output of ASN.1 GN

6 years agoUse chunk_from_str in identification_from_string
Tobias Brunner [Thu, 28 Mar 2013 15:50:36 +0000 (16:50 +0100)]
Use chunk_from_str in identification_from_string

We always have a non-empty string in those cases as "" is now handled
as ID_ANY.

6 years agoUse local variable in chunk_from_str()
Tobias Brunner [Thu, 28 Mar 2013 15:33:39 +0000 (16:33 +0100)]
Use local variable in chunk_from_str()

This allows using strdup() or other string functions as argument
without calling them twice.

6 years agoParse empty string as ID_ANY
Tobias Brunner [Thu, 28 Mar 2013 15:30:29 +0000 (16:30 +0100)]
Parse empty string as ID_ANY

6 years agoAdded tests for utils/utils.[ch]
Tobias Brunner [Thu, 28 Mar 2013 09:58:09 +0000 (10:58 +0100)]
Added tests for utils/utils.[ch]

6 years agoAllow memstr() to be called with NULL arguments
Tobias Brunner [Thu, 28 Mar 2013 13:12:53 +0000 (14:12 +0100)]
Allow memstr() to be called with NULL arguments

6 years agoRemoved unused clalloc() function
Tobias Brunner [Thu, 28 Mar 2013 10:03:26 +0000 (11:03 +0100)]
Removed unused clalloc() function

6 years agotimeval_add_ms() fixed
Tobias Brunner [Thu, 28 Mar 2013 09:25:11 +0000 (10:25 +0100)]
timeval_add_ms() fixed

1000000us are exactly 1s so.

6 years agoAdditional tests for chunk_t
Tobias Brunner [Wed, 27 Mar 2013 18:56:14 +0000 (19:56 +0100)]
Additional tests for chunk_t

6 years agoAlso capture coverage data for tests but filter them from the result
Tobias Brunner [Wed, 27 Mar 2013 16:41:04 +0000 (17:41 +0100)]
Also capture coverage data for tests but filter them from the result

Otherwise calls from test cases to static inline functions are not captured.

6 years agoAdd tests for lib->get|set
Tobias Brunner [Wed, 27 Mar 2013 15:35:28 +0000 (16:35 +0100)]
Add tests for lib->get|set

6 years agoRemove dead code in token enumerator
Tobias Brunner [Wed, 27 Mar 2013 15:15:10 +0000 (16:15 +0100)]
Remove dead code in token enumerator

Since we always search for the nearest separator (and strip them from
the front of the next token) there can't be any separators left at the
end of a token.

6 years agoAdditional and improved enumerator_t tests
Tobias Brunner [Wed, 27 Mar 2013 14:35:19 +0000 (15:35 +0100)]
Additional and improved enumerator_t tests

6 years agoTest remove and remove_at of hashtable_t if all items are in the same bucket
Tobias Brunner [Wed, 27 Mar 2013 13:45:07 +0000 (14:45 +0100)]
Test remove and remove_at of hashtable_t if all items are in the same bucket

6 years agoAdd test cases for invoke_* and clone_* of linked_list_t
Tobias Brunner [Wed, 27 Mar 2013 13:10:12 +0000 (14:10 +0100)]
Add test cases for invoke_* and clone_* of linked_list_t

6 years agoImprove tests for linked_list_t.replace()
Tobias Brunner [Wed, 27 Mar 2013 12:27:19 +0000 (13:27 +0100)]
Improve tests for linked_list_t.replace()

6 years agoAdd additional tests for linked_list_t
Tobias Brunner [Wed, 27 Mar 2013 12:22:07 +0000 (13:22 +0100)]
Add additional tests for linked_list_t

6 years agoImproved test for linked_list_t.insert_before()
Tobias Brunner [Wed, 27 Mar 2013 12:21:52 +0000 (13:21 +0100)]
Improved test for linked_list_t.insert_before()