Fixing srt_getsockopt for bool socket options #1925
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In
srt_getsockopt(..)
API function thesebool
socket options were actually usingint
type when casting theoptval
, which may lead to writing outsize the memory of theoptval
whenbool
is provided.SRTO_SENDER
SRTO_TSBPDMODE
SRTO_DRIFTTRACER
SRTO_ENFORCEDENCRYPTION
This PR changes types to
bool
ifoptlen
is zero ofsizeof(bool)
, otherwise casts toint
.ABI Change
Fixing cast to bool is the lesser evil compared to potential outside-of-memory writing.
This change however affects SRT API a bit and might lead to certain upgrading difficulties.
Both FFMpeg and GStreamer should not get into trouble with this change, as they only get the value of
SRTO_PAYLOADSIZE
.Still, the output
optlen
should provide a hint of how many bytes were actually set bysrt_getsockopt(..)
function.Note that the type used to set those
bool
options is stillint
there, as bothint
andbool
types are supported insrt_setsockopt(..)
.TODO
srt_getopt
forSRTO_TLPKTDROP
: does not use the value from config (to be addressed separately).