[oe-commits] Stanislav Brabec : tangogps: Potential fix of curl crashes.

git version control git at git.openembedded.org
Thu Apr 21 20:02:36 UTC 2011


Module: openembedded.git
Branch: testing-next
Commit: d8ad204a8e1142c300a2fcedc376a6b035ab1f65
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=d8ad204a8e1142c300a2fcedc376a6b035ab1f65

Author: Stanislav Brabec <utx at penguin.cz>
Date:   Sat Apr 16 22:47:44 2011 +0000

tangogps: Potential fix of curl crashes.

Signed-off-by: Stanislav Brabec <utx at penguin.cz>

---

 .../tangogps-0.99.4/tangogps-curl-crash.patch      |   64 ++++++++++++++++++++
 recipes/tangogps/tangogps_0.99.4.bb                |    3 +
 2 files changed, 67 insertions(+), 0 deletions(-)

diff --git a/recipes/tangogps/tangogps-0.99.4/tangogps-curl-crash.patch b/recipes/tangogps/tangogps-0.99.4/tangogps-curl-crash.patch
new file mode 100644
index 0000000..60da763
--- /dev/null
+++ b/recipes/tangogps/tangogps-0.99.4/tangogps-curl-crash.patch
@@ -0,0 +1,64 @@
+Patch based on the similar fix of viking by Rob Norris <rw_norris at hotmail.com>:
+    Fix crashing due to incorrect usage of libcurl - SF#3206628.
+    Tell curl we are a multi-threaded program - i.e. it can not use signals.
+
+Index: tangogps-0.99.4/src/friends.c
+===================================================================
+--- tangogps-0.99.4.orig/src/friends.c
++++ tangogps-0.99.4/src/friends.c
+@@ -265,6 +265,7 @@ gdk_threads_leave();
+ 	       
+ 	curl_handle = curl_easy_init();
+ 	
++	curl_easy_setopt(curl_handle, CURLOPT_NOSIGNAL, 1);
+ 	curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.tangogps.org/friends/update_pos.php");
+ 	curl_easy_setopt(curl_handle, CURLOPT_HTTPPOST, formdata);
+ 	curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, cb_write_to_mem);
+@@ -451,6 +452,7 @@ update_position0()
+ 	
+ 	if(curl)
+ 	{
++		curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
+ 		curl_easy_setopt(curl, CURLOPT_URL, 
+ 				"127.0.0.1/friends/update_position.php?lat=1&lon=1");
+ 		res = curl_easy_perform(curl);
+@@ -540,6 +542,7 @@ register_nick_thread(void *ptr)
+ 	       
+ 	curl_handle = curl_easy_init();
+ 	
++	curl_easy_setopt(curl_handle, CURLOPT_NOSIGNAL, 1);
+ 	curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.tangogps.org/friends/register_nick.php");
+ 	curl_easy_setopt(curl_handle, CURLOPT_HTTPPOST, formdata);
+ 	curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, cb_write_to_mem);
+Index: tangogps-0.99.4/src/tile_management.c
+===================================================================
+--- tangogps-0.99.4.orig/src/tile_management.c
++++ tangogps-0.99.4/src/tile_management.c
+@@ -236,6 +236,7 @@ dl_thread(void *ptr)
+ 	if(curl && outfile) 
+ 	{
+ 		
++		curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
+ 		curl_easy_setopt(curl, CURLOPT_URL, arr1[0]);
+ 		curl_easy_setopt(curl, CURLOPT_USERAGENT, 
+ 			"libcurl-agent/1.0 | tangogps " VERSION " | " __VERSION__);
+Index: tangogps-0.99.4/src/util.c
+===================================================================
+--- tangogps-0.99.4.orig/src/util.c
++++ tangogps-0.99.4/src/util.c
+@@ -104,6 +104,7 @@ mycurl__do_http_post (char *url, GSList
+ 	
+ 	curl_handle = curl_easy_init();
+ 	
++	curl_easy_setopt(curl_handle, CURLOPT_NOSIGNAL, 1);
+ 	curl_easy_setopt(curl_handle, CURLOPT_URL, url);
+ 	curl_easy_setopt(curl_handle, CURLOPT_HTTPPOST, formdata);
+ 	curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, mycurl_write_to_mem_cb);
+@@ -159,6 +160,7 @@ mycurl__do_http_get (char *url, char *us
+ 	curl_global_init(CURL_GLOBAL_ALL);
+ 	curl_handle = curl_easy_init();
+  
++	curl_easy_setopt(curl_handle, CURLOPT_NOSIGNAL, 1);
+ 	curl_easy_setopt(curl_handle, CURLOPT_URL, url);
+ 	curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, mycurl_write_to_mem_cb);
+ 	curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
diff --git a/recipes/tangogps/tangogps_0.99.4.bb b/recipes/tangogps/tangogps_0.99.4.bb
index ab682f3..5433424 100644
--- a/recipes/tangogps/tangogps_0.99.4.bb
+++ b/recipes/tangogps/tangogps_0.99.4.bb
@@ -1,4 +1,7 @@
 require tangogps.inc
+PR = "r1"
+
+SRC_URI += "file://tangogps-curl-crash.patch"
 
 SRC_URI[archive.md5sum] = "0f07ede94a21eb84f5e017fa88a1fc3d"
 SRC_URI[archive.sha256sum] = "660fdf89ef3c379f2fc0c2a9d0c9d3bfa5345835786b72bf9f513ba9ec2c812a"





More information about the Openembedded-commits mailing list