diff options
Diffstat (limited to 'googlepatches/google-11-srtp-replay-fix.patch')
-rw-r--r-- | googlepatches/google-11-srtp-replay-fix.patch | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/googlepatches/google-11-srtp-replay-fix.patch b/googlepatches/google-11-srtp-replay-fix.patch deleted file mode 100644 index 46d3f7f..0000000 --- a/googlepatches/google-11-srtp-replay-fix.patch +++ /dev/null @@ -1,107 +0,0 @@ -==== //depot/google3/third_party/libsrtp/README.google#8 - None ==== -# action=edit type=text ---- google3/third_party/libsrtp/README.google 2011-02-22 19:05:30.000000000 -0800 -+++ google3/third_party/libsrtp/README.google 2011-05-27 17:56:49.000000000 -0700 -@@ -21,4 +21,6 @@ - - all patches are stored individually in the googlepatches subdirectory - - iOS related changes. - undefine HAVE_BYTESWAP_H in config.h -- Fix debug build compile errors: added static keyword to inline methods and undefined DEBUG before #define DEBUG -\ No newline at end of file -+ Fix debug build compile errors: added static keyword to inline methods and undefined DEBUG before #define DEBUG -+- Fixed a bug related to replay detection when sequence number rolls back -+ arround 0. (Currently contacting libsrtp developers for upstream.) -==== //depot/google3/third_party/libsrtp/crypto/replay/rdbx.c#5 - None ==== -# action=edit type=text ---- google3/third_party/libsrtp/crypto/replay/rdbx.c 2010-02-25 06:36:30.000000000 -0800 -+++ google3/third_party/libsrtp/crypto/replay/rdbx.c 2011-05-27 17:56:49.000000000 -0700 -@@ -145,7 +145,16 @@ - if (local_seq < seq_num_median) { - if (s - local_seq > seq_num_median) { - guess_roc = local_roc - 1; -- difference = seq_num_max - s + local_seq; -+ // The return value is the relative difference from local_seq to s. -+ // The original value is negation of its purpose. According to document -+ // http://www.ietf.org/rfc/rfc3711.txt, when this condition is true, the -+ // resulting new index should be (local_roc-1, s). But original logic -+ // will end up positive difference and rdbx_check would pass. Hence after -+ // rdbx_add_index would make local index to be the wrong value because -+ // local index should not be updated in this case. For example, when -+ // local index is (1, 100) and next sequence is 65530, the wrong updated -+ // index would be (1, 205). -+ difference = s - local_seq - seq_num_max; - } else { - guess_roc = local_roc; - difference = s - local_seq; -==== //depot/google3/third_party/libsrtp/test/rdbx_driver.c#5 - None ==== -# action=edit type=text ---- google3/third_party/libsrtp/test/rdbx_driver.c 2010-02-25 06:36:30.000000000 -0800 -+++ google3/third_party/libsrtp/test/rdbx_driver.c 2011-05-27 17:56:49.000000000 -0700 -@@ -226,7 +226,7 @@ - * test sequential insertion - */ - printf("\ttesting sequential insertion..."); -- for (idx=0; idx < num_trials; idx++) { -+ for (idx=0; idx < (uint32_t)num_trials; idx++) { - status = rdbx_check_add(&rdbx, idx); - if (status) - return status; -@@ -245,7 +245,7 @@ - printf("warning: no false positive tests performed\n"); - } - printf("\ttesting for false positives..."); -- for (idx=0; idx < num_fp_trials; idx++) { -+ for (idx=0; idx < (uint32_t)num_fp_trials; idx++) { - status = rdbx_check_expect_failure(&rdbx, idx); - if (status) - return status; -@@ -269,12 +269,34 @@ - ut_init(&utc); - - printf("\ttesting non-sequential insertion..."); -- for (idx=0; idx < num_trials; idx++) { -+ for (idx=0; idx < (uint32_t)num_trials; idx++) { - ircvd = ut_next_index(&utc); - status = rdbx_check_unordered(&rdbx, ircvd); - if (status) - return status; - } -+ printf("passed\n"); -+ -+ /* -+ * test a replay condition close to zero. -+ */ -+ rdbx_uninit(&rdbx); -+ -+ if (rdbx_init(&rdbx, ws) != err_status_ok) { -+ printf("replay_init failed\n"); -+ return err_status_init_fail; -+ } -+ -+ printf("\ttesting replay close to zero..."); -+ status = rdbx_check_add(&rdbx, 1); -+ if (status) -+ return status; -+ status = rdbx_check_expect_failure(&rdbx, 64500); -+ if (status) -+ return status; -+ status = rdbx_check_add(&rdbx, 2); -+ if (status) -+ return status; - printf("passed\n"); - - rdbx_uninit(&rdbx); -@@ -303,7 +325,7 @@ - - failures = 0; - timer = clock(); -- for(i=0; i < num_trials; i++) { -+ for(i=0; i < (uint32_t)num_trials; i++) { - - delta = index_guess(&rdbx.index, &est, i); - -@@ -321,4 +343,3 @@ - - return (double) CLOCKS_PER_SEC * num_trials / timer; - } -- |