This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Pau Espin Pedrol gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/4386 osmux_snprintf: Support different types of Osmux frames Previous implementation could handle data unexpectedly if an Osmux frame other than AMR was used as input. Change-Id: I48565472b47c2a0e5db50881fbb005537af8c70d --- M src/osmux.c 1 file changed, 36 insertions(+), 21 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/86/4386/1 diff --git a/src/osmux.c b/src/osmux.c index cad4c5d..47fb927 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -921,30 +921,45 @@ msg_off += sizeof(struct osmux_hdr); msg_len -= sizeof(struct osmux_hdr); - if (!osmo_amr_ft_valid(osmuxh->amr_ft)) { - LOGP(DLMIB, LOGL_ERROR, "Bad AMR FT %d, skipping\n", - osmuxh->amr_ft); + switch (osmuxh->ft) { + case OSMUX_FT_SIGNAL: + ret = snprintf(buf + offset, remain, "[signal]"); + SNPRINTF_BUFFER_SIZE(ret, remain, offset); + break; + case OSMUX_FT_VOICE_AMR: + if (!osmo_amr_ft_valid(osmuxh->amr_ft)) { + LOGP(DLMIB, LOGL_ERROR, "Bad AMR FT %d, skipping\n", + osmuxh->amr_ft); + return -1; + } + + payload_len = osmux_get_payload_len(osmuxh); + + if (msg_len < payload_len) { + LOGP(DLMIB, LOGL_ERROR, + "No room for OSMUX payload: only %d bytes\n", + msg_len); + return -1; + } + + ret = osmux_snprintf_payload(buf + offset, remain, + osmux_get_payload(osmuxh), + payload_len); + SNPRINTF_BUFFER_SIZE(ret, remain, offset); + + msg_off += payload_len; + msg_len -= payload_len; + break; + case OSMUX_FT_DUMMY: + ret = snprintf(buf + offset, remain, "[dummy]"); + SNPRINTF_BUFFER_SIZE(ret, remain, offset); + break; + default: + LOGP(DLMIB, LOGL_ERROR, "Unknown OSMUX ft value %d\n", + osmuxh->ft); return -1; } - - payload_len = osmux_get_payload_len(osmuxh); - - if (msg_len < payload_len) { - LOGP(DLMIB, LOGL_ERROR, - "No room for OSMUX payload: only %d bytes\n", - msg_len); - return -1; - } - - ret = osmux_snprintf_payload(buf + offset, remain, - osmux_get_payload(osmuxh), - payload_len); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); - - msg_off += payload_len; - msg_len -= payload_len; } - return offset; } -- To view, visit https://gerrit.osmocom.org/4386 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I48565472b47c2a0e5db50881fbb005537af8c70d Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>