From 1efea340a379d8787133746ba2513c34b0160ded Mon Sep 17 00:00:00 2001 From: Jacek Konieczny Date: Tue, 10 Jun 2014 11:22:46 +0200 Subject: [PATCH] upstream fix to a use-after-free second part of the fix of display name handling in Linphone Release: 2 --- displayname_use_after_free.patch | 46 ++++++++++++++++++++++++++++++++ linphone.spec | 4 ++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 displayname_use_after_free.patch diff --git a/displayname_use_after_free.patch b/displayname_use_after_free.patch new file mode 100644 index 0000000..d2f2f17 --- /dev/null +++ b/displayname_use_after_free.patch @@ -0,0 +1,46 @@ +commit a32c864292e147b769bc6f2b19735593cf84f41e +Author: Jehan Monnier +Date: Mon Apr 14 16:28:57 2014 +0200 + + fix invalid read in gtk app call log management + +diff --git a/gtk/calllogs.c b/gtk/calllogs.c +index 2f7e8f7..7a4840a 100644 +--- a/gtk/calllogs.c ++++ b/gtk/calllogs.c +@@ -293,7 +293,10 @@ void linphone_gtk_call_log_update(GtkWidget *w){ + #endif + lf=linphone_core_get_friend_by_address(linphone_gtk_get_core(),addr); + if(lf != NULL){ +- display=linphone_address_get_display_name(linphone_friend_get_address(lf)); ++ if ((display=linphone_address_get_display_name(linphone_friend_get_address(lf)))) { ++ /*update display name from friend*/ ++ linphone_address_set_display_name(la,display); ++ } + } else { + display=linphone_address_get_display_name(la); + } +@@ -302,9 +305,8 @@ void linphone_gtk_call_log_update(GtkWidget *w){ + if (display==NULL){ + display=linphone_address_get_domain (la); + } +- } else { +- linphone_address_set_display_name(la,display); + } ++ + if (linphone_call_log_get_quality(cl)!=-1){ + snprintf(quality,sizeof(quality),"%.1f",linphone_call_log_get_quality(cl)); + }else snprintf(quality,sizeof(quality)-1,"%s",_("n/a")); +diff --git a/tester/call_tester.c b/tester/call_tester.c +index 2a18b30..c655e4b 100644 +--- a/tester/call_tester.c ++++ b/tester/call_tester.c +@@ -355,7 +355,7 @@ static void call_with_dns_time_out(void) { + linphone_core_set_sip_transports(marie->lc,&transport); + linphone_core_iterate(marie->lc); + sal_set_dns_timeout(marie->lc->sal,0); +- linphone_core_invite(marie->lc,"sip:toto@toto.com"); ++ linphone_core_invite(marie->lc,"\"t\x8et\x8e\" sip:toto@toto.com"); /*just to use non ascii values*/ + for(i=0;i<10;i++){ + ms_usleep(200000); + linphone_core_iterate(marie->lc); diff --git a/linphone.spec b/linphone.spec index ef0d111..242fbbb 100644 --- a/linphone.spec +++ b/linphone.spec @@ -17,13 +17,14 @@ Summary: Linphone Internet Phone Summary(pl.UTF-8): Linphone - telefon internetowy Name: linphone Version: 3.7.0 -Release: 1 +Release: 2 License: GPL v2+ Group: Applications/Communications Source0: http://download-mirror.savannah.gnu.org/releases/linphone/3.7.x/sources/%{name}-%{version}.tar.gz # Source0-md5: 6978492712bdacd452e375254d6033ae Patch0: %{name}-imgdir.patch Patch1: %{name}-sh.patch +Patch2: displayname_use_after_free.patch URL: http://www.linphone.org/ BuildRequires: alsa-lib-devel >= 0.9.0 BuildRequires: autoconf >= 2.50 @@ -187,6 +188,7 @@ find '(' -name '*.c' -o -name '*.h' ')' -print0 | xargs -0 %{__sed} -i -e 's,\r$ %patch0 -p1 %patch1 -p1 +%patch2 -p1 %build %{__libtoolize} -- 2.44.0