[sems] Disallow usage of Glibc private functions

Peter Lemenkov peter at fedoraproject.org
Tue Jan 4 20:35:24 UTC 2011


commit 1a9e966e4e823d6912b611eb6d2cd17ba4b27c7d
Author: Peter Lemenkov <lemenkov at gmail.com>
Date:   Tue Jan 4 23:34:49 2011 +0300

    Disallow usage of Glibc private functions
    
    Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>

 ...001-Force-to-use-system-wide-GSM-includes.patch |    2 +-
 ...llow-rewrite-of-custom-makefiles-by-CMake.patch |    2 +-
 ...Set-CFG_PREFIX-to-empty-string-by-default.patch |    2 +-
 ...ql-in-conference-and-early_announce-modul.patch |    2 +-
 ...aid_sip-plugin-to-default-exclude-list-du.patch |    2 +-
 sems-0006-last-minute-fix-proper-version.patch     |    2 +-
 ...gateway-module-s-version-passing-in-CMake.patch |    2 +-
 sems-0008-Install-email-template.patch             |    2 +-
 sems-0009-Don-t-start-py_sems-by-default.patch     |    2 +-
 sems-0010-Move-CMake-defines.patch                 |    2 +-
 ...-0011-Avoid-using-private-Glibc-functions.patch |   67 ++++++++++++++++++++
 sems.spec                                          |    8 ++-
 12 files changed, 84 insertions(+), 11 deletions(-)
---
diff --git a/sems-0001-Force-to-use-system-wide-GSM-includes.patch b/sems-0001-Force-to-use-system-wide-GSM-includes.patch
index 280d7bd..d09b793 100644
--- a/sems-0001-Force-to-use-system-wide-GSM-includes.patch
+++ b/sems-0001-Force-to-use-system-wide-GSM-includes.patch
@@ -1,7 +1,7 @@
 From de3c54f85f893e4ee985b1da93cc014b00456fa8 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Wed, 31 Mar 2010 11:52:52 +0400
-Subject: [PATCH 01/10] Force to use system-wide GSM includes
+Subject: [PATCH 01/11] Force to use system-wide GSM includes
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
diff --git a/sems-0002-Allow-rewrite-of-custom-makefiles-by-CMake.patch b/sems-0002-Allow-rewrite-of-custom-makefiles-by-CMake.patch
index ae99289..0cfeab8 100644
--- a/sems-0002-Allow-rewrite-of-custom-makefiles-by-CMake.patch
+++ b/sems-0002-Allow-rewrite-of-custom-makefiles-by-CMake.patch
@@ -1,7 +1,7 @@
 From 26929b6a7a62299b71bf7c99f17f75670a2040e2 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Wed, 31 Mar 2010 11:53:48 +0400
-Subject: [PATCH 02/10] Allow rewrite of custom makefiles by CMake
+Subject: [PATCH 02/11] Allow rewrite of custom makefiles by CMake
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
diff --git a/sems-0003-Set-CFG_PREFIX-to-empty-string-by-default.patch b/sems-0003-Set-CFG_PREFIX-to-empty-string-by-default.patch
index 9809b67..df0a5ad 100644
--- a/sems-0003-Set-CFG_PREFIX-to-empty-string-by-default.patch
+++ b/sems-0003-Set-CFG_PREFIX-to-empty-string-by-default.patch
@@ -1,7 +1,7 @@
 From e322f2e00e48b639b5d87ed06738aa24d99396bf Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Wed, 31 Mar 2010 18:56:39 +0400
-Subject: [PATCH 03/10] Set CFG_PREFIX to empty string by default
+Subject: [PATCH 03/11] Set CFG_PREFIX to empty string by default
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
diff --git a/sems-0004-Disable-mysql-in-conference-and-early_announce-modul.patch b/sems-0004-Disable-mysql-in-conference-and-early_announce-modul.patch
index 71dfa53..8cb0ce1 100644
--- a/sems-0004-Disable-mysql-in-conference-and-early_announce-modul.patch
+++ b/sems-0004-Disable-mysql-in-conference-and-early_announce-modul.patch
@@ -1,7 +1,7 @@
 From 4a2b5ca2644db000dbace63c8bdd278109f6d356 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Fri, 25 Jun 2010 12:16:45 +0400
-Subject: [PATCH 04/10] Disable mysql++ in conference and early_announce modules
+Subject: [PATCH 04/11] Disable mysql++ in conference and early_announce modules
 
 Unfortunately, this breaks existing configurations, which is a
 no-go situation for EPEL repository. We'll enable it later.
diff --git a/sems-0005-Add-sw_prepaid_sip-plugin-to-default-exclude-list-du.patch b/sems-0005-Add-sw_prepaid_sip-plugin-to-default-exclude-list-du.patch
index 177b81c..38807cb 100644
--- a/sems-0005-Add-sw_prepaid_sip-plugin-to-default-exclude-list-du.patch
+++ b/sems-0005-Add-sw_prepaid_sip-plugin-to-default-exclude-list-du.patch
@@ -1,7 +1,7 @@
 From 2f0556c126f2cae0edec32b0fd269d496dd068f6 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Mon, 27 Sep 2010 14:13:00 +0400
-Subject: [PATCH 05/10] Add sw_prepaid_sip plugin to default exclude list (due to missing cc_acc)
+Subject: [PATCH 05/11] Add sw_prepaid_sip plugin to default exclude list (due to missing cc_acc)
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
diff --git a/sems-0006-last-minute-fix-proper-version.patch b/sems-0006-last-minute-fix-proper-version.patch
index e4a508b..8d04ed8 100644
--- a/sems-0006-last-minute-fix-proper-version.patch
+++ b/sems-0006-last-minute-fix-proper-version.patch
@@ -1,7 +1,7 @@
 From 708b02d96f4a4acb7c4ede0387a84d2f5948e0db Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Mon, 27 Dec 2010 17:18:46 +0300
-Subject: [PATCH 06/10] last-minute fix - proper version
+Subject: [PATCH 06/11] last-minute fix - proper version
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
diff --git a/sems-0007-Fix-gateway-module-s-version-passing-in-CMake.patch b/sems-0007-Fix-gateway-module-s-version-passing-in-CMake.patch
index 114e13d..a36628f 100644
--- a/sems-0007-Fix-gateway-module-s-version-passing-in-CMake.patch
+++ b/sems-0007-Fix-gateway-module-s-version-passing-in-CMake.patch
@@ -1,7 +1,7 @@
 From 7f2c45fc1e9c2c1900244709abfa125c9b7e5755 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Wed, 29 Dec 2010 16:02:44 +0300
-Subject: [PATCH 07/10] Fix gateway module's version passing in CMake
+Subject: [PATCH 07/11] Fix gateway module's version passing in CMake
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
diff --git a/sems-0008-Install-email-template.patch b/sems-0008-Install-email-template.patch
index fb3a6ea..3eaf049 100644
--- a/sems-0008-Install-email-template.patch
+++ b/sems-0008-Install-email-template.patch
@@ -1,7 +1,7 @@
 From 57e8f6ccdf5335207f7017414487db6bf81a64f3 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Wed, 29 Dec 2010 16:55:50 +0300
-Subject: [PATCH 08/10] Install email template
+Subject: [PATCH 08/11] Install email template
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
diff --git a/sems-0009-Don-t-start-py_sems-by-default.patch b/sems-0009-Don-t-start-py_sems-by-default.patch
index d69fe6c..ef3b946 100644
--- a/sems-0009-Don-t-start-py_sems-by-default.patch
+++ b/sems-0009-Don-t-start-py_sems-by-default.patch
@@ -1,7 +1,7 @@
 From 8712daf57f4ec10caadd215dc969b1f261a949b5 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Wed, 29 Dec 2010 17:02:49 +0300
-Subject: [PATCH 09/10] Don't start py_sems by default
+Subject: [PATCH 09/11] Don't start py_sems by default
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
diff --git a/sems-0010-Move-CMake-defines.patch b/sems-0010-Move-CMake-defines.patch
index 3fc8636..be1b8be 100644
--- a/sems-0010-Move-CMake-defines.patch
+++ b/sems-0010-Move-CMake-defines.patch
@@ -1,7 +1,7 @@
 From c6fe28de4a05e33c317019261711f2babe98b95d Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Mon, 3 Jan 2011 22:16:24 +0300
-Subject: [PATCH 10/10] Move CMake defines
+Subject: [PATCH 10/11] Move CMake defines
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
diff --git a/sems-0011-Avoid-using-private-Glibc-functions.patch b/sems-0011-Avoid-using-private-Glibc-functions.patch
new file mode 100644
index 0000000..048a0a9
--- /dev/null
+++ b/sems-0011-Avoid-using-private-Glibc-functions.patch
@@ -0,0 +1,67 @@
+From fb437ef493d6023e936bd55088df7e6d99452cfb Mon Sep 17 00:00:00 2001
+From: Peter Lemenkov <lemenkov at gmail.com>
+Date: Tue, 4 Jan 2011 22:34:03 +0300
+Subject: [PATCH 11/11] Avoid using private Glibc functions
+
+Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
+---
+ core/sip/resolver.cpp |   33 +++++++++++++++++++++++++++------
+ 1 files changed, 27 insertions(+), 6 deletions(-)
+
+diff --git a/core/sip/resolver.cpp b/core/sip/resolver.cpp
+index e3443c7..3b3e4a6 100644
+--- a/core/sip/resolver.cpp
++++ b/core/sip/resolver.cpp
+@@ -54,6 +54,27 @@ using std::list;
+ // (the limit is the # bits in dns_handle::srv_used)
+ #define MAX_SRV_RR (sizeof(unsigned int)*8)
+ 
++/* The SEMS_GET16 macro and the sems_get16 function were copied from glibc 2.7
++ * (include/arpa/nameser.h (NS_GET16) and resolv/ns_netint.c (ns_get16)) to
++ *  avoid using private glibc functions.
++ */
++
++# define SEMS_GET16(s, cp)              \
++  do {                                  \
++    uint16_t *t_cp = (uint16_t *) (cp); \
++    (s) = ntohs (*t_cp);                \
++    (cp) += NS_INT16SZ;                 \
++} while (0)
++
++u_int
++sems_get16(const u_char *src)
++{
++       u_int dst;
++
++       SEMS_GET16(dst, src);
++       return (dst);
++}
++
+ struct ip_entry
+     : public dns_base_entry
+ {
+@@ -399,15 +420,15 @@ dns_base_entry* dns_srv_entry::get_rr(dns_record* rr, u_char* begin, u_char* end
+     DBG("SRV:\tTTL=%i\t%s\tP=<%i> W=<%i> P=<%i> T=<%s>\n",
+     	ns_rr_ttl(*rr),
+     	ns_rr_name(*rr),
+-    	ns_get16(rdata),
+-    	ns_get16(rdata+2),
+-    	ns_get16(rdata+4),
++    	sems_get16(rdata),
++    	sems_get16(rdata+2),
++    	sems_get16(rdata+4),
+     	name_buf);
+     
+     srv_entry* srv_r = new srv_entry();
+-    srv_r->p = ns_get16(rdata);
+-    srv_r->w = ns_get16(rdata+2);
+-    srv_r->port = ns_get16(rdata+4);
++    srv_r->p = sems_get16(rdata);
++    srv_r->w = sems_get16(rdata+2);
++    srv_r->port = sems_get16(rdata+4);
+     srv_r->target = (const char*)name_buf;
+ 
+     return srv_r;
+-- 
+1.7.3.4
+
diff --git a/sems.spec b/sems.spec
index 275924f..2011424 100644
--- a/sems.spec
+++ b/sems.spec
@@ -1,7 +1,7 @@
 Summary:	SIP Express Media Server, an extensible SIP media server
 Name:		sems
 Version:	1.3.1
-Release:	3%{?dist}
+Release:	4%{?dist}
 URL:		http://www.iptel.org/sems
 ## wget http://ftp.iptel.org/pub/sems/sems-1.3.1.tar.gz
 ## tar zx --exclude iLBC_rfc3951 -f sems-1.3.1.tar.gz
@@ -30,6 +30,8 @@ Patch8:		sems-0008-Install-email-template.patch
 Patch9:		sems-0009-Don-t-start-py_sems-by-default.patch
 # Backported
 Patch10:	sems-0010-Move-CMake-defines.patch
+# Will be proposed for inclusion into upstream
+Patch11:	sems-0011-Avoid-using-private-Glibc-functions.patch
 
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires:	python >= 2.3
@@ -205,6 +207,7 @@ rm -rf core/plug-in/gsm/gsm-1.0-pl10/
 %patch8 -p1 -b .install_email_template
 %patch9 -p1 -b .dont_start_py_sems
 %patch10 -p1 -b .correct_defines
+%patch11 -p1 -b .private_functions
 
 
 iconv -f iso8859-1 -t UTF-8 doc/Readme.diameter_client.txt > doc/Readme.diameter_client.utf8 && mv doc/Readme.diameter_client.{utf8,txt}
@@ -604,6 +607,9 @@ fi
 %{_libdir}/%{name}/plug-in/xmlrpc2di.so
 
 %changelog
+* Tue Jan  4 2011 Peter Lemenkov <lemenkov at gmail.com> 1.3.1-4
+- Disallow usage of Glibc private functions
+
 * Mon Jan  3 2011 Peter Lemenkov <lemenkov at gmail.com> 1.3.1-3
 - Fixed linking issues
 


More information about the scm-commits mailing list