diff options
author | orbea <orbea@riseup.net> | 2022-10-07 12:10:13 -0700 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2022-10-13 00:22:50 +0100 |
commit | 9190173b8ee7cf9ee818ad61aebc841f11fa834f (patch) | |
tree | bcd2e0524702a3fb7385f1ec74c5a662f72ebc8d /net-libs/pjproject | |
parent | sci-libs/pdal: bump version 2.4.3 (diff) | |
download | gentoo-9190173b8ee7cf9ee818ad61aebc841f11fa834f.tar.gz gentoo-9190173b8ee7cf9ee818ad61aebc841f11fa834f.tar.bz2 gentoo-9190173b8ee7cf9ee818ad61aebc841f11fa834f.zip |
net-libs/pjproject: Add 2.12.1-r2
* Fixes the build with musl
* Fixes a bashism
* Backports two CVE fix patches
Closes: https://bugs.gentoo.org/865719
Upstream-PR: https://github.com/pjsip/pjproject/pull/3220
Upstream-Commit: https://github.com/pjsip/pjproject/commit/bae7e5f4ff9047170e7e160ab52f6d9993aeae80
Bug: https://bugs.gentoo.org/875863
Upstream-Commit: https://github.com/pjsip/pjproject/commit/d2acb9af4e27b5ba75d658690406cec9c274c5cc
Upstream-Commit: https://github.com/pjsip/pjproject/commit/c4d34984ec92b3d5252a7d5cddd85a1d3a8001ae
Closes: https://bugs.gentoo.org/867343
Upstream-PR: https://github.com/pjsip/pjproject/pull/3263
Signed-off-by: orbea <orbea@riseup.net>
Closes: https://github.com/gentoo/gentoo/pull/27677
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'net-libs/pjproject')
5 files changed, 629 insertions, 0 deletions
diff --git a/net-libs/pjproject/files/pjproject-2.12.1-r2-CVE-2022-39244.patch b/net-libs/pjproject/files/pjproject-2.12.1-r2-CVE-2022-39244.patch new file mode 100644 index 000000000000..a0995fb92957 --- /dev/null +++ b/net-libs/pjproject/files/pjproject-2.12.1-r2-CVE-2022-39244.patch @@ -0,0 +1,306 @@ +https://bugs.gentoo.org/875863 +https://github.com/pjsip/pjproject/commit/c4d34984ec92b3d5252a7d5cddd85a1d3a8001ae + +From c4d34984ec92b3d5252a7d5cddd85a1d3a8001ae Mon Sep 17 00:00:00 2001 +From: sauwming <ming@teluu.com> +Date: Mon, 3 Oct 2022 08:07:22 +0800 +Subject: [PATCH] Merge pull request from GHSA-fq45-m3f7-3mhj + +* Initial patch + +* Use 'pj_scan_is_eof(scanner)' + +Co-authored-by: Aaron Lichtman <aaronlichtman@gmail.com> + +* Use 'pj_scan_is_eof(scanner)' + +Co-authored-by: Aaron Lichtman <aaronlichtman@gmail.com> + +* Use 'pj_scan_is_eof(scanner)' + +Co-authored-by: Aaron Lichtman <aaronlichtman@gmail.com> + +* Use `!pj_scan_is_eof` instead of manually checking `scanner->curptr < scanner->end` + +Co-authored-by: Maksim Mukosey <mmukosey@gmail.com> + +* Update pjlib-util/src/pjlib-util/scanner.c + +Co-authored-by: Aaron Lichtman <aaronlichtman@gmail.com> + +* Update pjlib-util/src/pjlib-util/scanner.c + +Co-authored-by: Aaron Lichtman <aaronlichtman@gmail.com> + +* Update pjlib-util/src/pjlib-util/scanner.c + +Co-authored-by: Aaron Lichtman <aaronlichtman@gmail.com> + +* Revert '>=' back to '>' in pj_scan_stricmp_alnum() + +* Fix error compiles. + +Co-authored-by: Nanang Izzuddin <nanang@teluu.com> +Co-authored-by: Aaron Lichtman <aaronlichtman@gmail.com> +Co-authored-by: Maksim Mukosey <mmukosey@gmail.com> +--- + pjlib-util/src/pjlib-util/scanner.c | 41 +++++++++++++++++++---------- + pjmedia/src/pjmedia/rtp.c | 11 +++++--- + pjmedia/src/pjmedia/sdp.c | 24 ++++++++++------- + 3 files changed, 48 insertions(+), 28 deletions(-) + +diff --git a/pjlib-util/src/pjlib-util/scanner.c b/pjlib-util/src/pjlib-util/scanner.c +index a54edf2d8e..6541bbae31 100644 +--- a/pjlib-util/src/pjlib-util/scanner.c ++++ b/pjlib-util/src/pjlib-util/scanner.c +@@ -195,7 +195,13 @@ PJ_DEF(void) pj_scan_skip_whitespace( pj_scanner *scanner ) + + PJ_DEF(void) pj_scan_skip_line( pj_scanner *scanner ) + { +- char *s = pj_memchr(scanner->curptr, '\n', scanner->end - scanner->curptr); ++ char *s; ++ ++ if (pj_scan_is_eof(scanner)) { ++ return; ++ } ++ ++ s = pj_memchr(scanner->curptr, '\n', scanner->end - scanner->curptr); + if (!s) { + scanner->curptr = scanner->end; + } else { +@@ -264,8 +270,7 @@ PJ_DEF(void) pj_scan_get( pj_scanner *scanner, + + pj_assert(pj_cis_match(spec,0)==0); + +- /* EOF is detected implicitly */ +- if (!pj_cis_match(spec, *s)) { ++ if (pj_scan_is_eof(scanner) || !pj_cis_match(spec, *s)) { + pj_scan_syntax_err(scanner); + return; + } +@@ -299,8 +304,7 @@ PJ_DEF(void) pj_scan_get_unescape( pj_scanner *scanner, + /* Must not match character '%' */ + pj_assert(pj_cis_match(spec,'%')==0); + +- /* EOF is detected implicitly */ +- if (!pj_cis_match(spec, *s) && *s != '%') { ++ if (pj_scan_is_eof(scanner) || !pj_cis_match(spec, *s) && *s != '%') { + pj_scan_syntax_err(scanner); + return; + } +@@ -436,7 +440,9 @@ PJ_DEF(void) pj_scan_get_n( pj_scanner *scanner, + + scanner->curptr += N; + +- if (PJ_SCAN_IS_PROBABLY_SPACE(*scanner->curptr) && scanner->skip_ws) { ++ if (!pj_scan_is_eof(scanner) && ++ PJ_SCAN_IS_PROBABLY_SPACE(*scanner->curptr) && scanner->skip_ws) ++ { + pj_scan_skip_whitespace(scanner); + } + } +@@ -467,15 +473,16 @@ PJ_DEF(int) pj_scan_get_char( pj_scanner *scanner ) + + PJ_DEF(void) pj_scan_get_newline( pj_scanner *scanner ) + { +- if (!PJ_SCAN_IS_NEWLINE(*scanner->curptr)) { ++ if (pj_scan_is_eof(scanner) || !PJ_SCAN_IS_NEWLINE(*scanner->curptr)) { + pj_scan_syntax_err(scanner); + return; + } + ++ /* We have checked scanner->curptr validity above */ + if (*scanner->curptr == '\r') { + ++scanner->curptr; + } +- if (*scanner->curptr == '\n') { ++ if (!pj_scan_is_eof(scanner) && *scanner->curptr == '\n') { + ++scanner->curptr; + } + +@@ -520,7 +527,9 @@ PJ_DEF(void) pj_scan_get_until( pj_scanner *scanner, + + scanner->curptr = s; + +- if (PJ_SCAN_IS_PROBABLY_SPACE(*s) && scanner->skip_ws) { ++ if (!pj_scan_is_eof(scanner) && PJ_SCAN_IS_PROBABLY_SPACE(*s) && ++ scanner->skip_ws) ++ { + pj_scan_skip_whitespace(scanner); + } + } +@@ -544,7 +553,9 @@ PJ_DEF(void) pj_scan_get_until_ch( pj_scanner *scanner, + + scanner->curptr = s; + +- if (PJ_SCAN_IS_PROBABLY_SPACE(*s) && scanner->skip_ws) { ++ if (!pj_scan_is_eof(scanner) && PJ_SCAN_IS_PROBABLY_SPACE(*s) && ++ scanner->skip_ws) ++ { + pj_scan_skip_whitespace(scanner); + } + } +@@ -570,7 +581,9 @@ PJ_DEF(void) pj_scan_get_until_chr( pj_scanner *scanner, + + scanner->curptr = s; + +- if (PJ_SCAN_IS_PROBABLY_SPACE(*s) && scanner->skip_ws) { ++ if (!pj_scan_is_eof(scanner) && PJ_SCAN_IS_PROBABLY_SPACE(*s) && ++ scanner->skip_ws) ++ { + pj_scan_skip_whitespace(scanner); + } + } +@@ -585,7 +598,9 @@ PJ_DEF(void) pj_scan_advance_n( pj_scanner *scanner, + + scanner->curptr += N; + +- if (PJ_SCAN_IS_PROBABLY_SPACE(*scanner->curptr) && skip_ws) { ++ if (!pj_scan_is_eof(scanner) && ++ PJ_SCAN_IS_PROBABLY_SPACE(*scanner->curptr) && skip_ws) ++ { + pj_scan_skip_whitespace(scanner); + } + } +@@ -636,5 +651,3 @@ PJ_DEF(void) pj_scan_restore_state( pj_scanner *scanner, + scanner->line = state->line; + scanner->start_line = state->start_line; + } +- +- +diff --git a/pjmedia/src/pjmedia/rtp.c b/pjmedia/src/pjmedia/rtp.c +index 18917f18b5..d29348cc5f 100644 +--- a/pjmedia/src/pjmedia/rtp.c ++++ b/pjmedia/src/pjmedia/rtp.c +@@ -188,6 +188,11 @@ PJ_DEF(pj_status_t) pjmedia_rtp_decode_rtp2( + /* Payload is located right after header plus CSRC */ + offset = sizeof(pjmedia_rtp_hdr) + ((*hdr)->cc * sizeof(pj_uint32_t)); + ++ /* Check that offset is less than packet size */ ++ if (offset >= pkt_len) { ++ return PJMEDIA_RTP_EINLEN; ++ } ++ + /* Decode RTP extension. */ + if ((*hdr)->x) { + if (offset + sizeof (pjmedia_rtp_ext_hdr) > (unsigned)pkt_len) +@@ -202,8 +207,8 @@ PJ_DEF(pj_status_t) pjmedia_rtp_decode_rtp2( + dec_hdr->ext_len = 0; + } + +- /* Check that offset is less than packet size */ +- if (offset > pkt_len) ++ /* Check again that offset is still less than packet size */ ++ if (offset >= pkt_len) + return PJMEDIA_RTP_EINLEN; + + /* Find and set payload. */ +@@ -393,5 +398,3 @@ void pjmedia_rtp_seq_update( pjmedia_rtp_seq_session *sess, + seq_status->status.value = st.status.value; + } + } +- +- +diff --git a/pjmedia/src/pjmedia/sdp.c b/pjmedia/src/pjmedia/sdp.c +index 3905c2f525..647f49e138 100644 +--- a/pjmedia/src/pjmedia/sdp.c ++++ b/pjmedia/src/pjmedia/sdp.c +@@ -983,13 +983,13 @@ static void parse_version(pj_scanner *scanner, + ctx->last_error = PJMEDIA_SDP_EINVER; + + /* check equal sign */ +- if (*(scanner->curptr+1) != '=') { ++ if (scanner->curptr+1 >= scanner->end || *(scanner->curptr+1) != '=') { + on_scanner_error(scanner); + return; + } + + /* check version is 0 */ +- if (*(scanner->curptr+2) != '0') { ++ if (scanner->curptr+2 >= scanner->end || *(scanner->curptr+2) != '0') { + on_scanner_error(scanner); + return; + } +@@ -1006,7 +1006,7 @@ static void parse_origin(pj_scanner *scanner, pjmedia_sdp_session *ses, + ctx->last_error = PJMEDIA_SDP_EINORIGIN; + + /* check equal sign */ +- if (*(scanner->curptr+1) != '=') { ++ if (scanner->curptr+1 >= scanner->end || *(scanner->curptr+1) != '=') { + on_scanner_error(scanner); + return; + } +@@ -1052,7 +1052,7 @@ static void parse_time(pj_scanner *scanner, pjmedia_sdp_session *ses, + ctx->last_error = PJMEDIA_SDP_EINTIME; + + /* check equal sign */ +- if (*(scanner->curptr+1) != '=') { ++ if (scanner->curptr+1 >= scanner->end || *(scanner->curptr+1) != '=') { + on_scanner_error(scanner); + return; + } +@@ -1080,7 +1080,7 @@ static void parse_generic_line(pj_scanner *scanner, pj_str_t *str, + ctx->last_error = PJMEDIA_SDP_EINSDP; + + /* check equal sign */ +- if (*(scanner->curptr+1) != '=') { ++ if ((scanner->curptr+1 >= scanner->end) || *(scanner->curptr+1) != '=') { + on_scanner_error(scanner); + return; + } +@@ -1149,7 +1149,7 @@ static void parse_media(pj_scanner *scanner, pjmedia_sdp_media *med, + ctx->last_error = PJMEDIA_SDP_EINMEDIA; + + /* check the equal sign */ +- if (*(scanner->curptr+1) != '=') { ++ if (scanner->curptr+1 >= scanner->end || *(scanner->curptr+1) != '=') { + on_scanner_error(scanner); + return; + } +@@ -1164,6 +1164,10 @@ static void parse_media(pj_scanner *scanner, pjmedia_sdp_media *med, + /* port */ + pj_scan_get(scanner, &cs_token, &str); + med->desc.port = (unsigned short)pj_strtoul(&str); ++ if (pj_scan_is_eof(scanner)) { ++ on_scanner_error(scanner); ++ return; ++ } + if (*scanner->curptr == '/') { + /* port count */ + pj_scan_get_char(scanner); +@@ -1175,7 +1179,7 @@ static void parse_media(pj_scanner *scanner, pjmedia_sdp_media *med, + } + + if (pj_scan_get_char(scanner) != ' ') { +- PJ_THROW(SYNTAX_ERROR); ++ on_scanner_error(scanner); + } + + /* transport */ +@@ -1183,7 +1187,7 @@ static void parse_media(pj_scanner *scanner, pjmedia_sdp_media *med, + + /* format list */ + med->desc.fmt_count = 0; +- while (*scanner->curptr == ' ') { ++ while (scanner->curptr < scanner->end && *scanner->curptr == ' ') { + pj_str_t fmt; + + pj_scan_get_char(scanner); +@@ -1223,7 +1227,7 @@ static pjmedia_sdp_attr *parse_attr( pj_pool_t *pool, pj_scanner *scanner, + attr = PJ_POOL_ALLOC_T(pool, pjmedia_sdp_attr); + + /* check equal sign */ +- if (*(scanner->curptr+1) != '=') { ++ if (scanner->curptr+1 >= scanner->end || *(scanner->curptr+1) != '=') { + on_scanner_error(scanner); + return NULL; + } +@@ -1242,7 +1246,7 @@ static pjmedia_sdp_attr *parse_attr( pj_pool_t *pool, pj_scanner *scanner, + pj_scan_get_char(scanner); + + /* get value */ +- if (*scanner->curptr != '\r' && *scanner->curptr != '\n') { ++ if (!pj_scan_is_eof(scanner) && *scanner->curptr != '\r' && *scanner->curptr != '\n') { + pj_scan_get_until_chr(scanner, "\r\n", &attr->value); + } else { + attr->value.ptr = NULL; diff --git a/net-libs/pjproject/files/pjproject-2.12.1-r2-CVE-2022-39269.patch b/net-libs/pjproject/files/pjproject-2.12.1-r2-CVE-2022-39269.patch new file mode 100644 index 000000000000..7c065a024b92 --- /dev/null +++ b/net-libs/pjproject/files/pjproject-2.12.1-r2-CVE-2022-39269.patch @@ -0,0 +1,33 @@ +https://bugs.gentoo.org/875863 +https://github.com/pjsip/pjproject/commit/d2acb9af4e27b5ba75d658690406cec9c274c5cc + +From d2acb9af4e27b5ba75d658690406cec9c274c5cc Mon Sep 17 00:00:00 2001 +From: Riza Sulistyo <trengginas@users.noreply.github.com> +Date: Thu, 6 Oct 2022 13:55:13 +0700 +Subject: [PATCH] Merge pull request from GHSA-wx5m-cj97-4wwg + +--- + pjmedia/src/pjmedia/transport_srtp.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/pjmedia/src/pjmedia/transport_srtp.c b/pjmedia/src/pjmedia/transport_srtp.c +index 2d393beaa..39d06434b 100644 +--- a/pjmedia/src/pjmedia/transport_srtp.c ++++ b/pjmedia/src/pjmedia/transport_srtp.c +@@ -1531,13 +1531,14 @@ static void srtp_rtp_cb(pjmedia_tp_cb_param *param) + pjmedia_srtp_crypto tx, rx; + pj_status_t status; + ++ tx = srtp->tx_policy; ++ rx = srtp->rx_policy; ++ + /* Stop SRTP first, otherwise srtp_start() will maintain current + * roll-over counter. + */ + pjmedia_transport_srtp_stop((pjmedia_transport*)srtp); + +- tx = srtp->tx_policy; +- rx = srtp->rx_policy; + status = pjmedia_transport_srtp_start((pjmedia_transport*)srtp, + &tx, &rx); + if (status != PJ_SUCCESS) { diff --git a/net-libs/pjproject/files/pjproject-2.12.1-r2-bashism.patch b/net-libs/pjproject/files/pjproject-2.12.1-r2-bashism.patch new file mode 100644 index 000000000000..d24243eba223 --- /dev/null +++ b/net-libs/pjproject/files/pjproject-2.12.1-r2-bashism.patch @@ -0,0 +1,44 @@ +https://bugs.gentoo.org/865719 +https://github.com/pjsip/pjproject/pull/3220 +https://github.com/pjsip/pjproject/commit/bae7e5f4ff9047170e7e160ab52f6d9993aeae80 + +From 84c7a5a6a050fcd51c7f5cada51df27ab00b7332 Mon Sep 17 00:00:00 2001 +From: Jaco Kroon <jaco@uls.co.za> +Date: Fri, 19 Aug 2022 11:20:10 +0200 +Subject: [PATCH] aconfigure: fix bashism. + +${var//string/replacement} is considered a bashism and should be avoided +in configure scripts. + +Signed-off-by: Jaco Kroon <jaco@uls.co.za> +--- + aconfigure | 2 +- + aconfigure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/aconfigure b/aconfigure +index b15c133e2e..5ce01f5057 100755 +--- a/aconfigure ++++ b/aconfigure +@@ -7986,7 +7986,7 @@ printf "%s\n" "not found" >&6; } + ac_sdl_cflags=`$SDL_CONFIG --cflags` + ac_sdl_cflags="-DPJMEDIA_VIDEO_DEV_HAS_SDL=1 $ac_sdl_cflags" + ac_sdl_ldflags=`$SDL_CONFIG --libs` +- ac_sdl_ldflags=${ac_sdl_ldflags//-mwindows/} ++ ac_sdl_ldflags=`echo "${ac_sdl_ldflags}" | sed -e 's/-mwindows//g'` + LIBS="$LIBS $ac_sdl_ldflags" + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Unsupported SDL version" >&5 +diff --git a/aconfigure.ac b/aconfigure.ac +index 9fc32d0bf9..2b6227711e 100644 +--- a/aconfigure.ac ++++ b/aconfigure.ac +@@ -1295,7 +1295,7 @@ AC_ARG_ENABLE(sdl, + ac_sdl_cflags=`$SDL_CONFIG --cflags` + ac_sdl_cflags="-DPJMEDIA_VIDEO_DEV_HAS_SDL=1 $ac_sdl_cflags" + ac_sdl_ldflags=`$SDL_CONFIG --libs` +- ac_sdl_ldflags=${ac_sdl_ldflags//-mwindows/} ++ ac_sdl_ldflags=`echo "${ac_sdl_ldflags}" | sed -e 's/-mwindows//g'` + LIBS="$LIBS $ac_sdl_ldflags" + else + AC_MSG_RESULT([Unsupported SDL version]) diff --git a/net-libs/pjproject/files/pjproject-2.12.1-r2-musl.patch b/net-libs/pjproject/files/pjproject-2.12.1-r2-musl.patch new file mode 100644 index 000000000000..8db401dc7544 --- /dev/null +++ b/net-libs/pjproject/files/pjproject-2.12.1-r2-musl.patch @@ -0,0 +1,102 @@ +From aa54bd7ae0d60461cb5f434da1338faf315314f6 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Sun, 9 Oct 2022 23:17:34 -0700 +Subject: [PATCH] Fix the build with musl + +The execinfo.h header is GNU specific and is not available with musl. + +This commit is based on a patch from Alpine Linux. + +https://git.alpinelinux.org/aports/tree/main/pjproject/execinfo.patch?h=3.16-stable + +Gentoo Issue: https://bugs.gentoo.org/867343 +--- + pjlib-util/src/pjlib-util-test/main.c | 2 +- + pjlib/src/pjlib-test/main.c | 2 +- + pjmedia/src/test/main.c | 2 +- + pjnath/src/pjnath-test/main.c | 2 +- + pjsip-apps/src/pjsua/main.c | 2 +- + pjsip/src/test/main.c | 2 +- + 6 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/pjlib-util/src/pjlib-util-test/main.c b/pjlib-util/src/pjlib-util-test/main.c +index 4aeb3e07d..780db4d33 100644 +--- a/pjlib-util/src/pjlib-util-test/main.c ++++ b/pjlib-util/src/pjlib-util-test/main.c +@@ -33,7 +33,7 @@ static void init_signals() + sigaction(SIGALRM, &act, NULL); + } + +-#elif PJ_LINUX || PJ_DARWINOS ++#elif __GLIBC__ || PJ_DARWINOS + + #include <execinfo.h>
+ #include <signal.h> +diff --git a/pjlib/src/pjlib-test/main.c b/pjlib/src/pjlib-test/main.c +index d5f853a60..76a077037 100644 +--- a/pjlib/src/pjlib-test/main.c ++++ b/pjlib/src/pjlib-test/main.c +@@ -54,7 +54,7 @@ static void init_signals() + sigaction(SIGALRM, &act, NULL); + } + +-#elif PJ_LINUX || PJ_DARWINOS ++#elif __GLIBC__ || PJ_DARWINOS + + #include <execinfo.h>
+ #include <signal.h> +diff --git a/pjmedia/src/test/main.c b/pjmedia/src/test/main.c +index 8d6353b15..b16023761 100644 +--- a/pjmedia/src/test/main.c ++++ b/pjmedia/src/test/main.c +@@ -32,7 +32,7 @@ + #endif + + +-#if PJ_LINUX || PJ_DARWINOS ++#if __GLIBC__ || PJ_DARWINOS + + #include <execinfo.h>
+ #include <signal.h> +diff --git a/pjnath/src/pjnath-test/main.c b/pjnath/src/pjnath-test/main.c +index d783669e5..f6c906166 100644 +--- a/pjnath/src/pjnath-test/main.c ++++ b/pjnath/src/pjnath-test/main.c +@@ -32,7 +32,7 @@ static void init_signals() + sigaction(SIGALRM, &act, NULL); + } + +-#elif PJ_LINUX || PJ_DARWINOS ++#elif __GLIBC__ || PJ_DARWINOS + + #include <execinfo.h>
+ #include <signal.h> +diff --git a/pjsip-apps/src/pjsua/main.c b/pjsip-apps/src/pjsua/main.c +index bb8ddc345..fcc1e8f34 100644 +--- a/pjsip-apps/src/pjsua/main.c ++++ b/pjsip-apps/src/pjsua/main.c +@@ -80,7 +80,7 @@ static void setup_signal_handler(void) + SetConsoleCtrlHandler(&CtrlHandler, TRUE); + } + +-#elif PJ_LINUX || PJ_DARWINOS ++#elif __GLIBC__ || PJ_DARWINOS + + #include <execinfo.h> + #include <signal.h> +diff --git a/pjsip/src/test/main.c b/pjsip/src/test/main.c +index 18e4c9255..255667dda 100644 +--- a/pjsip/src/test/main.c ++++ b/pjsip/src/test/main.c +@@ -36,7 +36,7 @@ static void usage(void) + list_tests(); + } + +-#if PJ_LINUX || PJ_DARWINOS ++#if __GLIBC__ || PJ_DARWINOS + + #include <execinfo.h>
+ #include <signal.h> +-- +2.35.1 + diff --git a/net-libs/pjproject/pjproject-2.12.1-r2.ebuild b/net-libs/pjproject/pjproject-2.12.1-r2.ebuild new file mode 100644 index 000000000000..846b53806406 --- /dev/null +++ b/net-libs/pjproject/pjproject-2.12.1-r2.ebuild @@ -0,0 +1,144 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 +# TODO: Figure out a way to disable SRTP from pjproject entirely. +EAPI=8 + +inherit autotools flag-o-matic toolchain-funcs + +DESCRIPTION="Open source SIP, Media, and NAT Traversal Library" +HOMEPAGE="https://www.pjsip.org/" +SRC_URI="https://github.com/pjsip/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86" + +LICENSE="GPL-2" +SLOT="0/${PV}" + +# g729 not included due to special bcg729 handling. +CODEC_FLAGS="g711 g722 g7221 gsm ilbc speex l16" +VIDEO_FLAGS="sdl ffmpeg v4l2 openh264 libyuv vpx" +SOUND_FLAGS="alsa portaudio" +IUSE="amr debug epoll examples opus resample silk ssl static-libs webrtc + ${CODEC_FLAGS} g729 + ${VIDEO_FLAGS} + ${SOUND_FLAGS}" + +RDEPEND=">=net-libs/libsrtp-2.3.0:= + alsa? ( media-libs/alsa-lib ) + amr? ( media-libs/opencore-amr ) + ffmpeg? ( media-video/ffmpeg:= ) + g729? ( media-libs/bcg729 ) + gsm? ( media-sound/gsm ) + ilbc? ( media-libs/libilbc ) + openh264? ( media-libs/openh264 ) + opus? ( media-libs/opus ) + portaudio? ( media-libs/portaudio ) + resample? ( media-libs/libsamplerate ) + sdl? ( media-libs/libsdl ) + speex? ( + media-libs/speex + media-libs/speexdsp + ) + ssl? ( + dev-libs/openssl:0= + ) +" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}/pjproject-2.12.1-CVE-2022-31031.patch" + "${FILESDIR}/pjproject-2.12.1-r2-CVE-2022-39244.patch" # 875863 + "${FILESDIR}/pjproject-2.12.1-r2-CVE-2022-39269.patch" # 875863 + "${FILESDIR}/pjproject-2.12.1-r2-bashism.patch" # 865719 + "${FILESDIR}/pjproject-2.12.1-r2-musl.patch" # 867343 +) + +src_prepare() { + default + rm configure || die "Unable to remove unwanted wrapper" + mv aconfigure.ac configure.ac || die "Unable to rename configure script source" + eautoreconf + + cp "${FILESDIR}/pjproject-2.12.1-config_site.h" "${S}/pjlib/include/pj/config_site.h" || die "Unable to create config_site.h" +} + +_pj_enable() { + usex "$1" '' "--disable-${2:-$1}" +} + +_pj_get_define() { + local r="$(sed -nre "s/^#define[[:space:]]+$1[[:space:]]+//p" "${S}/pjlib/include/pj/config_site.h")" + [[ -z "${r}" ]] && die "Unable to fine #define $1 in config_site.h" + echo "$r" +} + +_pj_set_define() { + local c=$(_pj_get_define "$1") + [[ "$c" = "$2" ]] && return 0 + sed -re "s/^#define[[:space:]]+$1[[:space:]].*/#define $1 $2/" -i "${S}/pjlib/include/pj/config_site.h" || die "sed failed updating $1 to $2." + [[ "$(_pj_get_define "$1")" != "$2" ]] && die "sed failed to perform update for $1 to $2." +} + +_pj_use_set_define() { + _pj_set_define "$2" $(usex "$1" 1 0) +} + +src_configure() { + local myconf=() + local videnable="--disable-video" + local t + + use debug || append-cflags -DNDEBUG=1 + + for t in ${CODEC_FLAGS}; do + myconf+=( $(_pj_enable ${t} ${t}-codec) ) + done + myconf+=( $(_pj_enable g729 bcg729) ) + + for t in ${VIDEO_FLAGS}; do + myconf+=( $(_pj_enable ${t}) ) + use "${t}" && videnable="--enable-video" + done + + [ "${videnable}" = "--enable-video" ] && _pj_set_define PJMEDIA_HAS_VIDEO 1 || _pj_set_define PJMEDIA_HAS_VIDEO 0 + + LD="$(tc-getCC)" econf \ + --enable-shared \ + --with-external-srtp \ + ${videnable} \ + $(_pj_enable alsa sound) \ + $(_pj_enable amr opencore-amr) \ + $(_pj_enable epoll) \ + $(_pj_enable opus) \ + $(_pj_enable portaudio ext-sound) \ + $(_pj_enable resample libsamplerate) \ + $(_pj_enable resample resample-dll) \ + $(_pj_enable resample) \ + $(_pj_enable silk) \ + $(_pj_enable speex speex-aec) \ + $(_pj_enable ssl) \ + $(_pj_enable webrtc libwebrtc) \ + $(use_with gsm external-gsm) \ + $(use_with portaudio external-pa) \ + $(use_with speex external-speex) \ + "${myconf[@]}" +} + +src_compile() { + emake dep LD="$(tc-getCC)" + emake LD="$(tc-getCC)" +} + +src_install() { + default + + newbin pjsip-apps/bin/pjsua-${CHOST} pjsua + newbin pjsip-apps/bin/pjsystest-${CHOST} pjsystest + + if use examples; then + insinto "/usr/share/doc/${PF}/examples" + doins -r pjsip-apps/src/samples + fi + + use static-libs || rm "${ED}/usr/$(get_libdir)"/*.a || die "Error removing static archives" +} |