Bug 232383 - mail/qpopper: Fails to build after openssl update in current.
Summary: mail/qpopper: Fails to build after openssl update in current.
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Eugene Grosbein
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-10-18 13:54 UTC by Sean Bruno
Modified: 2018-11-14 18:36 UTC (History)
4 users (show)

See Also:
eugen: maintainer-feedback-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sean Bruno freebsd_committer freebsd_triage 2018-10-18 13:54:13 UTC
It would appear that qpopper needs to be massaged for the openssl update in -current.

===>  Building for qpopper-4.1.0_6
cd ./popper  && /usr/bin/make all
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_dele.c -o pop_dele.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_dropcopy.c -o pop_dropcopy.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_get_command.c -o pop_get_command.o
pop_get_command.c:41:31: warning: incompatible pointer types initializing 'int (*)()' with an expression of type 'pop_result (POP *)' (aka 'pop_result (struct _pop *)') [-Wincompatible-pointer-types]
    { auth2,  "pass", 1,  1,  pop_pass,   {halt,  trans} },
                              ^~~~~~~~
1 warning generated.
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_get_subcommand.c -o pop_get_subcommand.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_init.c -o pop_init.o
pop_init.c:1209:52: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]
    if ( getpeername ( sp, (struct sockaddr *)&cs, &len ) < 0 ) {
                                                   ^~~~
/usr/include/sys/socket.h:668:74: note: passing argument to parameter here
int     getpeername(int, struct sockaddr * __restrict, socklen_t * __restrict);
                                                                             ^
1 warning generated.
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_last.c -o pop_last.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_list.c -o pop_list.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_log.c -o pop_log.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_lower.c -o pop_lower.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_msg.c -o pop_msg.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_parse.c -o pop_parse.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_pass.c -o pop_pass.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_quit.c -o pop_quit.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_rset.c -o pop_rset.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_send.c -o pop_send.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_stat.c -o pop_stat.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_updt.c -o pop_updt.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_user.c -o pop_user.o
pop_user.c:396:56: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
        return ( pop_auth_fail ( p, POP_FAILURE, HERE, ERRMSG_STRONG ) );
                                                       ^~~~~~~~~~~~~
pop_user.c:396:56: note: treat the string as an argument to avoid this
        return ( pop_auth_fail ( p, POP_FAILURE, HERE, ERRMSG_STRONG ) );
                                                       ^
                                                       "%s", 
pop_user.c:404:34: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                                 ERRMSG_TLS_STRONG ) );
                                 ^~~~~~~~~~~~~~~~~
pop_user.c:404:34: note: treat the string as an argument to avoid this
                                 ERRMSG_TLS_STRONG ) );
                                 ^
                                 "%s", 
2 warnings generated.
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_xtnd.c -o pop_xtnd.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_xmit.c -o pop_xmit.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX popper.c -o popper.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_bull.c -o pop_bull.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX xtnd_xlst.c -o xtnd_xlst.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_uidl.c -o pop_uidl.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_rpop.c -o pop_rpop.o
pop_rpop.c:91:10: warning: implicit declaration of function 'iruserok_sa' is invalid in C99 [-Wimplicit-function-declaration]
    if ( iruserok_sa ( res->ai_addr, res->ai_addrlen,
         ^
1 warning generated.
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_apop.c -o pop_apop.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_auth.c -o pop_auth.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_pope.c -o pop_pope.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_extend.c -o pop_extend.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX scram.c -o scram.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX hmac.c -o hmac.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_util.c -o pop_util.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX get_sub_opt.c -o get_sub_opt.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX msg_ptr.c -o msg_ptr.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX drac.c -o drac.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_config.c -o pop_config.o
pop_config.c:328:50: warning: implicit conversion from enumeration type 'config_call_type' to different enumeration type 'config_restr_type' [-Wenum-conversion]
    { "log-facility"                 , CfgMnem , CfgInit   , kLOG_FACILITY       },
    ~                                            ^~~~~~~
pop_config.c:329:50: warning: implicit conversion from enumeration type 'config_call_type' to different enumeration type 'config_restr_type' [-Wenum-conversion]
    { "log-login"                    , CfgStr  , CfgInit   , kLOG_LOGIN          },
    ~                                            ^~~~~~~
pop_config.c:1348:24: warning: implicit conversion from enumeration type 'pop_result' to different enumeration type 'error_code_type' [-Wenum-conversion]
                return POP_FAILURE;
                ~~~~~~ ^~~~~~~~~~~
pop_config.c:1561:23: warning: implicit conversion from enumeration type 'error_code_type' to different enumeration type 'pop_result' [-Wenum-conversion]
                err = handle_value ( p, opt, ptok, tok_len, CallTime );
                    ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pop_config.c:1564:31: warning: implicit conversion from enumeration type 'pop_result' to different enumeration type 'error_code_type' [-Wenum-conversion]
                    tilt ( p, err, ptok, tok_len, line_no, config_file, opt, HERE );
                    ~~~~      ^~~
pop_config.c:1573:27: warning: implicit conversion from enumeration type 'error_code_type' to different enumeration type 'pop_result' [-Wenum-conversion]
                    err = handle_value ( p, opt, "false", 5, CallTime );
                        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pop_config.c:1575:27: warning: implicit conversion from enumeration type 'error_code_type' to different enumeration type 'pop_result' [-Wenum-conversion]
                    err = handle_value ( p, opt, "true",  4, CallTime );
                        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pop_config.c:1736:11: warning: implicit conversion from enumeration type 'error_code_type' to different enumeration type 'pop_result' [-Wenum-conversion]
    err = handle_value ( p, opt, opt_value, strlen(opt_value), CfgInit );
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 warnings generated.
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_tls.c -o pop_tls.o
cc -c -I.. -I.. -I.  -I../mmangle -I../common -I/usr/include  -O2 -pipe  -fstack-protector -fno-strict-aliasing -DHAVE_CONFIG_H  -DSETPROCTITLE -DAPOP_ONLY -DFREEBSD -DUNIX pop_tls_openssl.c -o pop_tls_openssl.o
pop_tls_openssl.c:203:5: warning: implicitly declaring library function 'strcpy' with type 'char *(char *, const char *)' [-Wimplicit-function-declaration]
    strcpy ( buf, deblanked );
    ^
pop_tls_openssl.c:203:5: note: include the header <string.h> or explicitly provide a declaration for 'strcpy'
pop_tls_openssl.c:324:33: warning: assigning to 'SSL_METHOD *' (aka 'struct ssl_method_st *') from 'const SSL_METHOD *' (aka 'const struct ssl_method_st *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
            pTLS->m_OpenSSLmeth = SSLv23_server_method();
                                ^ ~~~~~~~~~~~~~~~~~~~~~~
pop_tls_openssl.c:330:35: warning: implicit declaration of function 'SSLv2_server_method' is invalid in C99 [-Wimplicit-function-declaration]
            pTLS->m_OpenSSLmeth = SSLv2_server_method();
                                  ^
pop_tls_openssl.c:330:33: warning: incompatible integer to pointer conversion assigning to 'SSL_METHOD *' (aka 'struct ssl_method_st *') from 'int' [-Wint-conversion]
            pTLS->m_OpenSSLmeth = SSLv2_server_method();
                                ^ ~~~~~~~~~~~~~~~~~~~~~
pop_tls_openssl.c:337:35: warning: 'SSLv3_server_method' is deprecated [-Wdeprecated-declarations]
            pTLS->m_OpenSSLmeth = SSLv3_server_method();
                                  ^
/usr/include/openssl/ssl.h:1838:1: note: 'SSLv3_server_method' has been explicitly marked deprecated here
DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_server_method(void))
^
/usr/include/openssl/opensslconf.h:147:34: note: expanded from macro 'DEPRECATEDIN_1_1_0'
# define DEPRECATEDIN_1_1_0(f)   DECLARE_DEPRECATED(f)
                                 ^
/usr/include/openssl/opensslconf.h:110:55: note: expanded from macro 'DECLARE_DEPRECATED'
#   define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
                                                      ^
pop_tls_openssl.c:337:33: warning: assigning to 'SSL_METHOD *' (aka 'struct ssl_method_st *') from 'const SSL_METHOD *' (aka 'const struct ssl_method_st *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
            pTLS->m_OpenSSLmeth = SSLv3_server_method();
                                ^ ~~~~~~~~~~~~~~~~~~~~~
pop_tls_openssl.c:343:35: warning: 'TLSv1_server_method' is deprecated [-Wdeprecated-declarations]
            pTLS->m_OpenSSLmeth = TLSv1_server_method();
                                  ^
/usr/include/openssl/ssl.h:1853:1: note: 'TLSv1_server_method' has been explicitly marked deprecated here
DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void))
^
/usr/include/openssl/opensslconf.h:147:34: note: expanded from macro 'DEPRECATEDIN_1_1_0'
# define DEPRECATEDIN_1_1_0(f)   DECLARE_DEPRECATED(f)
                                 ^
/usr/include/openssl/opensslconf.h:110:55: note: expanded from macro 'DECLARE_DEPRECATED'
#   define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
                                                      ^
pop_tls_openssl.c:343:33: warning: assigning to 'SSL_METHOD *' (aka 'struct ssl_method_st *') from 'const SSL_METHOD *' (aka 'const struct ssl_method_st *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
            pTLS->m_OpenSSLmeth = TLSv1_server_method();
                                ^ ~~~~~~~~~~~~~~~~~~~~~
pop_tls_openssl.c:542:18: warning: assigning to 'SSL_CIPHER *' (aka 'struct ssl_cipher_st *') from 'const SSL_CIPHER *' (aka 'const struct ssl_cipher_st *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
            ciph = SSL_get_current_cipher ( pTLS->m_OpenSSLconn );
                 ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pop_tls_openssl.c:550:48: error: incomplete definition of type 'struct ssl_st'
                          ( pTLS->m_OpenSSLconn->hit ? "reused" : "new" ),
                            ~~~~~~~~~~~~~~~~~~~^
/usr/include/openssl/ossl_typ.h:147:16: note: forward declaration of 'struct ssl_st'
typedef struct ssl_st SSL;
               ^
9 warnings and 1 error generated.
*** Error code 1
Comment 1 Nathan 2018-10-18 16:12:38 UTC
I’ll see if I can provide a patch
Comment 2 Nathan 2018-10-18 20:56:30 UTC
(In reply to Nathan from comment #1)
I don't think I can fix this one. The way it is coded is different than the others I've done
Comment 3 Walter Schwarzenfeld 2018-10-22 05:30:37 UTC
The last official version is from 2011. It is the question if this port is deprecated?

I got it to compiler with:

popper/pop_tls_openssl.c
#define OPENSSL_NO_SSL3_METHOD 1

(but I have libressl)
Comment 4 Eugene Grosbein freebsd_committer freebsd_triage 2018-11-14 15:40:41 UTC
I'm using the port. This should be easy to fix. I'm taking it.
Comment 5 commit-hook freebsd_committer freebsd_triage 2018-11-14 18:15:39 UTC
A commit references this bug:

Author: eugen
Date: Wed Nov 14 18:14:53 UTC 2018
New revision: 484938
URL: https://svnweb.freebsd.org/changeset/ports/484938

Log:
  Fix mail/qpopper:

  - remove MASTER_SITE ftp.qualcomm.com that is no more
    and add a couple of living distfile sources;

  - describe custom BSD-style Quallcom license for the distfile;

  - fix building with openssl-1.1.1 that no longer has SSLv2 support
    plus made struct ssl_st (SSL) completely opaque, so better use
    public interface SSL_session_reused() instead of direct access
    to now hidden "hit" part of struct; this works for previous
    openssl versions too.

  No PORTREVISION bump as this fixed package building for FreeBSD 12+
  and has no visible package changes for other supported branches.

  PR:		232383
  Reported by:	sbruno
  Approved by:	bc979@lafn.org (maintainer timeout, 4 weeks)

Changes:
  head/mail/qpopper/Makefile
  head/mail/qpopper/files/patch-popper__pop_tls_openssl.c