From ae13c93b7db9f9c68eaf95150ed551b3b649d8c4 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 28 Sep 2006 21:26:06 +0000 Subject: Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurl would crash if a bad function sequence was used when shutting down after using the multi interface (i.e using easy_cleanup after multi_cleanup) so precautions have been added to make sure it doesn't any more - test case 529 was added to verify. --- tests/data/Makefile.am | 4 +--- tests/data/test529 | 55 +++++++++++++++++++++++++++++++++++++++++++++++ tests/libtest/Makefile.am | 12 ++++++++--- tests/libtest/lib525.c | 8 +++++++ 4 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 tests/data/test529 (limited to 'tests') diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index a5eec9545..067499c6f 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -35,6 +35,4 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test256 test257 test258 test259 test260 test261 test262 test263 test264 \ test265 test266 test267 test268 test269 test270 test271 test272 test273 \ test274 test275 test524 test525 test276 test277 test526 test527 test528 \ - test530 DISABLED test278 test279 test531 test280 - - + test530 DISABLED test278 test279 test531 test280 test529 diff --git a/tests/data/test529 b/tests/data/test529 new file mode 100644 index 000000000..d5c657d30 --- /dev/null +++ b/tests/data/test529 @@ -0,0 +1,55 @@ + + +FTP +PORT +STOR + + +# Server-side + + + + + +# Client-side + + +ftp + + +lib529 + + +FTP PORT upload using multi interface (weird cleanup function sequence) + + +ftp://%HOSTIP:%FTPPORT/path/529 log/upload529 + + +Moooooooooooo + upload this + + + +# Verify data after the test has been "shot" + + +^PORT .* +^EPRT .* +^LPRT .* + + +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD path +PORT 127,0,0,1,5,109 +TYPE I +STOR 529 +QUIT + + +Moooooooooooo + upload this + + diff --git a/tests/libtest/Makefile.am b/tests/libtest/Makefile.am index 877532dd9..4b52a5f9a 100644 --- a/tests/libtest/Makefile.am +++ b/tests/libtest/Makefile.am @@ -39,9 +39,10 @@ LIBDIR = $(top_builddir)/lib SUPPORTFILES = first.c test.h # These are all libcurl test programs -noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 \ - lib508 lib509 lib510 lib511 lib512 lib513 lib514 lib515 lib516 lib517 \ - lib518 lib519 lib520 lib521 lib523 lib524 lib525 lib526 lib527 lib530 +noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 \ + lib507 lib508 lib509 lib510 lib511 lib512 lib513 lib514 lib515 lib516 \ + lib517 lib518 lib519 lib520 lib521 lib523 lib524 lib525 lib526 lib527 \ + lib529 lib530 lib500_SOURCES = lib500.c $(SUPPORTFILES) lib500_LDADD = $(LIBDIR)/libcurl.la @@ -152,6 +153,11 @@ lib527_CFLAGS = -DLIB527 lib527_LDADD = $(LIBDIR)/libcurl.la lib527_DEPENDENCIES = $(LIBDIR)/libcurl.la +lib529_SOURCES = lib525.c $(SUPPORTFILES) +lib529_CFLAGS = -DLIB529 +lib529_LDADD = $(LIBDIR)/libcurl.la +lib529_DEPENDENCIES = $(LIBDIR)/libcurl.la + lib530_SOURCES = lib530.c $(SUPPORTFILES) lib530_CFLAGS = -DLIB530 lib530_LDADD = $(LIBDIR)/libcurl.la diff --git a/tests/libtest/lib525.c b/tests/libtest/lib525.c index 77e5c203a..240628028 100644 --- a/tests/libtest/lib525.c +++ b/tests/libtest/lib525.c @@ -123,9 +123,17 @@ int test(char *URL) res = CURLM_CALL_MULTI_PERFORM; } +#ifdef LIB529 + /* test 529 */ + curl_multi_remove_handle(m, curl); + curl_multi_cleanup(m); + curl_easy_cleanup(curl); +#else + /* test 525 */ curl_multi_remove_handle(m, curl); curl_easy_cleanup(curl); curl_multi_cleanup(m); +#endif fclose(hd_src); /* close the local file */ -- cgit v1.2.3