mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-26 22:38:07 -05:00
gnu: pjproject-jami: Fix CVE-2020-15260 and CVE-2021-21375.
The custom pjproject package used by Jami is updated with the latest patches found in the 20210326.1.cfba013 release of Jami. * gnu/packages/jami.scm (%jami-version): Update to 20210326.1.cfba013. (jami-source) [snippet]: Update comment. Add client-electron and client-ios to the list of deleted directories. Remove client-windows from the list, as it no longer exists. (jami-apply-dependency-patches): Update comment. Ignore whitespace when applying patches, otherwise the pjproject patches would not apply. (pjproject-jami): Add comment. [source]: Define the source; the parent pjproject package was updated was updated to 2.11, but the patches only apply against 2.10. [phases] <apply-patches>: Update the list of patches used with those found in the release tarball.
This commit is contained in:
parent
45136b3673
commit
3d913c1ed8
1 changed files with 36 additions and 16 deletions
|
@ -2,7 +2,7 @@
|
||||||
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
|
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
|
||||||
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
||||||
;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
|
;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
|
||||||
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -63,7 +63,7 @@ (define-module (gnu packages jami)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:use-module (srfi srfi-1))
|
#:use-module (srfi srfi-1))
|
||||||
|
|
||||||
(define %jami-version "20200710.1.6bd18d2")
|
(define %jami-version "20210326.1.cfba013")
|
||||||
|
|
||||||
(define* (jami-source #:key keep-contrib-patches?)
|
(define* (jami-source #:key keep-contrib-patches?)
|
||||||
"Return an origin object of the tarball release sources archive of Jami.
|
"Return an origin object of the tarball release sources archive of Jami.
|
||||||
|
@ -78,7 +78,7 @@ (define* (jami-source #:key keep-contrib-patches?)
|
||||||
(modules '((guix build utils)))
|
(modules '((guix build utils)))
|
||||||
(snippet
|
(snippet
|
||||||
`(begin
|
`(begin
|
||||||
;; Delete over 200 MiB of bundled tarballs. The contrib directory
|
;; Delete multiple MiBs of bundled tarballs. The contrib directory
|
||||||
;; contains the custom patches for pjproject and other libraries used
|
;; contains the custom patches for pjproject and other libraries used
|
||||||
;; by Savoir-faire Linux.
|
;; by Savoir-faire Linux.
|
||||||
(if ,keep-contrib-patches?
|
(if ,keep-contrib-patches?
|
||||||
|
@ -86,21 +86,21 @@ (define* (jami-source #:key keep-contrib-patches?)
|
||||||
(delete-file-recursively "daemon/contrib"))
|
(delete-file-recursively "daemon/contrib"))
|
||||||
;; Remove code from unused Jami clients.
|
;; Remove code from unused Jami clients.
|
||||||
(for-each delete-file-recursively '("client-android"
|
(for-each delete-file-recursively '("client-android"
|
||||||
|
"client-electron"
|
||||||
|
"client-ios"
|
||||||
"client-macosx"
|
"client-macosx"
|
||||||
"client-uwp"
|
"client-uwp"))))
|
||||||
"client-windows"))
|
|
||||||
#t))
|
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0lg61jv39x7kc9lq30by246xb6gcgp1rzj49ak7ff8nqpfzyfvva"))))
|
"1h0avma8bdzyznkz39crjyv2888bii4f49md15jg7970dyp5pdyz"))))
|
||||||
|
|
||||||
(define %sfl-patches (jami-source #:keep-contrib-patches? #t))
|
(define %sfl-patches (jami-source #:keep-contrib-patches? #t))
|
||||||
|
|
||||||
(define %jami-sources (jami-source))
|
(define %jami-sources (jami-source))
|
||||||
|
|
||||||
;; Savoir-faire Linux modifies many libraries to add features
|
;; Savoir-faire Linux maintains a set of patches for some key dependencies
|
||||||
;; to Jami. This procedure makes applying patches to a given
|
;; (currently pjproject and ffmpeg) of Jami that haven't yet been integrated
|
||||||
;; package easy.
|
;; upstream. This procedure simplifies the process of applying these patches.x
|
||||||
(define jami-apply-dependency-patches
|
(define jami-apply-dependency-patches
|
||||||
'(lambda* (#:key inputs dep-name patches)
|
'(lambda* (#:key inputs dep-name patches)
|
||||||
(let ((patches-directory "sfl-patches"))
|
(let ((patches-directory "sfl-patches"))
|
||||||
|
@ -112,15 +112,30 @@ (define jami-apply-dependency-patches
|
||||||
dep-name))
|
dep-name))
|
||||||
(for-each
|
(for-each
|
||||||
(lambda (file)
|
(lambda (file)
|
||||||
(invoke "patch" "--force" "-p1" "-i"
|
(invoke "patch" "--force" "--ignore-whitespace" "-p1" "-i"
|
||||||
(string-append patches-directory "/"
|
(string-append patches-directory "/"
|
||||||
file ".patch")))
|
file ".patch")))
|
||||||
patches))))
|
patches))))
|
||||||
|
|
||||||
|
;;; Jami maintains pjproject patches that add the ability to do ICE over TCP,
|
||||||
|
;;; among other things. The patches are currently based on pjproject 2.10.
|
||||||
(define-public pjproject-jami
|
(define-public pjproject-jami
|
||||||
(package
|
(package
|
||||||
(inherit pjproject)
|
(inherit pjproject)
|
||||||
(name "pjproject-jami")
|
(name "pjproject-jami")
|
||||||
|
(version "2.10")
|
||||||
|
(source (origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/pjsip/pjproject")
|
||||||
|
(commit version)))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))
|
||||||
|
(patches (search-patches
|
||||||
|
"pjproject-correct-the-cflags-field.patch"
|
||||||
|
"pjproject-fix-pkg-config-ldflags.patch"))))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("sfl-patches" ,%sfl-patches)
|
`(("sfl-patches" ,%sfl-patches)
|
||||||
,@(package-native-inputs pjproject)))
|
,@(package-native-inputs pjproject)))
|
||||||
|
@ -140,14 +155,19 @@ (define-public pjproject-jami
|
||||||
"0004-multiple_listeners"
|
"0004-multiple_listeners"
|
||||||
"0005-fix_ebusy_turn"
|
"0005-fix_ebusy_turn"
|
||||||
"0006-ignore_ipv6_on_transport_check"
|
"0006-ignore_ipv6_on_transport_check"
|
||||||
"0007-pj_ice_sess"
|
"0007-upnp-srflx-nat-assisted-cand"
|
||||||
"0008-fix_ioqueue_ipv6_sendto"
|
"0008-fix_ioqueue_ipv6_sendto"
|
||||||
"0009-add-config-site"
|
"0009-add-config-site"
|
||||||
;; Note: The base pjproject is already patched with
|
;; Already taken care of via the origin patches.
|
||||||
;; "0010-fix-pkgconfig".
|
;;"0010-fix-pkgconfig"
|
||||||
"0011-fix-tcp-death-detection"
|
"0011-fix-tcp-death-detection"
|
||||||
"0012-fix-turn-shutdown-crash"))
|
"0012-fix-turn-shutdown-crash"
|
||||||
#t))))))))
|
"0013-Assign-unique-local-preferences-for-candidates-with-"
|
||||||
|
"0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM"
|
||||||
|
"0015-update-local-preference-for-peer-reflexive-candidate"
|
||||||
|
"0016-use-addrinfo-instead-CFHOST"
|
||||||
|
"0017-CVE-2020-15260"
|
||||||
|
"0018-CVE-2021-21375"))))))))))
|
||||||
|
|
||||||
;; The following variables are configure flags used by ffmpeg-jami. They're
|
;; The following variables are configure flags used by ffmpeg-jami. They're
|
||||||
;; from the ring-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to
|
;; from the ring-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to
|
||||||
|
|
Loading…
Reference in a new issue