cisco / libsrtp

Library for SRTP (Secure Realtime Transport Protocol)
Other
1.19k stars 470 forks source link

Respect the direction set in a template stream #618

Open bifurcation opened 1 year ago

bifurcation commented 1 year ago

This PR attempts to fix the logical error noted in #617, that the directions set on a template stream are not checked when the template stream is used to create new (directed) streams. It simply adds checks in srtp_protect_mki and srtp_unprotect_mki that verify that the template stream's direction is compatible with the context, either the same direction or dir_srtp_unknown. Marking as WIP because even if we agree on approach, we probably need to cover the analgous RTCP methods.

Note that there is compatibility risk in merging this PR: If there are consumers that are relying the ambiguity noted here, then they will fail.

pabuhler commented 1 year ago

This code apears to be 17 years old and kind of unchanged, I agree that it should be fixed, but it might break things for exisitng clients if they have been doing it wrong. Maybe this is something for 3.0 ? The update_xxx() functions also need to preserver the directions flags.