Commit Graph

27325 Commits

Author SHA1 Message Date
Kathleen King 85699480b3 Fixed trucation of value warning.
There was a parameter mismatch between abs(), which expects an int,
and atol() which returns a long. Since max_drift is defined as an int,
there is no need to pars q as a long rather than an int.
2014-07-03 14:41:24 -07:00
Kathleen King 64fc3f7934 Changed the function parameter name in the function definition to
match the updated parameter name in the function declaration. #doxygen
2014-07-03 14:19:33 -07:00
Kathleen King aef569172b Removed a useless called to abs.
Clang 3.5 reported the following error: error: taking the absolute
value of unsigned type 'unsigned int' has no effect
[-Werror,-Wabsolute-value]

Subtracting unsigned variables will never be negative and will either
be the small expected value or will wrap to a very big value. This
code is trying to determine if the difference between these timestamps
is greater than 16000.

The variables last_write_ts and this_ts deal with timestamps. In the
normal case this_ts will be a larger timestamp than
last_write_ts. This change will maintain the intended behavior of
reseting the video if the difference is larger than
16000 and in the abnormal case this value would wrap and still exceed
the 16000.
2014-07-03 13:17:12 -07:00
Kathleen King 24e5c13283 Removed an autological-pointer-compare from src/switch_utils.c.
Building with Clang 3.5 gave the following warning: error: comparison
of array 'iface_out.sin6_addr.__in6_u.__u6_addr8' equal to a null
pointer is always false [-Werror,-Wtautological-pointer-compare]

This is a problem because as it is written the check will never be
true. A pointer to a structure within a structure will never be null. The
intention was either to null check the pointer or to check if the IP
address itself was not zero.

From context in the code this appeared to be a pointer null check so I
removed it.
2014-07-03 12:12:22 -07:00
Anthony Minessale 831d5892b9 preserve timer name for recovery 2014-07-03 23:50:14 +05:00
Kathleen King 89f7196a6e Fixed trucation of value warning.
There was a parameter mismatch between abs(), which expects an int,
and atol() which returns a long. Since max_drift is defined as an int,
there is no need to pars q as a long rather than an int.
2014-07-03 10:53:19 -07:00
Anthony Minessale c9d0f89261 update ico 2014-07-03 22:36:08 +05:00
Anthony Minessale 6fad1bf8ff clean up demo a little 2014-07-03 22:20:30 +05:00
Anthony Minessale 2cbea0437f clean up demo a little 2014-07-03 22:14:23 +05:00
Mike Jerris 64763398fa Merge pull request #4 in FS/freeswitch from ~KATHLEEN.KING/freeswitch-fork:doxygen-switch_regex.h-2 to master
* commit '35755d37d5dd47c2f8470ca9a294b55f124ee1e7':
  Fixed parameter name of variable in switch_regex_match_partial. #doxygen
2014-07-03 12:03:04 -05:00
Ken Rice 8732abef40 test commit hooks, whitespace change only 2014-07-03 08:50:04 -05:00
Ken Rice ceb1f375d1 Merge pull request #1 in FS/freeswitch from ~ARESKI/freeswitch:code-style to master
* commit 'b0e86e65cf16f106a4254e10ab8f8a984b3699db':
  misc of python pep8 fixes
2014-07-03 08:42:15 -05:00
Brian West 4a51650b16 reswig 2014-07-03 08:09:18 -05:00
areski b0e86e65cf misc of python pep8 fixes 2014-07-03 13:46:56 +02:00
Kathleen King f47ecb25a1 Changed the variable name for clarity. 2014-07-02 20:10:31 -07:00
Kathleen King 35755d37d5 Fixed parameter name of variable in
switch_regex_match_partial. #doxygen
2014-07-02 17:46:55 -07:00
Anthony Minessale 39200cd13b increase memory for buffers to hold new decoded stereo codecs 2014-07-03 02:55:21 +05:00
Anthony Minessale 99f15662e2 fix jb endless loop of missing packets 2014-07-03 02:16:32 +05:00
Travis Cross 0efcc9b973 Update SubmittingPatches doc for JIRA smart commits 2014-07-02 18:37:11 +00:00
Anthony Minessale 9e0d1d6841 only count unmuted channels in positioning 2014-07-02 22:57:29 +05:00
Jeff Lenk 9807a92a70 vs2010 reswig 2014-07-02 12:46:26 -05:00
Anthony Minessale d833b9d726 expand table width a bit 2014-07-02 22:18:44 +05:00
Anthony Minessale f0d16d0d18 expand positioning api usage 2014-07-02 04:49:16 +05:00
Anthony Minessale 1518240bab FS-6637 try this instead 2014-07-01 23:59:40 +05:00
Anthony Minessale 0f017814dd FS-6637 nevermind, this is already in the code 2014-07-01 23:53:45 +05:00
Anthony Minessale 5d70df9b1c FS-6637 try this patch 2014-07-01 22:32:02 +05:00
Chris Rienzo 9b14633cf3 fs_cli: fix compiler error on CentOS 6 caused by recent short uuid logging change 2014-06-30 17:30:59 -04:00
jfigus 024162cfc9 Add support for 16-byte auth tag for AES GCM mode. 2014-06-30 19:18:20 +00:00
jfigus b9da5149e2 Set the algorithm member on cipher_t when allocating AES crypto instance. Apply same fix to NULL cipher. 2014-06-30 19:18:20 +00:00
Travis Cross aa4261d11f Avoid buffer-overflow on short RTCP/SRTCP packets
In `srtp_unprotect_rtcp()` we are not validating that the packet
length is as long as the minimum required.  This would cause
`enc_octet_len` to underflow, which would cause us to try to decrypt
data past the end of the packet in memory -- a buffer over-read and
buffer overflow.

In `srtp_protect_rtcp()`, we were similarly not validating the packet
length.  Here we were also polluting the address of the SRTCP
encrypted flag and index (the `trailer`), causing us to write one word
to a bogus memory address before getting to the encryption where we
would also overflow.

In this commit we add checks to appropriately validate the RTCP/SRTCP
packet lengths.

`srtp_unprotect_rtcp_aead()` (but not protect) did correctly validate
the packet length; this check would now be redundant as the check in
`srtcp_unprotect_rtcp()` will also run first, so it has been removed.
2014-06-30 19:00:35 +00:00
Travis Cross 9ea93c4c50 Avoid buffer over-read on null cipher AEAD
In the defined AEAD modes, SRTP packets must always be encrypted and
authenticated, but SRTCP packets may be only authenticated.  It's
possible, therefore, for us to end up in `srtp_protect_aead()` without
the `sec_serv_conf` bit being set.  We should just ignore this and
encrypt the RTP packet anyway.

What we are doing instead is encrypting the packet anyway, but setting
`enc_start` to NULL first.  This causes `aad_len` to underflow which
will cause us to over-read in `cipher_set_aad()`.

If we could get past that, we would try to read and write memory
starting at 0x0 down in `cipher_encrypt()`.

This commit causes us to not check the `sec_serv_conf` bit and never
set `enc_start` to NULL in `srtp_protect_aead()`.

`srtp_unprotect_aead()` does not contain a similar error.
2014-06-30 19:00:35 +00:00
Travis Cross 3bf2b9af75 Prevent buffer overflow from untrusted RTP/SRTP lengths
When computing the start address of the RTP data to encrypt or SRTP
data to decrypt (`enc_start`), we are using `hdr->cc` (the CSRC
count), which is untrusted data from the packet, and the length field
of an RTP header extension, which is also untrusted and unchecked data
from the packet.

This value then pollutes our calculation of how much data we'll be
encrypting or decrypting (`enc_octet_len`), possibly causing us to
underflow.

We'll then call `cipher_encrypt()` or `cipher_decrypt()` with these
two values, causing us to read from and write to arbitrary addresses
in memory.

(In the AEAD functions, we'd also pollute `aad_len`, which would cause
us to read undefined memory in `cipher_set_aad`.)

This commit adds checks to verify that the `enc_start` we calculate is
sane based on the actual packet length.
2014-06-30 19:00:35 +00:00
Travis Cross d2aaf15992 Fix misspelling in comment 2014-06-30 19:00:34 +00:00
Anthony Minessale 2423fc7d0f FS-6540 This should proxy all refers now, the param has changed to proxy-refer 2014-06-30 12:53:22 -05:00
Anthony Minessale 7f9348dbc3 fix volume adjustments in stereo conference 2014-06-30 23:39:42 +05:00
Anthony Minessale 41a7d1cf31 some refactoring to make new stereo stuff more stable 2014-06-30 23:00:45 +05:00
Anthony Minessale 591ea9e9ca tweaks 2014-06-30 04:39:46 +05:00
Anthony Minessale 0bb7f1659f check for member channel 2014-06-30 01:59:21 +05:00
Travis Cross c1f1f8b98e Check for too many SRTP errors before warning
We're checking whether we've hit the warning threshold before checking
whether we should just end the call.  This causes an off-by-one error
where we take one SRTP error more than intended.

This commit reverses the order of the tests.
2014-06-29 20:49:46 +00:00
Anthony Minessale 0ac78cacc3 add openal code to mod_conference 2014-06-30 01:23:08 +05:00
Anthony Minessale 810717cae0 check for proper openal symbol to enable functionality 2014-06-30 01:23:07 +05:00
Anthony Minessale 1a56298c53 add 44.1khz codec defs 2014-06-30 01:23:07 +05:00
Anthony Minessale 1ef5d114f5 adjust ringing var 2014-06-30 01:23:07 +05:00
Steve Underwood c3798dbb02 FAX tweaks 2014-06-29 02:11:25 +08:00
Steve Underwood ad1e7e9632 Fixed updating of the modem type after a FAX ECM CTC. 2014-06-28 16:43:05 +08:00
Travis Cross 7741f403f1 Handle SRTP_READ_ERROR in mod_rayo 2014-06-28 06:42:57 +00:00
Travis Cross f31641f4bf Allow more SRTP errors before killing call
In a carrier interop we saw the call get killed for SRTP failures
during a reinvite.  We're wondering if the SRTP errors may have been
transitory and if it may have recovered after a few more packets.

It's debatable whether we should kill calls at all for SRTP auth
failures; semantically the right thing to do when a MAC fails is to
ignore the packet completely.  So raising this limit to 100 packets
shouldn't do any harm.  With this change we still warn at 10 errors
and every 10 errors thereafter.
2014-06-28 03:57:20 +00:00
Travis Cross 7406be6927 Relay cause of hangup on SRTP failure
We hangup the channel after receiving 10 SRTP packets in a row with a
bad auth tag or that are replayed.  Prior to this commit we were
indicating a normal clearing.  When doing interop and looking first at
packet traces, this made freeswitch's behavior look surprising.  With
this commit we'll indicate more loudly what's happening.
2014-06-28 01:18:50 +00:00
Travis Cross 52892b312a Fix misspelled function
switch_rtp_set_invalid_handler has been misspelled as
switch_rtp_set_invald_handler going all the way back to the
beginning.  So while it's possible that someone somewhere could be
relying on this misspelling, I think it's more likely that no one has
used it much and that's why it wasn't spotted.  We don't even use it
ourselves anywhere anymore.

Introduced in commit: 828e03715f
2014-06-28 00:32:41 +00:00
Travis Cross fc247a223f Add editor footer to core files missing it 2014-06-27 23:55:27 +00:00