From f5835878166d0b302c85a29ef1944e6b72e61260 Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Fri, 5 Apr 2013 23:39:00 +0200 Subject: curl: backport patch to fix segfaults * e.g. ecore, efreet segfault a lot without this patch (From OE-Core rev: b93011d3e719c46089ccdb39c60d3a9e9cfa5a14) Signed-off-by: Martin Jansa Signed-off-by: Richard Purdie --- ...inter-reference-when-closing-an-unused-mu.patch | 170 +++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 meta/recipes-support/curl/curl/0001-Fix-NULL-pointer-reference-when-closing-an-unused-mu.patch (limited to 'meta/recipes-support/curl/curl') diff --git a/meta/recipes-support/curl/curl/0001-Fix-NULL-pointer-reference-when-closing-an-unused-mu.patch b/meta/recipes-support/curl/curl/0001-Fix-NULL-pointer-reference-when-closing-an-unused-mu.patch new file mode 100644 index 0000000000..914024e126 --- /dev/null +++ b/meta/recipes-support/curl/curl/0001-Fix-NULL-pointer-reference-when-closing-an-unused-mu.patch @@ -0,0 +1,170 @@ +From 5887472e49ce6c14590760f0650775653045abb5 Mon Sep 17 00:00:00 2001 +From: Linus Nielsen Feltzing +Date: Sun, 10 Feb 2013 22:57:58 +0100 +Subject: [PATCH] Fix NULL pointer reference when closing an unused multi + handle. + +Upstream-Status: Backport +https://github.com/bagder/curl/commit/da3fc1ee91de656a30f3a12de394bcba55119872 + +Signed-off-by: Martin Jansa + +--- + lib/multi.c | 8 +++++--- + tests/data/Makefile.am | 2 +- + tests/data/test1508 | 31 +++++++++++++++++++++++++++++ + tests/libtest/Makefile.inc | 6 +++++- + tests/libtest/lib1508.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 91 insertions(+), 5 deletions(-) + create mode 100644 tests/data/test1508 + create mode 100644 tests/libtest/lib1508.c + +diff --git a/lib/multi.c b/lib/multi.c +index fa0afb9..706df23 100644 +--- a/lib/multi.c ++++ b/lib/multi.c +@@ -1773,10 +1773,12 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle) + /* Close all the connections in the connection cache */ + close_all_connections(multi); + +- multi->closure_handle->dns.hostcache = multi->hostcache; +- Curl_hostcache_clean(multi->closure_handle); ++ if(multi->closure_handle) { ++ multi->closure_handle->dns.hostcache = multi->hostcache; ++ Curl_hostcache_clean(multi->closure_handle); + +- Curl_close(multi->closure_handle); ++ Curl_close(multi->closure_handle); ++ } + multi->closure_handle = NULL; + + Curl_hash_destroy(multi->sockhash); +diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am +index d82534d..9f569a3 100644 +--- a/tests/data/Makefile.am ++++ b/tests/data/Makefile.am +@@ -93,7 +93,7 @@ test1379 test1380 test1381 test1382 test1383 test1384 test1385 test1386 \ + test1387 test1388 test1389 test1390 test1391 test1392 test1393 \ + test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \ + test1408 test1409 test1410 test1411 test1412 test1413 \ +-test1500 test1501 test1502 test1503 test1504 test1505 test1506 \ ++test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1508 \ + test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \ + test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \ + test2016 test2017 test2018 test2019 test2020 test2021 test2022 \ +diff --git a/tests/data/test1508 b/tests/data/test1508 +new file mode 100644 +index 0000000..f8607e5 +--- /dev/null ++++ b/tests/data/test1508 +@@ -0,0 +1,31 @@ ++ ++ ++ ++HTTP ++multi ++ ++ ++ ++# Client-side ++ ++ ++none ++ ++ ++lib1508 ++ ++ ++Close a multi handle without using it ++ ++ ++http://%HOSTIP:%HTTPPORT/path/1508 ++ ++ ++ ++# Verify data after the test has been "shot" ++ ++ ++We are done ++ ++ ++ +diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc +index 82c265d..8bf2be4 100644 +--- a/tests/libtest/Makefile.inc ++++ b/tests/libtest/Makefile.inc +@@ -23,7 +23,7 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \ + lib582 lib583 lib585 lib586 lib587 \ + lib590 lib591 lib597 lib598 lib599 \ + \ +- lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 ++ lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1508 + + chkhostname_SOURCES = chkhostname.c ../../lib/curl_gethostname.c + chkhostname_LDADD = @CURL_NETWORK_LIBS@ +@@ -312,3 +312,7 @@ lib1505_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1505 + lib1506_SOURCES = lib1506.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) + lib1506_LDADD = $(TESTUTIL_LIBS) + lib1506_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1506 ++ ++lib1508_SOURCES = lib1508.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) ++lib1508_LDADD = $(TESTUTIL_LIBS) ++lib1508_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1508 +diff --git a/tests/libtest/lib1508.c b/tests/libtest/lib1508.c +new file mode 100644 +index 0000000..72f26d1 +--- /dev/null ++++ b/tests/libtest/lib1508.c +@@ -0,0 +1,49 @@ ++/*************************************************************************** ++ * _ _ ____ _ ++ * Project ___| | | | _ \| | ++ * / __| | | | |_) | | ++ * | (__| |_| | _ <| |___ ++ * \___|\___/|_| \_\_____| ++ * ++ * Copyright (C) 2013, Linus Nielsen Feltzing ++ * ++ * This software is licensed as described in the file COPYING, which ++ * you should have received as part of this distribution. The terms ++ * are also available at http://curl.haxx.se/docs/copyright.html. ++ * ++ * You may opt to use, copy, modify, merge, publish, distribute and/or sell ++ * copies of the Software, and permit persons to whom the Software is ++ * furnished to do so, under the terms of the COPYING file. ++ * ++ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY ++ * KIND, either express or implied. ++ * ++ ***************************************************************************/ ++#include "test.h" ++ ++#include "testutil.h" ++#include "warnless.h" ++#include "memdebug.h" ++ ++int test(char *URL) ++{ ++ int res = 0; ++ CURLM *m = NULL; ++ ++ (void)URL; ++ ++ global_init(CURL_GLOBAL_ALL); ++ ++ multi_init(m); ++ ++test_cleanup: ++ ++ /* proper cleanup sequence - type PB */ ++ ++ curl_multi_cleanup(m); ++ curl_global_cleanup(); ++ ++ printf("We are done\n"); ++ ++ return res; ++} +-- +1.8.1.5 + -- cgit v1.2.3-54-g00ecf