Hello community, here is the log from the commit of package libetpan for openSUSE:Factory checked in at 2018-10-04 19:02:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libetpan (Old) and /work/SRC/openSUSE:Factory/.libetpan.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libetpan" Thu Oct 4 19:02:18 2018 rev:26 rq:639879 version:1.9.1 Changes: -------- --- /work/SRC/openSUSE:Factory/libetpan/libetpan.changes 2018-01-31 19:53:42.164424017 +0100 +++ /work/SRC/openSUSE:Factory/.libetpan.new/libetpan.changes 2018-10-04 19:02:25.651144528 +0200 @@ -1,0 +2,9 @@ +Fri Sep 21 21:01:32 UTC 2018 - [email protected] + +- update to version 1.9.1 + * Fixed some build issues for Visual Studio + * Fixes for GnuTLS + * Various bug fixes +- Remove libetpan-1.6-openssl11.patch, fixed upstream + +------------------------------------------------------------------- Old: ---- 1.8.tar.gz libetpan-1.6-openssl11.patch New: ---- 1.9.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libetpan.spec ++++++ --- /var/tmp/diff_new_pack.6GQluy/_old 2018-10-04 19:02:26.967143144 +0200 +++ /var/tmp/diff_new_pack.6GQluy/_new 2018-10-04 19:02:26.967143144 +0200 @@ -12,22 +12,20 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define sover 20 Name: libetpan -Version: 1.8 +Version: 1.9.1 Release: 0 Summary: Mail Handling Library License: BSD-3-Clause Group: Development/Libraries/C and C++ Url: http://www.etpan.org/libetpan.html Source0: https://github.com/dinhviethoa/libetpan/archive/%{version}.tar.gz -# PATCH-FIX-UPSTREAM -- make autodetection and compilation work for OpenSSL 1.1 -Patch0: libetpan-1.6-openssl11.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: cyrus-sasl-devel @@ -72,7 +70,6 @@ %prep %setup -q -%patch0 -p1 %build touch README INSTALL COPYING ++++++ 1.8.tar.gz -> 1.9.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/.gitignore new/libetpan-1.9.1/.gitignore --- old/libetpan-1.8/.gitignore 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/.gitignore 2018-09-12 13:54:16.000000000 +0200 @@ -157,3 +157,6 @@ /build-windows/Release /build-windows/x64/Debug /build-windows/x64/Release +/build-windows/libetpan.VC.db +/.vs +/build-windows/.vs/libetpan/v15 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/README.md new/libetpan-1.9.1/README.md --- old/libetpan-1.8/README.md 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/README.md 2018-09-12 13:54:16.000000000 +0200 @@ -5,6 +5,8 @@ It provides an API for C language. [](https://travis-ci.org/dinhviethoa/libetpan) +[](https://lgtm.com/projects/g/dinhviethoa/libetpan/context:cpp) +[](https://lgtm.com/projects/g/dinhviethoa/libetpan/alerts) ## Features diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/build-android/build.sh new/libetpan-1.9.1/build-android/build.sh --- old/libetpan-1.8/build-android/build.sh 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/build-android/build.sh 2018-09-12 13:54:16.000000000 +0200 @@ -1,8 +1,9 @@ #!/bin/sh -build_version=6 +build_version=7 openssl_build_version=3 cyrus_sasl_build_version=4 +iconv_build_version=1 package_name=libetpan-android current_dir="`pwd`" @@ -24,13 +25,20 @@ ./build.sh fi +if test ! -f "$current_dir/dependencies/iconv/iconv-android-$iconv_build_version.zip" ; then + echo Building ICONV first + cd "$current_dir/dependencies/iconv" + ./build.sh +fi + function build { rm -rf "$current_dir/obj" cd "$current_dir/jni" $ANDROID_NDK/ndk-build TARGET_PLATFORM=$ANDROID_PLATFORM TARGET_ARCH_ABI=$TARGET_ARCH_ABI \ OPENSSL_PATH="$current_dir/third-party/openssl-android-$openssl_build_version" \ - CYRUS_SASL_PATH="$current_dir/third-party/cyrus-sasl-android-$cyrus_sasl_build_version" + CYRUS_SASL_PATH="$current_dir/third-party/cyrus-sasl-android-$cyrus_sasl_build_version" \ + ICONV_PATH="$current_dir/third-party/iconv-android-$iconv_build_version" mkdir -p "$current_dir/$package_name-$build_version/libs/$TARGET_ARCH_ABI" cp "$current_dir/obj/local/$TARGET_ARCH_ABI/libetpan.a" "$current_dir/$package_name-$build_version/libs/$TARGET_ARCH_ABI" @@ -41,6 +49,7 @@ cd "$current_dir/third-party" unzip -qo "$current_dir/dependencies/openssl/openssl-android-$openssl_build_version.zip" unzip -qo "$current_dir/dependencies/cyrus-sasl/cyrus-sasl-android-$cyrus_sasl_build_version.zip" +unzip -qo "$current_dir/dependencies/iconv/iconv-android-$iconv_build_version.zip" cd "$current_dir/.." tar xzf "$current_dir/../build-mac/autogen-result.tar.gz" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/build-android/dependencies/iconv/.gitignore new/libetpan-1.9.1/build-android/dependencies/iconv/.gitignore --- old/libetpan-1.8/build-android/dependencies/iconv/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/libetpan-1.9.1/build-android/dependencies/iconv/.gitignore 2018-09-12 13:54:16.000000000 +0200 @@ -0,0 +1,4 @@ +build-android/libiconv/* +build-android/obj/* +*.tar.gz +*.tar \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/build-android/dependencies/iconv/build-android/jni/Android.mk new/libetpan-1.9.1/build-android/dependencies/iconv/build-android/jni/Android.mk --- old/libetpan-1.8/build-android/dependencies/iconv/build-android/jni/Android.mk 1970-01-01 01:00:00.000000000 +0100 +++ new/libetpan-1.9.1/build-android/dependencies/iconv/build-android/jni/Android.mk 2018-09-12 13:54:16.000000000 +0200 @@ -0,0 +1,26 @@ + +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE := iconv +LOCAL_CFLAGS := \ + -Wno-multichar \ + -DANDROID \ + -DLIBDIR=\"\" \ + -DBUILDING_LIBICONV \ + -DIN_LIBRARY + +LOCAL_SRC_FILES := \ + ../libiconv/libcharset/lib/localcharset.c \ + ../libiconv/lib/iconv.c \ + ../libiconv/lib/relocatable.c + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/../libiconv/include \ + $(LOCAL_PATH)/../libiconv/libcharset \ + $(LOCAL_PATH)/../libiconv/lib \ + $(LOCAL_PATH)/../libiconv/libcharset/include \ + $(LOCAL_PATH)/../libiconv/srclib + +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../libiconv/include +include $(BUILD_STATIC_LIBRARY) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/build-android/dependencies/iconv/build.sh new/libetpan-1.9.1/build-android/dependencies/iconv/build.sh --- old/libetpan-1.8/build-android/dependencies/iconv/build.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/libetpan-1.9.1/build-android/dependencies/iconv/build.sh 2018-09-12 13:54:16.000000000 +0200 @@ -0,0 +1,68 @@ +#!/bin/sh + +version=1.15 +build_version=1 +package_name=iconv-android +current_dir="`pwd`" + +if test "x$ANDROID_NDK" = x ; then + echo should set ANDROID_NDK before running this script. + exit 1 +fi + +function build { + cd "$current_dir/build-android" + $ANDROID_NDK/ndk-build TARGET_PLATFORM=$ANDROID_PLATFORM TARGET_ARCH_ABI=$TARGET_ARCH_ABI + mkdir -p "$current_dir/$package_name-$build_version/libs/$TARGET_ARCH_ABI" + cp "$current_dir/build-android/obj/local/$TARGET_ARCH_ABI/libiconv.a" "$current_dir/$package_name-$build_version/libs/$TARGET_ARCH_ABI" +} + +if test ! -f $current_dir/$package_name-$build_version.zip; then + if test ! -f $current_dir/build-android/libiconv-$version.tar.gz; then + cd "$current_dir/build-android" + curl -O http://ftp.gnu.org/gnu/libiconv/libiconv-$version.tar.gz + cd .. + fi + + #rm -rf "$current_dir/build-android/libiconv" + if test ! -d $current_dir/build-android/libiconv; then + cd "$current_dir/build-android" + tar xzf "$current_dir/build-android/libiconv-$version.tar.gz" + mv -v "$current_dir/build-android/libiconv-$version" "$current_dir/build-android/libiconv" + + cd "$current_dir/build-android/libiconv" + ./configure + + # Disable HAVE_LANGINFO_CODESET + cd "$current_dir/build-android/libiconv/libcharset" + sed -i '.original' 's/HAVE_LANGINFO_CODESET 1/HAVE_LANGINFO_CODESET 0/g' config.h + + cd "$current_dir" + fi + + rm -rf "$current_dir/build-android/obj" + mkdir -p "$current_dir/$package_name-$build_version/libs/$arch_dir_name" + cp -r "$current_dir/build-android/libiconv/include" "$current_dir/$package_name-$build_version" + + mkdir -p "$current_dir/$package_name-$build_version" + + # Start building. + ANDROID_PLATFORM=android-16 + archs="armeabi armeabi-v7a x86" + for arch in $archs ; do + TARGET_ARCH_ABI=$arch + build + done + + ANDROID_PLATFORM=android-21 + archs="arm64-v8a" + for arch in $archs ; do + TARGET_ARCH_ABI=$arch + build + done + + cd "$current_dir" + zip -qry "$package_name-$build_version.zip" "$package_name-$build_version" + rm -rf "$package_name-$build_version" +fi + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/build-android/jni/Android.mk new/libetpan-1.9.1/build-android/jni/Android.mk --- old/libetpan-1.8/build-android/jni/Android.mk 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/build-android/jni/Android.mk 2018-09-12 13:54:16.000000000 +0200 @@ -9,6 +9,11 @@ $(error CYRUS_SASL_PATH must be set) endif + +ifeq ($(ICONV_PATH),) +$(error ICONV_PATH must be set) +endif + src_files = \ ./src/data-types/base64.c \ ./src/data-types/carray.c \ @@ -123,7 +128,7 @@ NDK_TOOLCHAIN_VERSION := clang LOCAL_MODULE := etpan LOCAL_SRC_FILES := $(addprefix ../../, $(src_files)) -LOCAL_CFLAGS += -DHAVE_CONFIG_H=1 +LOCAL_CFLAGS += -DHAVE_CONFIG_H=1 -DHAVE_ICONV=1 c_includes = \ src \ src/data-types \ @@ -140,6 +145,6 @@ LOCAL_C_INCLUDES = $(addprefix ../../, $(c_includes)) \ $(LOCAL_PATH)/../include $(LOCAL_PATH)/../include/libetpan \ - $(OPENSSL_PATH)/include $(CYRUS_SASL_PATH)/include + $(OPENSSL_PATH)/include $(CYRUS_SASL_PATH)/include $(ICONV_PATH)/include include $(BUILD_STATIC_LIBRARY) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/build-windows/stdbool.h new/libetpan-1.9.1/build-windows/stdbool.h --- old/libetpan-1.8/build-windows/stdbool.h 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/build-windows/stdbool.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#define false 0 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/configure.ac new/libetpan-1.9.1/configure.ac --- old/libetpan-1.8/configure.ac 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/configure.ac 2018-09-12 13:54:16.000000000 +0200 @@ -2,9 +2,9 @@ # Process this file with autoconf to produce a configure script. m4_define([maj_version], [1]) -m4_define([min_version], [8]) -m4_define([mic_version], [0]) -m4_define([api_current], [21]) +m4_define([min_version], [9]) +m4_define([mic_version], [1]) +m4_define([api_current], [22]) m4_define([api_revision], [0]) m4_define([api_compatibility], [20]) dnl API version @@ -212,7 +212,7 @@ AC_CHECK_HEADER(openssl/ssl.h, [ AC_CHECK_LIB(rsaref, main, [SSLLIBS="-lrsaref"]) AC_CHECK_LIB(crypto, main, [SSLLIBS="-lcrypto $SSLLIBS"], [], [$SSLLIBS]) - AC_CHECK_LIB(ssl, SSL_library_init, with_openssl=yes, [], [$SSLLIBS])]) + AC_CHECK_LIB(ssl, SSL_CTX_new, with_openssl=yes, [], [$SSLLIBS])]) if test "x$with_openssl" != "xyes"; then CPPFLAGS="$OCPPFLAGS" LDFLAGS="$OLDFLAGS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/data-types/connect.c new/libetpan-1.9.1/src/data-types/connect.c --- old/libetpan-1.8/src/data-types/connect.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/data-types/connect.c 2018-09-12 13:54:16.000000000 +0200 @@ -190,7 +190,11 @@ struct sockaddr_un sa; int s; - if (!(memcpy(sa.sun_path, path, strlen(path)))) { + if (sizeof(sa.sun_path) <= strlen(path)) { + return -1; + } + + if (!(memcpy(sa.sun_path, path, strlen(path)+1))) { return -1; } sa.sun_family = AF_UNIX; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/data-types/mailstream_low.c new/libetpan-1.9.1/src/data-types/mailstream_low.c --- old/libetpan-1.8/src/data-types/mailstream_low.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/data-types/mailstream_low.c 2018-09-12 13:54:16.000000000 +0200 @@ -429,7 +429,6 @@ int fd; int idle_fd; int cancel_fd; - struct timeval delay; int r; #if defined(WIN32) fd_set readfds; @@ -533,6 +532,7 @@ if (cancel_fd > maxfd) { maxfd = cancel_fd; } + struct timeval delay; delay.tv_sec = max_idle_delay; delay.tv_usec = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/data-types/mailstream_ssl.c new/libetpan-1.9.1/src/data-types/mailstream_ssl.c --- old/libetpan-1.8/src/data-types/mailstream_ssl.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/data-types/mailstream_ssl.c 2018-09-12 13:54:16.000000000 +0200 @@ -262,6 +262,7 @@ void mailstream_openssl_init_not_required(void) { #ifdef USE_SSL + mailstream_ssl_init_lock(); MUTEX_LOCK(&ssl_lock); openssl_init_done = 1; MUTEX_UNLOCK(&ssl_lock); @@ -408,7 +409,7 @@ static int mailstream_openssl_client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey) { - struct mailstream_ssl_context * ssl_context = (struct mailstream_ssl_context *)SSL_CTX_get_app_data(ssl->ctx); + struct mailstream_ssl_context * ssl_context = (struct mailstream_ssl_context *)SSL_CTX_get_app_data(SSL_get_SSL_CTX(ssl)); if (x509 == NULL || pkey == NULL) { return 0; @@ -427,7 +428,7 @@ } static struct mailstream_ssl_data * ssl_data_new_full(int fd, time_t timeout, - SSL_METHOD * method, void (* callback)(struct mailstream_ssl_context * ssl_context, void * cb_data), + const SSL_METHOD * method, void (* callback)(struct mailstream_ssl_context * ssl_context, void * cb_data), void * cb_data) { struct mailstream_ssl_data * ssl_data; @@ -567,7 +568,8 @@ #if GNUTLS_VERSION_NUMBER <= 0x020c00 st->type = type; #else - st->key_type = type; + st->cert_type = type; + st->key_type = GNUTLS_PRIVKEY_X509; #endif st->cert.x509 = &(ssl_context->client_x509); st->key.x509 = ssl_context->client_pkey; @@ -1454,8 +1456,8 @@ } result = carray_new(4); - for(skpos = 0 ; skpos < sk_num(skx) ; skpos ++) { - X509 * x = (X509 *) sk_value(skx, skpos); + for(skpos = 0 ; skpos < sk_num((_STACK *) skx) ; skpos ++) { + X509 * x = (X509 *) sk_value((_STACK *) skx, skpos); unsigned char * p; MMAPString * str; int length = i2d_X509(x, NULL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/engine/mailprivacy_gnupg.c new/libetpan-1.9.1/src/engine/mailprivacy_gnupg.c --- old/libetpan-1.8/src/engine/mailprivacy_gnupg.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/engine/mailprivacy_gnupg.c 2018-09-12 13:54:16.000000000 +0200 @@ -1491,6 +1491,10 @@ multipart = mailprivacy_new_file_part(privacy, NULL, "multipart/signed", -1); + if (multipart == NULL) { + res = MAIL_ERROR_MEMORY; + goto unlink_description; + } content = multipart->mm_content_type; @@ -1871,6 +1875,10 @@ multipart = mailprivacy_new_file_part(privacy, NULL, "multipart/encrypted", -1); + if (multipart == NULL) { + res = MAIL_ERROR_MEMORY; + goto unlink_description; + } content = multipart->mm_content_type; @@ -1915,10 +1923,10 @@ version_filename, "application/pgp-encrypted", MAILMIME_MECHANISM_8BIT); - if (r != MAIL_NO_ERROR) { + if (version_mime == NULL) { mailprivacy_mime_clear(multipart); mailmime_free(multipart); - res = r; + res = MAIL_ERROR_MEMORY; goto unlink_version; } @@ -1938,10 +1946,10 @@ encrypted_filename, "application/octet-stream", MAILMIME_MECHANISM_8BIT); - if (r != MAIL_NO_ERROR) { + if (encrypted_mime == NULL) { mailprivacy_mime_clear(multipart); mailmime_free(multipart); - res = r; + res = MAIL_ERROR_MEMORY; goto unlink_version; } @@ -2092,6 +2100,10 @@ multipart = mailprivacy_new_file_part(privacy, NULL, "multipart/encrypted", -1); + if (multipart == NULL) { + res = MAIL_ERROR_MEMORY; + goto unlink_description; + } content = multipart->mm_content_type; @@ -2135,10 +2147,10 @@ version_filename, "application/pgp-encrypted", MAILMIME_MECHANISM_8BIT); - if (r != MAIL_NO_ERROR) { + if (version_mime == NULL) { mailprivacy_mime_clear(multipart); mailmime_free(multipart); - res = r; + res = MAIL_ERROR_MEMORY; goto unlink_version; } @@ -2158,10 +2170,10 @@ encrypted_filename, "application/octet-stream", MAILMIME_MECHANISM_8BIT); - if (r != MAIL_NO_ERROR) { + if (encrypted_mime == NULL) { mailprivacy_mime_clear(multipart); mailmime_free(multipart); - res = r; + res = MAIL_ERROR_MEMORY; goto unlink_version; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/engine/mailprivacy_smime.c new/libetpan-1.9.1/src/engine/mailprivacy_smime.c --- old/libetpan-1.8/src/engine/mailprivacy_smime.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/engine/mailprivacy_smime.c 2018-09-12 13:54:16.000000000 +0200 @@ -37,6 +37,9 @@ # include <config.h> #endif +#if __APPLE__ +#include <TargetConditionals.h> +#endif #include "mailprivacy_smime.h" #include <string.h> #ifdef WIN32 @@ -1537,7 +1540,13 @@ char quoted_store_cert_filename[PATH_MAX]; int r; char command[PATH_MAX]; - + +#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR + //https://github.com/dinhviethoa/libetpan/issues/275 + //get_cert_from_sig is not needed on iOS + return MAIL_ERROR_COMMAND; +#endif + if (* cert_dir == '\0') return MAIL_ERROR_INVAL; @@ -1597,7 +1606,12 @@ "openssl pkcs7 -inform DER -in '%s' -out '%s' -print_certs 2>/dev/null", quoted_signature_filename, quoted_store_cert_filename); +#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR + //https://github.com/dinhviethoa/libetpan/issues/275 + //system() is not supported on iOS 11. r = system(command); +#endif + if (WEXITSTATUS(r) != 0) { res = MAIL_ERROR_COMMAND; goto unlink_signature; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/engine/mailprivacy_tools.c new/libetpan-1.9.1/src/engine/mailprivacy_tools.c --- old/libetpan-1.8/src/engine/mailprivacy_tools.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/engine/mailprivacy_tools.c 2018-09-12 13:54:16.000000000 +0200 @@ -37,6 +37,10 @@ # include <config.h> #endif +#if __APPLE__ +#include <TargetConditionals.h> +#endif + #include "mailprivacy_tools.h" #include "mailprivacy_tools_private.h" @@ -1323,6 +1327,12 @@ char * stdoutfile, char * stderrfile, int * bad_passphrase) { +#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR + //https://github.com/dinhviethoa/libetpan/issues/275 + //mailprivacy_spawn_and_wait is not needed on iOS + return MAIL_ERROR_COMMAND; +#endif + #ifdef WIN32 int res; SECURITY_ATTRIBUTES sec_attr; @@ -1509,8 +1519,12 @@ dup2(fd_err, 2); close(fd_err); +#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR + //https://github.com/dinhviethoa/libetpan/issues/275 + //system() is not supported on iOS 11. status = system(command); - +#endif + exit(WEXITSTATUS(status)); } break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/low-level/imap/acl.c new/libetpan-1.9.1/src/low-level/imap/acl.c --- old/libetpan-1.8/src/low-level/imap/acl.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/low-level/imap/acl.c 2018-09-12 13:54:16.000000000 +0200 @@ -345,8 +345,10 @@ ext_data->ext_extension->ext_id == MAILIMAP_EXTENSION_ACL && ext_data->ext_type == MAILIMAP_ACL_TYPE_MYRIGHTS_DATA) { * result = (struct mailimap_acl_myrights_data *)ext_data->ext_data; + ext_data->ext_data = NULL; /* remove the element from rsp_extension_list */ clist_delete(session->imap_response_info->rsp_extension_list, cur); + mailimap_extension_data_free(ext_data); break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/low-level/imap/mailimap_extension.c new/libetpan-1.9.1/src/low-level/imap/mailimap_extension.c --- old/libetpan-1.8/src/low-level/imap/mailimap_extension.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/low-level/imap/mailimap_extension.c 2018-09-12 13:54:16.000000000 +0200 @@ -166,7 +166,8 @@ if (data == NULL) return; - if (data->ext_extension != NULL) + if (data->ext_extension != NULL && data->ext_data != NULL) + /* ext_free() includes free(data) */ data->ext_extension->ext_free(data); else free(data); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/low-level/imap/mailimap_extension_types.h new/libetpan-1.9.1/src/low-level/imap/mailimap_extension_types.h --- old/libetpan-1.8/src/low-level/imap/mailimap_extension_types.h 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/low-level/imap/mailimap_extension_types.h 2018-09-12 13:54:16.000000000 +0200 @@ -33,6 +33,7 @@ #define MAILIMAP_EXTENSION_TYPES_H #include <libetpan/mailstream.h> +#include <libetpan/mailimap_types.h> struct mailimap_extension_data; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/low-level/imap/mailimap_types.c new/libetpan-1.9.1/src/low-level/imap/mailimap_types.c --- old/libetpan-1.8/src/low-level/imap/mailimap_types.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/low-level/imap/mailimap_types.c 2018-09-12 13:54:16.000000000 +0200 @@ -1201,8 +1201,10 @@ LIBETPAN_EXPORT void mailimap_flag_list_free(struct mailimap_flag_list * flag_list) { - clist_foreach(flag_list->fl_list, (clist_func) mailimap_flag_free, NULL); - clist_free(flag_list->fl_list); + if (flag_list->fl_list) { + clist_foreach(flag_list->fl_list, (clist_func) mailimap_flag_free, NULL); + clist_free(flag_list->fl_list); + } free(flag_list); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/low-level/imf/mailimf.c new/libetpan-1.9.1/src/low-level/imf/mailimf.c --- old/libetpan-1.8/src/low-level/imf/mailimf.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/low-level/imf/mailimf.c 2018-09-12 13:54:16.000000000 +0200 @@ -1173,7 +1173,6 @@ return res; } -LIBETPAN_EXPORT static int mailimf_fws_atom_for_word_parse(const char * message, size_t length, size_t * indx, char ** result, int * p_missing_closing_quote) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/low-level/mbox/mailmbox.c new/libetpan-1.9.1/src/low-level/mbox/mailmbox.c --- old/libetpan-1.8/src/low-level/mbox/mailmbox.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/low-level/mbox/mailmbox.c 2018-09-12 13:54:16.000000000 +0200 @@ -1162,7 +1162,7 @@ size_t cur_offset; char * dest; size_t size; - int i; + unsigned int i; size = 0; for(i = 0 ; i < carray_count(folder->mb_tab) ; i ++) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/low-level/mime/mailmime_decode.c new/libetpan-1.9.1/src/low-level/mime/mailmime_decode.c --- old/libetpan-1.8/src/low-level/mime/mailmime_decode.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/low-level/mime/mailmime_decode.c 2018-09-12 13:54:16.000000000 +0200 @@ -369,180 +369,6 @@ struct mailmime_encoded_word ** result, int * p_has_fwd, int * p_missing_closing_quote) { -#if 0 - size_t cur_token; - char * charset; - int encoding; - char * text; - size_t end_encoding; - char * decoded; - size_t decoded_len; - struct mailmime_encoded_word * ew; - int r; - int res; - int opening_quote; - int end; - int has_fwd; - int missing_closing_quote; - - cur_token = * indx; - - missing_closing_quote = 0; - has_fwd = 0; - r = mailimf_fws_parse(message, length, &cur_token); - if (r == MAILIMF_NO_ERROR) { - has_fwd = 1; - } - if ((r != MAILIMF_NO_ERROR) && (r != MAILIMF_ERROR_PARSE)) { - res = r; - goto err; - } - - opening_quote = FALSE; - r = mailimf_char_parse(message, length, &cur_token, '\"'); - if (r == MAILIMF_NO_ERROR) { - opening_quote = TRUE; - } - else if (r == MAILIMF_ERROR_PARSE) { - /* do nothing */ - } - else { - res = r; - goto err; - } - - r = mailimf_token_case_insensitive_parse(message, length, &cur_token, "=?"); - if (r != MAILIMF_NO_ERROR) { - res = r; - goto err; - } - - r = mailmime_charset_parse(message, length, &cur_token, &charset); - if (r != MAILIMF_NO_ERROR) { - res = r; - goto err; - } - - r = mailimf_char_parse(message, length, &cur_token, '?'); - if (r != MAILIMF_NO_ERROR) { - res = r; - goto free_charset; - } - - r = mailmime_encoding_parse(message, length, &cur_token, &encoding); - if (r != MAILIMF_NO_ERROR) { - res = r; - goto free_charset; - } - - r = mailimf_char_parse(message, length, &cur_token, '?'); - if (r != MAILIMF_NO_ERROR) { - res = r; - goto free_charset; - } - - end = FALSE; - end_encoding = cur_token; - while (1) { - if (end_encoding >= length) - break; - - if (end_encoding + 1 < length) { - if ((message[end_encoding] == '?') && (message[end_encoding + 1] == '=')) { - end = TRUE; - } - } - - if (end) - break; - - end_encoding ++; - } - - decoded_len = 0; - decoded = NULL; - switch (encoding) { - case MAILMIME_ENCODING_B: - r = mailmime_base64_body_parse(message, end_encoding, - &cur_token, &decoded, - &decoded_len); - - if (r != MAILIMF_NO_ERROR) { - res = r; - goto free_charset; - } - break; - case MAILMIME_ENCODING_Q: - r = mailmime_quoted_printable_body_parse(message, end_encoding, - &cur_token, &decoded, - &decoded_len, TRUE); - - if (r != MAILIMF_NO_ERROR) { - res = r; - goto free_charset; - } - - break; - } - - text = malloc(decoded_len + 1); - if (text == NULL) { - res = MAILIMF_ERROR_MEMORY; - goto free_charset; - } - - if (decoded_len > 0) - memcpy(text, decoded, decoded_len); - text[decoded_len] = '\0'; - - mailmime_decoded_part_free(decoded); - - r = mailimf_token_case_insensitive_parse(message, length, &cur_token, "?="); -#if 0 - if (r != MAILIMF_NO_ERROR) { - res = r; - goto free_encoded_text; - } -#endif - - if (opening_quote) { - r = mailimf_char_parse(message, length, &cur_token, '\"'); -#if 0 - if ((r != MAILIMF_NO_ERROR) && (r != MAILIMF_ERROR_PARSE)) { - res = r; - goto free_encoded_text; - } -#endif - if (r == MAILIMF_ERROR_PARSE) { - missing_closing_quote = 1; - } - } - - /* fix charset */ - if (strcasecmp(charset, "utf8") == 0) { - free(charset); - charset = strdup("utf-8"); - } - ew = mailmime_encoded_word_new(charset, text); - if (ew == NULL) { - res = MAILIMF_ERROR_MEMORY; - goto free_encoded_text; - } - - * result = ew; - * indx = cur_token; - * p_has_fwd = has_fwd; - * p_missing_closing_quote = missing_closing_quote; - - return MAILIMF_NO_ERROR; - - free_encoded_text: - mailmime_encoded_text_free(text); - free_charset: - mailmime_charset_free(charset); - err: - return res; -#else /* Parse the following, when a unicode character encoding is split. =?UTF-8?B?4Lij4Liw4LmA4Lia4Li04LiU4LiE4Lin4Liy4Lih4Lih4Lix4LiZ4Liq4LmM?= @@ -821,13 +647,11 @@ mailmime_decoded_part_free(decoded); free_body: free(body); -free_encoded_text: mailmime_encoded_text_free(text); free_charset: mailmime_charset_free(charset); err: return res; -#endif } static int mailmime_charset_parse(const char * message, size_t length, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/src/low-level/smtp/mailsmtp.c new/libetpan-1.9.1/src/low-level/smtp/mailsmtp.c --- old/libetpan-1.8/src/low-level/smtp/mailsmtp.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/src/low-level/smtp/mailsmtp.c 2018-09-12 13:54:16.000000000 +0200 @@ -1224,6 +1224,8 @@ return "Transaction failed"; case MAILSMTP_ERROR_MEMORY: return "Memory error"; + case MAILSMTP_ERROR_AUTH_NOT_SUPPORTED: + return "Authentication is not supported"; case MAILSMTP_ERROR_CONNECTION_REFUSED: return "Connection refused"; case MAILSMTP_ERROR_STARTTLS_TEMPORARY_FAILURE: @@ -1231,7 +1233,7 @@ case MAILSMTP_ERROR_STARTTLS_NOT_SUPPORTED: return "TLS not supported by server"; case MAILSMTP_ERROR_AUTH_LOGIN: - return "Login failed"; + return "Login failed"; default: return "Unknown error code"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/tests/option-parser.c new/libetpan-1.9.1/tests/option-parser.c --- old/libetpan-1.8/tests/option-parser.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/tests/option-parser.c 2018-09-12 13:54:16.000000000 +0200 @@ -97,6 +97,7 @@ {"cache", 1, 0, 'c'}, {"flags", 1, 0, 'f'}, {"debug-stream", 0, 0, 'D'}, + {NULL, 0, 0, 0}, }; #endif int r; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libetpan-1.8/tests/smtpsend.c new/libetpan-1.9.1/tests/smtpsend.c --- old/libetpan-1.8/tests/smtpsend.c 2017-05-08 05:27:35.000000000 +0200 +++ new/libetpan-1.9.1/tests/smtpsend.c 2018-09-12 13:54:16.000000000 +0200 @@ -54,12 +54,12 @@ #define BLOCKSIZE 4096 int collect(struct mem_message *message) { - struct stat sb; int len; memset(message, 0, sizeof(struct mem_message)); #ifndef MMAP_UNAVAILABLE + struct stat sb; /* if stdin is a file whose size is known, try to mmap it */ if (!fstat(0, &sb) && S_ISREG(sb.st_mode) && sb.st_size >= 0) { message->len = sb.st_size; @@ -286,6 +286,7 @@ {"no-esmtp", 0, 0, 'E'}, {"ssl", 0, 0, 'L'}, {"lmtp", 0, 0, 'T'}, + {NULL, 0, 0, 0}, }; #endif
