Hello community, here is the log from the commit of package imapfilter for openSUSE:Factory checked in at 2016-02-16 09:19:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/imapfilter (Old) and /work/SRC/openSUSE:Factory/.imapfilter.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "imapfilter" Changes: -------- --- /work/SRC/openSUSE:Factory/imapfilter/imapfilter.changes 2015-10-17 16:39:10.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.imapfilter.new/imapfilter.changes 2016-02-16 09:19:22.000000000 +0100 @@ -1,0 +2,13 @@ +Sat Feb 6 23:28:53 UTC 2016 - [email protected] + +- update to version 2.6.6: + * Bug fix; print an error message if "ssl" has been set to "ssl3". + +- changes from version 2.6.5: + * Possible to build again with OpenSSL when support for SSL 3.0 is + disabled. + +- changes from version 2.6.4: + * Support for OAuth 2.0 and the XOAUTH2 authentication mechanism. + +------------------------------------------------------------------- Old: ---- imapfilter-2.6.3.tar.gz New: ---- imapfilter-2.6.6.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ imapfilter.spec ++++++ --- /var/tmp/diff_new_pack.nar3Wi/_old 2016-02-16 09:19:23.000000000 +0100 +++ /var/tmp/diff_new_pack.nar3Wi/_new 2016-02-16 09:19:23.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package imapfilter # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,7 +21,7 @@ License: MIT Group: Productivity/Networking/Email/Utilities Url: https://github.com/lefcha/imapfilter -Version: 2.6.3 +Version: 2.6.6 Release: 0 Source: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ imapfilter-2.6.3.tar.gz -> imapfilter-2.6.6.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/AUTHORS new/imapfilter-2.6.6/AUTHORS --- old/imapfilter-2.6.3/AUTHORS 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/AUTHORS 2016-01-23 21:12:28.000000000 +0100 @@ -1 +1 @@ -Lefteris Chatzimparmpas <[email protected]> +Lefteris Chatzimparmpas <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/LICENSE new/imapfilter-2.6.6/LICENSE --- old/imapfilter-2.6.3/LICENSE 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/LICENSE 2016-01-23 21:12:28.000000000 +0100 @@ -1,4 +1,4 @@ -Copyright (c) 2001-2015 Eleftherios Chatzimparmpas +Copyright (c) 2001-2016 Eleftherios Chatzimparmpas Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/NEWS new/imapfilter-2.6.6/NEWS --- old/imapfilter-2.6.3/NEWS 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/NEWS 2016-01-23 21:12:28.000000000 +0100 @@ -1,3 +1,12 @@ +IMAPFilter 2.6.6 - 23 Jan 2016 + - Bug fix; print an error message if "ssl" has been set to "ssl3". + +IMAPFilter 2.6.5 - 18 Jan 2016 + - Possible to build again with OpenSSL when support for SSL 3.0 is disabled. + +IMAPFilter 2.6.4 - 8 Dec 2015 + - Support for OAuth 2.0 and the XOAUTH2 authentication mechanism. + IMAPFilter 2.6.3 - 30 Sep 2015 - Support for loading a default CA certificates file. - A new has_unkeyword() method to search messages without a keyword flag set. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/doc/imapfilter_config.5 new/imapfilter-2.6.6/doc/imapfilter_config.5 --- old/imapfilter-2.6.3/doc/imapfilter_config.5 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/doc/imapfilter_config.5 2016-01-23 21:12:28.000000000 +0100 @@ -1,4 +1,4 @@ -.Dd Sep 30, 2015 +.Dd Dec 6, 2015 .Dt IMAPFILTER_CONFIG 5 .Os .Sh NAME @@ -13,7 +13,9 @@ .Pp Although knowledge of Lua is not required to use .Xr imapfilter 1 , -it is nonetheless recommended, especially if one wants to extend it. +it is nonetheless recommended, especially if one wants to extend it. For more +information on Lua see +.Ad http://www.lua.org/docs.html . .Sh CONVENTIONS .Pp A brief description of the Lua values and types mentioned hereafter in the @@ -263,9 +265,28 @@ .Bl -tag -width Ds .It Va password User's secret keyword. If a password wasn't supplied the user will be asked to -enter one interactively the first time it will be needed. It takes a +enter one interactively the first time it will be needed (unless +.Vt oauth2 +has been set). It takes a .Vt string as a value. +.It Va oauth2 +The OAuth2 string to use to authenticate if the server supports the XOAUTH2 +authentication mechanism. If the server does not support it and a +.Vt password +has been also set, authentication will be attempted using the +.Vt password . +It takes a +.Vt string +as a value. +.Pp +Note that this requires that an OAuth client ID and client secret have been +obtained, an OAuth2 token has been generated and authorized, a new access token +has been generated using the refresh token if the last access token has +expired, and an OAuth2 string has been generated from the access token. The +aforementioned OAuth2 string is a Base64 encoded string that should be set +here. For more information see +.Ad https://developers.google.com/gmail/xoauth2_protocol . .It Va port The port to connect to. It takes a .Vt number @@ -856,7 +877,8 @@ that match a specific regular expression pattern. The matching mechanism that is used to support this is based on the Perl-compatible regular expressions (PCRE), and more information about the patterns and modifiers that can be used, -is available in the relevant documentation. +is available in the relevant documentation at +.Ad http://pcre.org/original/doc/html/ . .Pp This way of searching is not supported by the IMAP protocol, and this means that what actually happens under the hood, is that the relevant parts of all @@ -1315,7 +1337,9 @@ type. Note that due to Lua using backslash .Sq \e as an escape character for its strings, one has to double backslashes in order -to insert a single backslash inside a regular expression pattern. +to insert a single backslash inside a regular expression pattern. For more +information on PCRE see +.Ad http://pcre.org/original/doc/html/ . .El .Pp Examples: @@ -1339,6 +1363,4 @@ User's home directory. .El .Sh SEE ALSO -.Xr imapfilter 1 , -.Ad http://www.lua.org/docs.html , -.Ad http://pcre.org/original/doc/html/ +.Xr imapfilter 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/samples/extend.lua new/imapfilter-2.6.6/samples/extend.lua --- old/imapfilter-2.6.3/samples/extend.lua 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/samples/extend.lua 2016-01-23 21:12:28.000000000 +0100 @@ -120,3 +120,42 @@ password = password2 } + +-- An alternative way to authenticate to a server is by using a OAuth2 string, +-- if the server supports the XOAUTH2 authentication mechanism. +-- +-- In order to generate an OAuth2 string the oauth2.py script and library can +-- be used, and instructions on how to use it and where to download it are +-- available at: +-- +-- https://github.com/google/gmail-oauth2-tools/wiki/OAuth2DotPyRunThrough +-- +-- The generated OAuth2 string is then supplied to imapfilter in order to +-- authenticate to the IMAP server using it instead of a login +-- username/password pair. +-- +-- Here we assume that imapfilter has the user, the cliend id, the client +-- secret and the refresh token, and uses them to generate a new access token +-- (access tokens expire after one hour), and then from the new access token to +-- generate the OAuth2 string that is used with the IMAP server: +user = '[email protected]' +clientid = '364545978226.apps.googleusercontent.com' +clientsecret = 'zNrNsBzOOnQy8_O-8LkofeTR' +refreshtoken = '1/q4SaB2JMQB9I-an6F1rxJE9OkOMtfjaz1bPm1tfDpQM' + +status, output = pipe_from('oauth2.py --client_id=' .. clientid .. + ' --client_secret=' .. clientsecret .. + ' --refresh_token=' .. refreshtoken) +_, _, accesstoken = string.find(output, 'Access Token: ([%w%p]+)\n') + +status, output = pipe_from('oauth2.py --generate_oauth2_string' .. + ' --access_token=' .. accesstoken .. + ' --user=' .. user) +_, _, oauth2string = string.find(output, 'OAuth2 argument:\n([%w%p]+)\n') + +account3 = IMAP { + server = 'imap.gmail.com', + ssl = 'tls1.2', + username = user, + oauth2 = oauth2string +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/Makefile new/imapfilter-2.6.6/src/Makefile --- old/imapfilter-2.6.3/src/Makefile 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/Makefile 2016-01-23 21:12:28.000000000 +0100 @@ -1,5 +1,5 @@ -DESTDIR = -PREFIX = /usr/local +DESTDIR ?= +PREFIX ?= /usr/local BINDIR = $(PREFIX)/bin SHAREDIR = $(PREFIX)/share/imapfilter MANDIR = $(PREFIX)/man diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/account.lua new/imapfilter-2.6.6/src/account.lua --- old/imapfilter-2.6.3/src/account.lua 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/account.lua 2016-01-23 21:12:28.000000000 +0100 @@ -12,10 +12,22 @@ setmetatable(_imap, { __mode = "v" }) +_undefined = 0 +function _next_undefined() + _undefined = _undefined + 1 + return 'undefined' .. _undefined +end + + Account._mt.__call = function (self, arg) _check_required(arg.server, 'string') - _check_required(arg.username, 'string') + if not arg.oauth2 then + _check_required(arg.username, 'string') + else + _check_optional(arg.username, 'string') + end _check_optional(arg.password, 'string') + _check_optional(arg.oauth2, 'string') _check_optional(arg.port, 'number') _check_optional(arg.ssl, 'string') @@ -24,13 +36,14 @@ object._type = 'account' object._account = {} object._account.server = arg.server - object._account.username = arg.username + object._account.username = arg.username or _next_undefined() object._account.password = arg.password + object._account.oauth2 = arg.oauth2 object._account.port = tostring(arg.port or arg.ssl and 993 or 143) - object._account.ssl = arg.ssl or '' + object._account.ssl = arg.ssl object._account.session = nil object._account.selected = nil - object._string = arg.username .. '@' .. arg.server + object._string = object._account.username .. '@' .. object._account.server for key, value in pairs(Account) do if type(value) == 'function' then object[key] = value end @@ -72,18 +85,18 @@ function Account._login_user(self) - if self._account.password == nil then - self._account.password = get_password('Enter password for ' .. - self._string .. ': ') + if self._account.password == nil and self._account.oauth2 == nil then + self._account.password = get_password('Enter password for ' .. + self._string .. ': ') end if self._account.session then return true end local r, s = ifcore.login(self._account.server, self._account.port, self._account.ssl, self._account.username, - self._account.password) + self._account.password, self._account.oauth2) self._check_result(self, 'login', r) if r == false then - error('authentication to ' .. self._string .. ' failed.', 0) + error('authentication of ' .. self._string .. ' failed.', 0) end if not r then return false end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/core.c new/imapfilter-2.6.6/src/core.c --- old/imapfilter-2.6.3/src/core.c 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/core.c 2016-01-23 21:12:28.000000000 +0100 @@ -114,18 +114,28 @@ ifcore_login(lua_State *lua) { session *s = NULL; - int r; + int t, r; - if (lua_gettop(lua) != 5) + if (lua_gettop(lua) != 6) luaL_error(lua, "wrong number of arguments"); luaL_checktype(lua, 1, LUA_TSTRING); luaL_checktype(lua, 2, LUA_TSTRING); - luaL_checktype(lua, 3, LUA_TSTRING); - luaL_checktype(lua, 4, LUA_TSTRING); - luaL_checktype(lua, 5, LUA_TSTRING); + t = lua_type(lua, 3); + luaL_argcheck(lua, t == LUA_TSTRING || t == LUA_TNIL, 3, + "string or nil expected"); + t = lua_type(lua, 4); + luaL_argcheck(lua, t == LUA_TSTRING || t == LUA_TNIL, 4, + "string or nil expected"); + t = lua_type(lua, 5); + luaL_argcheck(lua, t == LUA_TSTRING || t == LUA_TNIL, 5, + "string or nil expected"); + t = lua_type(lua, 6); + luaL_argcheck(lua, t == LUA_TSTRING || t == LUA_TNIL, 6, + "string or nil expected"); r = request_login(&s, lua_tostring(lua, 1), lua_tostring(lua, 2), - lua_tostring(lua, 3), lua_tostring(lua, 4), lua_tostring(lua, 5)); + lua_tostring(lua, 3), lua_tostring(lua, 4), lua_tostring(lua, 5), + lua_tostring(lua, 6)); lua_pop(lua, 5); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/imapfilter.c new/imapfilter-2.6.6/src/imapfilter.c --- old/imapfilter-2.6.3/src/imapfilter.c 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/imapfilter.c 2016-01-23 21:12:28.000000000 +0100 @@ -21,7 +21,10 @@ extern buffer ibuf, obuf, nbuf, cbuf; extern regexp responses[]; -extern SSL_CTX *ssl3ctx, *ssl23ctx, *tls1ctx; +extern SSL_CTX *ssl23ctx, *tls1ctx; +#ifndef OPENSSL_NO_SSL3_METHOD +extern SSL_CTX *ssl3ctx; +#endif #if OPENSSL_VERSION_NUMBER >= 0x01000100fL extern SSL_CTX *tls11ctx, *tls12ctx; #endif @@ -114,7 +117,9 @@ SSL_library_init(); SSL_load_error_strings(); +#ifndef OPENSSL_NO_SSL3_METHOD ssl3ctx = SSL_CTX_new(SSLv3_client_method()); +#endif ssl23ctx = SSL_CTX_new(SSLv23_client_method()); tls1ctx = SSL_CTX_new(TLSv1_client_method()); #if OPENSSL_VERSION_NUMBER >= 0x01000100fL @@ -125,7 +130,9 @@ capath = opts.truststore; else if (exists_file(opts.truststore)) cafile = opts.truststore; +#ifndef OPENSSL_NO_SSL3_METHOD SSL_CTX_load_verify_locations(ssl3ctx, cafile, capath); +#endif SSL_CTX_load_verify_locations(ssl23ctx, cafile, capath); SSL_CTX_load_verify_locations(tls1ctx, cafile, capath); #if OPENSSL_VERSION_NUMBER >= 0x01000100fL @@ -150,7 +157,9 @@ #endif stop_lua(); +#ifndef OPENSSL_NO_SSL3_METHOD SSL_CTX_free(ssl3ctx); +#endif SSL_CTX_free(ssl23ctx); SSL_CTX_free(tls1ctx); #if OPENSSL_VERSION_NUMBER >= 0x01000100fL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/imapfilter.h new/imapfilter-2.6.6/src/imapfilter.h --- old/imapfilter-2.6.3/src/imapfilter.h 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/imapfilter.h 2016-01-23 21:12:28.000000000 +0100 @@ -33,6 +33,7 @@ #define CAPABILITY_STARTTLS 0x04 #define CAPABILITY_CHILDREN 0x08 #define CAPABILITY_IDLE 0x10 +#define CAPABILITY_XOAUTH2 0x20 /* Status responses and response codes. */ #define STATUS_NONE 0 @@ -141,7 +142,7 @@ /* request.c */ int request_noop(session *ssn); int request_login(session **ssn, const char *server, const char *port, const - char *protocol, const char *user, const char *pass); + char *protocol, const char *user, const char *pass, const char *oauth2); int request_logout(session *ssn); int request_status(session *ssn, const char *mbox, unsigned int *exist, unsigned int *recent, unsigned int *unseen, unsigned int *uidnext); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/request.c new/imapfilter-2.6.6/src/request.c --- old/imapfilter-2.6.3/src/request.c 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/request.c 2016-01-23 21:12:28.000000000 +0100 @@ -34,14 +34,15 @@ case -1: \ if ((!strcasecmp(get_option_string("recover"), "all") || \ !strcasecmp(get_option_string("recover"), "errors")) && \ - request_login(&ssn, NULL, NULL, NULL, NULL, NULL) != -1) \ + request_login(&ssn, NULL, NULL, NULL, NULL, NULL, \ + NULL) != -1) \ return STATUS_NONE; \ return -1; \ case STATUS_BYE: \ close_connection(ssn); \ if (!strcasecmp(get_option_string("recover"), "all")) { \ if (request_login(&ssn, NULL, NULL, NULL, NULL, \ - NULL) != -1) \ + NULL, NULL) != -1) \ return STATUS_NONE; \ } else \ session_destroy(ssn); \ @@ -153,7 +154,7 @@ */ int request_login(session **ssnptr, const char *server, const char *port, const - char *ssl, const char *user, const char *pass) + char *ssl, const char *user, const char *pass, const char *oauth2) { int t, r, rg = -1, rl = -1; session *ssn = *ssnptr; @@ -168,8 +169,9 @@ ssn->port = port; ssn->username = user; ssn->password = pass; + ssn->oauth2 = oauth2; - if (strlen(ssl) != 0) + if (ssl) ssn->sslproto = ssl; } else { debug("recovering connection: %s://%s@%s:%s/%s\n", @@ -203,7 +205,28 @@ } if (rg != STATUS_PREAUTH) { - if (ssn->capabilities & CAPABILITY_CRAMMD5 && + if (ssn->oauth2 && !ssn->password && + !(ssn->capabilities & CAPABILITY_XOAUTH2)) { + error("OAuth2 not supported at %s@%s\n", ssn->username, + ssn->server); + close_connection(ssn); + session_destroy(ssn); + return STATUS_NO; + } + if (ssn->capabilities & CAPABILITY_XOAUTH2 && ssn->oauth2) { + CHECK(t = send_request(ssn, "AUTHENTICATE XOAUTH2 %s", + ssn->oauth2)); + CHECK(rl = response_generic(ssn, t)); + } + if (rl == STATUS_NO) { + error("oauth2 string rejected at %s@%s\n", + ssn->username, ssn->server); + close_connection(ssn); + session_destroy(ssn); + return STATUS_NO; + } + if (rl != STATUS_OK && ssn->password && + ssn->capabilities & CAPABILITY_CRAMMD5 && get_option_boolean("crammd5")) { unsigned char *in, *out; CHECK(t = send_request(ssn, "AUTHENTICATE CRAM-MD5")); @@ -219,12 +242,11 @@ } else goto abort; } - if (rl != STATUS_OK) { + if (rl != STATUS_OK && ssn->password) { CHECK(t = send_request(ssn, "LOGIN \"%s\" \"%s\"", ssn->username, ssn->password)); CHECK(rl = response_generic(ssn, t)); } - if (rl == STATUS_NO) { error("username %s or password rejected at %s\n", ssn->username, ssn->server); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/response.c new/imapfilter-2.6.6/src/response.c --- old/imapfilter-2.6.3/src/response.c 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/response.c 2016-01-23 21:12:28.000000000 +0100 @@ -336,9 +336,10 @@ ssn->capabilities |= CAPABILITY_STARTTLS; if (xstrcasestr(s, "CHILDREN")) ssn->capabilities |= CAPABILITY_CHILDREN; - if (xstrcasestr(s, "IDLE")) ssn->capabilities |= CAPABILITY_IDLE; + if (xstrcasestr(s, "AUTH=XOAUTH2")) + ssn->capabilities |= CAPABILITY_XOAUTH2; xfree(s); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/session.c new/imapfilter-2.6.6/src/session.c --- old/imapfilter-2.6.3/src/session.c 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/session.c 2016-01-23 21:12:28.000000000 +0100 @@ -40,6 +40,7 @@ ssn->sslproto = NULL; ssn->username = NULL; ssn->password = NULL; + ssn->oauth2 = NULL; ssn->socket = -1; ssn->sslconn = NULL; ssn->protocol = PROTOCOL_NONE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/session.h new/imapfilter-2.6.6/src/session.h --- old/imapfilter-2.6.3/src/session.h 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/session.h 2016-01-23 21:12:28.000000000 +0100 @@ -12,6 +12,7 @@ const char *sslproto; /* SSL protocol. */ const char *username; /* User name. */ const char *password; /* User password. */ + const char *oauth2; /* Oauth2 token */ int socket; /* Socket. */ SSL *sslconn; /* SSL connection. */ unsigned int protocol; /* IMAP protocol. Currently IMAP4rev1 and diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/socket.c new/imapfilter-2.6.6/src/socket.c --- old/imapfilter-2.6.3/src/socket.c 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/socket.c 2016-01-23 21:12:28.000000000 +0100 @@ -16,8 +16,10 @@ #include "imapfilter.h" #include "session.h" - -SSL_CTX *ssl3ctx, *ssl23ctx, *tls1ctx; +SSL_CTX *ssl23ctx, *tls1ctx; +#ifndef OPENSSL_NO_SSL3_METHOD +SSL_CTX *ssl3ctx; +#endif #if OPENSSL_VERSION_NUMBER >= 0x01000100fL SSL_CTX *tls11ctx, *tls12ctx; #endif @@ -95,7 +97,12 @@ if (!ssn->sslproto) { ctx = ssl23ctx; } else if (!strcasecmp(ssn->sslproto, "ssl3")) { +#ifndef OPENSSL_NO_SSL3_METHOD ctx = ssl3ctx; +#else + error("protocol SSLv3 not supported by current build\n"); + goto fail; +#endif } else if (!strcasecmp(ssn->sslproto, "tls1")) { ctx = tls1ctx; } else if (!strcasecmp(ssn->sslproto, "tls1.1")) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.6.3/src/version.h new/imapfilter-2.6.6/src/version.h --- old/imapfilter-2.6.3/src/version.h 2015-09-30 22:55:26.000000000 +0200 +++ new/imapfilter-2.6.6/src/version.h 2016-01-23 21:12:28.000000000 +0100 @@ -3,10 +3,10 @@ /* Program's version number. */ -#define VERSION "2.6.3" +#define VERSION "2.6.6" /* Program's copyright. */ -#define COPYRIGHT "Copyright (c) 2001-2015 Eleftherios Chatzimparmpas" +#define COPYRIGHT "Copyright (c) 2001-2016 Eleftherios Chatzimparmpas" #endif /* VERSION_H */
