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 <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
6eeb942470
commit
f583587816
|
@ -0,0 +1,170 @@
|
||||||
|
From 5887472e49ce6c14590760f0650775653045abb5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Linus Nielsen Feltzing <linus@haxx.se>
|
||||||
|
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 <Martin.Jansa@gmail.com>
|
||||||
|
|
||||||
|
---
|
||||||
|
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 @@
|
||||||
|
+<testcase>
|
||||||
|
+<info>
|
||||||
|
+<keywords>
|
||||||
|
+HTTP
|
||||||
|
+multi
|
||||||
|
+</keywords>
|
||||||
|
+</info>
|
||||||
|
+
|
||||||
|
+# Client-side
|
||||||
|
+<client>
|
||||||
|
+<server>
|
||||||
|
+none
|
||||||
|
+</server>
|
||||||
|
+<tool>
|
||||||
|
+lib1508
|
||||||
|
+</tool>
|
||||||
|
+ <name>
|
||||||
|
+Close a multi handle without using it
|
||||||
|
+ </name>
|
||||||
|
+ <command>
|
||||||
|
+http://%HOSTIP:%HTTPPORT/path/1508
|
||||||
|
+</command>
|
||||||
|
+</client>
|
||||||
|
+
|
||||||
|
+# Verify data after the test has been "shot"
|
||||||
|
+<verify>
|
||||||
|
+<file name="log/stdout1508" mode="text">
|
||||||
|
+We are done
|
||||||
|
+</file>
|
||||||
|
+</verify>
|
||||||
|
+</testcase>
|
||||||
|
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 <linus@haxx.se>
|
||||||
|
+ *
|
||||||
|
+ * 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
|
||||||
|
|
|
@ -8,10 +8,11 @@ LIC_FILES_CHKSUM = "file://COPYING;beginline=7;md5=3a34942f4ae3fbf1a303160714e66
|
||||||
DEPENDS = "zlib gnutls"
|
DEPENDS = "zlib gnutls"
|
||||||
DEPENDS_class-native = "zlib-native openssl-native"
|
DEPENDS_class-native = "zlib-native openssl-native"
|
||||||
DEPENDS_class-nativesdk = "nativesdk-zlib"
|
DEPENDS_class-nativesdk = "nativesdk-zlib"
|
||||||
PR = "r0"
|
PR = "r1"
|
||||||
|
|
||||||
SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2 \
|
SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2 \
|
||||||
file://pkgconfig_fix.patch \
|
file://pkgconfig_fix.patch \
|
||||||
|
file://0001-Fix-NULL-pointer-reference-when-closing-an-unused-mu.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
# curl likes to set -g0 in CFLAGS, so we stop it
|
# curl likes to set -g0 in CFLAGS, so we stop it
|
||||||
|
|
Loading…
Reference in New Issue