This commit resolves issue #46. The GCM mode was using the wrong master SALT length. The master SALT should be 96 bits instead of 112 bits. Note, GCM mode uses the legacy CTR mode for the KDF. The legagacy CTR mode cipher implementations assume a 112 bit SALT. Changes to the cipher abstraction layer API are required to provide the ability to specify the SALT length. For now this commit modifies the SRTP layer to ensure the SALT is zero-appended before initializing the KDF. This commit also provides public definitions for the GCM cipher suite master key sizes to avoid confusion for application developers.
The real problem was switch_xml_toxml_buf() was actually temporarily modifying the xml structure being searialized to make it appaer to be a root structure then serializing it and restoring the pointers. This caused a non-threadsafe operation when some other thread was scanning the same xml structure.
This patch removes the modification and instead passes a new arg to switch_xml_toxml_r indicating to treat the structure as if it were a root structure.
This bug has been present since the induction of xml into FS.
James Le Cuirot [Fri, 28 Mar 2014 22:20:40 +0000 (22:20 +0000)]
Fix detection of libedit on BSD
Since libedit originates from NetBSD, this and other BSDs use the
official version while Linux distributions tend to use the
autotoolized fork. The official version does not install a .pc file so
we cannot rely exclusively on pkg-config for detection.
FS-6413 --resolve with this patch you will need to make sure the boxes have the clocks synced and both started inside the same occurence of the most recent new year.
Michael Jerris [Mon, 31 Mar 2014 13:48:02 +0000 (09:48 -0400)]
also push PKG_CONFIG_SYSROOT_DIR and set some test results that can not be figured out during cross compile explicitly for arm-linux-gnueabi*|arm-*-linux-gnueabi*
Travis Cross [Fri, 28 Mar 2014 15:17:00 +0000 (15:17 +0000)]
Require libedit-dev be available unless disabled
Previously we enabled libedit support opportunistically if it was
neither enabled nor disabled explicitly. But this can result in
people being confused by libedit features not being available when
they really just need to install dependencies. With this change,
we'll break on configure if libedit-dev isn't there. If the user
really wants to build without libedit they just need to explicitly
disable it.
Travis Cross [Thu, 27 Mar 2014 22:30:33 +0000 (22:30 +0000)]
Handle bodies not ending in newlines w/EL_REFRESH
The issue is that sofia siptrace output doesn't end each line with a
newline. Instead it sends a separate newline afterward, which comes
in as a separate event body. With the new EL_REFRESH code in effect
the line is being cleared after the siptrace output has been written
but before that next newline comes in.
With our own refresh code this doesn't happen because of slight
differences in where the stdio buffers get flushed compared to where
the output of clear_line() ends up.
This is a bit of a clumsy workaround. But we'll fix it first, then
refactor.
Travis Cross [Thu, 27 Mar 2014 17:05:20 +0000 (17:05 +0000)]
Add back terminal detection for old libedits
Using the system libedit means that libedit will again make absolute
movements on certain kinds of terminals. Older versions of libedit
without EL_PROMPT_ESC miscalculate the length of the prompt.
Combined, this results in the cursor ending up in the wrong place.
We knew this was a possibility when we moved to system libedit, and
we're OK with it. We certainly lived without this fancy prompt
feature for a long time.
This change puts back in place detection of the terminal type when
EL_PROMPT_ESC isn't available. On these older versions of libedit,
we'll only enable the fancy features when we know that libedit will
only make relative movements and not tickle the bug.
Travis Cross [Thu, 27 Mar 2014 12:20:43 +0000 (12:20 +0000)]
Drop use of libedit EL_REFRESH in fs_cli for now
Newer versions of libedit provide an EL_REFRESH mechanism for
redrawing the prompt. We had previously written our own code to
handle this. In theory handing this over to libedit should be better.
Unfortunately when using EL_REFRESH the output of sofia siptrace isn't
showing up. We're working on that, but for now we're just force own
our redrawing code to be used instead.
Travis Cross [Wed, 26 Mar 2014 17:49:24 +0000 (17:49 +0000)]
Deprecate mod_spidermonkey
We consider mod_spidermonkey to be completely replaced by mod_v8 (and
more generally by mod_lua) at this point. We've barely supported
mod_spidermonkey for years. Everyone should stop using it.
We're keeping this around for awhile in case people are relying on C
extensions to mod_spidermonkey and need time to migrate. This module
may or may not be part of a v1.4 release depending on whether we find
anyone cares. It definitely will not be part of the next release
after v1.4.