You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@guacamole.apache.org by Ryan Isenor <rw...@gmail.com> on 2023/01/05 22:00:43 UTC

Errors with Decprecated Functions and OpenSSL 3.0

Hello,

I am trying to compile Guacamole Server 1.4.0 on Linux Mint 21 and though I
am slowly working my way through a lot of the bugs and questions I
previously had, I have hit a roadblock here with OpenSSL 3.0 deprecated
errors. In order to provide you the context, I have uploaded the terminal
script for the /$ make install: https://pastebin.com/Qhh7gWfq In an effort
to try to resolve the issue myself, or at the very least acquire some
knowledge as to what the error is and how I might correct it, I consulted
ChatGPT and received a response that is attached to this email as a .txt
file. In an effort to respect the privacy and security of the list, I have
also upload that .txt file here: https://pastebin.com/UahxSzn6

For the security and privacy conscious, the full script is below. My
question, given that ChatGPT explained what is going on and how to fix it,
is what precautions I should take and whether or not I should follow the
advice of ChatGPT which is either suggesting I compile in OpenSSL 2.0 or
replace the deprecated functions. Any help on expanding the insight
provided would be greatly appreciated.

*****@********:~/Downloads/guacamole-server-1.4.0$ autoreconf -fi
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
configure.ac:29: warning: The macro `AC_CONFIG_HEADER' is obsolete.
configure.ac:29: You should run autoupdate.
./lib/autoconf/status.m4:719: AC_CONFIG_HEADER is expanded from...
configure.ac:29: the top level
configure.ac:37: warning: The macro `AC_PROG_CC_C99' is obsolete.
configure.ac:37: You should run autoupdate.
./lib/autoconf/c.m4:1659: AC_PROG_CC_C99 is expanded from...
configure.ac:37: the top level
configure.ac:38: warning: The macro `AC_PROG_LIBTOOL' is obsolete.
configure.ac:38: You should run autoupdate.
m4/libtool.m4:99: AC_PROG_LIBTOOL is expanded from...
configure.ac:38: the top level
configure.ac:27: installing 'build-aux/compile'
configure.ac:23: installing 'build-aux/missing'
src/common-ssh/Makefile.am: installing 'build-aux/depcomp'
*****@********:~/Downloads/guacamole-server-1.4.0$ ./configure
--with-init-dir=/etc/init.d
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to
x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain
format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared
libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for shl_load... no
checking for shl_load in -ldld... no
checking for dlopen... yes
checking whether a program can dlopen itself... yes
checking whether a statically linked program can dlopen itself... no
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for gcc... (cached) gcc
checking whether the compiler supports GNU C... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to enable C11 features... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking for fcntl.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for sys/socket.h... yes
checking for time.h... yes
checking for sys/time.h... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking for cairo/cairo.h... yes
checking for pngstruct.h... no
checking for gcc options needed to detect all undeclared functions... none
needed
checking for cos in -lm... yes
checking for png_write_png in -lpng... yes
checking for jpeg_start_compress in -ljpeg... yes
checking for cairo_create in -lcairo... yes
checking for pthread_create in -lpthread... yes
checking for dlopen in -ldl... yes
checking for uuid_generate in -luuid... yes
checking for CU_run_test in -lcunit... no
checking for clock_gettime... yes
checking for gettimeofday... yes
checking for memmove... yes
checking for memset... yes
checking for select... yes
checking for strdup... yes
checking for nanosleep... yes
checking whether png_get_io_ptr is declared... yes
checking whether cairo_format_stride_for_width is declared... yes
checking whether poll is declared... yes
checking whether strlcpy is declared... no
checking whether strlcat is declared... no
checking for size_t... yes
checking for ssize_t... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for libavcodec... yes
checking for libavformat... yes
checking for libavutil... yes
checking for libswscale... yes
checking for openssl/ssl.h... yes
checking for SSL_CTX_new in -lssl... yes
checking whether DSA_SIG_get0 is declared... yes
checking whether DSA_get0_pqg is declared... yes
checking whether DSA_get0_key is declared... yes
checking whether RSA_get0_key is declared... yes
checking whether libssl requires threading callbacks... no
checking for main in -lwsock32... no
checking for vorbis/vorbisenc.h... yes
checking for ogg_stream_init in -logg... yes
checking for vorbis_block_init in -lvorbis... yes
checking for vorbis_encode_init in -lvorbisenc... yes
checking for pa_context_new in -lpulse... yes
checking for pango... yes
checking for pangocairo... yes
checking for rfbInitClient in -lvncclient... yes
checking whether LIBVNCSERVER_WITH_CLIENT_GCRYPT is declared... no
checking for rfbClient.destHost... yes
checking for rfbClient.destPort... yes
checking whether listenForIncomingConnectionsNoFork is declared... yes
checking for rfbClient.LockWriteToTLS... yes
checking for rfbClient.UnlockWriteToTLS... yes
checking for rfbClient.GetCredential... yes
checking for freerdp2 freerdp-client2 winpr2... yes
checking whether FreeRDPConvertColor is declared... yes
checking whether FreeRDP appears to be a development version... checking
how to run the C preprocessor... gcc -E
no
checking whether Bitmap_Free() frees the rdpBitmap and its image data... no
checking whether pVirtualChannelWriteEx() frees the wStream upon
completion... no
checking whether rdpGlyph callbacks accept INT32 integer parameters... yes
checking whether CLIPRDR callbacks require const for their final
parameter... yes
checking whether RAIL callbacks require const for their final parameter...
yes
checking for rdpSettings.AllowUnanouncedOrdersFromServer... yes
checking for freerdp.VerifyCertificateEx... yes
checking for libssh2_session_init_ex in -lssh2... yes
checking for gcry_control in -lssh2... no
checking for telnet_init in -ltelnet... yes
checking for webp/encode.h... yes
checking for WebPEncode in -lwebp... yes
checking for lws_create_context in -lwebsockets... yes
checking whether LWS_CALLBACK_CLIENT_CLOSED is declared... yes
checking whether LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT is declared... yes
checking whether LCCSCF_USE_SSL is declared... yes
checking whether lws_callback_http_dummy is declared... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/Doxyfile
config.status: creating src/common/Makefile
config.status: creating src/common/tests/Makefile
config.status: creating src/common-ssh/Makefile
config.status: creating src/common-ssh/tests/Makefile
config.status: creating src/terminal/Makefile
config.status: creating src/libguac/Makefile
config.status: creating src/libguac/tests/Makefile
config.status: creating src/guacd/Makefile
config.status: creating src/guacd/man/guacd.8
config.status: creating src/guacd/man/guacd.conf.5
config.status: creating src/guacenc/Makefile
config.status: creating src/guacenc/man/guacenc.1
config.status: creating src/guaclog/Makefile
config.status: creating src/guaclog/man/guaclog.1
config.status: creating src/pulse/Makefile
config.status: creating src/protocols/kubernetes/Makefile
config.status: creating src/protocols/kubernetes/tests/Makefile
config.status: creating src/protocols/rdp/Makefile
config.status: creating src/protocols/rdp/tests/Makefile
config.status: creating src/protocols/ssh/Makefile
config.status: creating src/protocols/telnet/Makefile
config.status: creating src/protocols/vnc/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

------------------------------------------------
guacamole-server version 1.4.0
------------------------------------------------

   Library status:

     freerdp2 ............ yes
     pango ............... yes
     libavcodec .......... yes
     libavformat.......... yes
     libavutil ........... yes
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... yes
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes
     libwebsockets ....... yes
     libwebp ............. yes
     wsock32 ............. no

   Protocol support:

      Kubernetes .... yes
      RDP ........... yes
      SSH ........... yes
      Telnet ........ yes
      VNC ........... yes

   Services / tools:

      guacd ...... yes
      guacenc .... yes
      guaclog .... yes

   FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
   Init scripts: /etc/init.d
   Systemd units: no

Type "make" to compile guacamole-server.

*****@********:~/Downloads/guacamole-server-1.4.0$ make
make  all-recursive
make[1]: Entering directory '/home/vrgyl/Downloads/guacamole-server-1.4.0'
Making all in src/libguac
make[2]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
Making all in .
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
  CC       libguac_la-argv.lo
  CC       libguac_la-audio.lo
  CC       libguac_la-client.lo
  CC       libguac_la-encode-jpeg.lo
  CC       libguac_la-encode-png.lo
  CC       libguac_la-error.lo
  CC       libguac_la-hash.lo
  CC       libguac_la-id.lo
  CC       libguac_la-palette.lo
  CC       libguac_la-parser.lo
  CC       libguac_la-pool.lo
  CC       libguac_la-protocol.lo
  CC       libguac_la-raw_encoder.lo
  CC       libguac_la-socket.lo
  CC       libguac_la-socket-broadcast.lo
  CC       libguac_la-socket-fd.lo
  CC       libguac_la-socket-nest.lo
  CC       libguac_la-socket-tee.lo
  CC       libguac_la-string.lo
  CC       libguac_la-timestamp.lo
  CC       libguac_la-unicode.lo
  CC       libguac_la-user.lo
  CC       libguac_la-user-handlers.lo
  CC       libguac_la-user-handshake.lo
  CC       libguac_la-wait-fd.lo
  CC       libguac_la-wol.lo
  CC       libguac_la-encode-webp.lo
  CC       libguac_la-socket-ssl.lo
  CCLD     libguac.la
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
Making all in tests
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
make[2]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
Making all in src/common
make[2]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
Making all in .
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
  CC       libguac_common_la-io.lo
  CC       libguac_common_la-blank_cursor.lo
  CC       libguac_common_la-clipboard.lo
  CC       libguac_common_la-cursor.lo
  CC       libguac_common_la-display.lo
  CC       libguac_common_la-dot_cursor.lo
  CC       libguac_common_la-ibar_cursor.lo
  CC       libguac_common_la-iconv.lo
  CC       libguac_common_la-json.lo
  CC       libguac_common_la-list.lo
  CC       libguac_common_la-pointer_cursor.lo
  CC       libguac_common_la-recording.lo
  CC       libguac_common_la-rect.lo
  CC       libguac_common_la-string.lo
  CC       libguac_common_la-surface.lo
  CCLD     libguac_common.la
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
Making all in tests
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
make[2]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
Making all in src/common-ssh
make[2]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
Making all in .
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
  CC       libguac_common_ssh_la-buffer.lo
  CC       libguac_common_ssh_la-dsa-compat.lo
  CC       libguac_common_ssh_la-rsa-compat.lo
  CC       libguac_common_ssh_la-sftp.lo
  CC       libguac_common_ssh_la-ssh.lo
  CC       libguac_common_ssh_la-key.lo
key.c: In function ‘guac_common_ssh_key_alloc’:
key.c:63:9: error: ‘PEM_read_bio_RSAPrivateKey’ is deprecated: Since
OpenSSL 3.0 [-Werror=deprecated-declarations]
   63 |         rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL,
passphrase);
      |         ^~~~~~~
In file included from key.c:33:
/usr/include/openssl/pem.h:447:1: note: declared here
  447 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA)
      | ^~~~~~~~~~~~~~~~~~~~~~
key.c:79:9: error: ‘RSA_get0_key’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
   79 |         RSA_get0_key(rsa_key, &key_n, &key_e, NULL);
      |         ^~~~~~~~~~~~
In file included from common-ssh/rsa-compat.h:26,
                 from key.c:25:
/usr/include/openssl/rsa.h:217:28: note: declared here
  217 | OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r,
      |                            ^~~~~~~~~~~~
key.c:105:9: error: ‘PEM_read_bio_DSAPrivateKey’ is deprecated: Since
OpenSSL 3.0 [-Werror=deprecated-declarations]
  105 |         dsa_key = PEM_read_bio_DSAPrivateKey(key_bio, NULL, NULL,
passphrase);
      |         ^~~~~~~
In file included from key.c:33:
/usr/include/openssl/pem.h:453:1: note: declared here
  453 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA)
      | ^~~~~~~~~~~~~~~~~~~~~~
key.c:121:9: error: ‘DSA_get0_pqg’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  121 |         DSA_get0_pqg(dsa_key, &key_p, &key_q, &key_g);
      |         ^~~~~~~~~~~~
In file included from common-ssh/dsa-compat.h:26,
                 from key.c:23:
/usr/include/openssl/dsa.h:201:28: note: declared here
  201 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const BIGNUM
**p,
      |                            ^~~~~~~~~~~~
key.c:122:9: error: ‘DSA_get0_key’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  122 |         DSA_get0_key(dsa_key, &pub_key, NULL);
      |         ^~~~~~~~~~~~
In file included from common-ssh/dsa-compat.h:26,
                 from key.c:23:
/usr/include/openssl/dsa.h:204:28: note: declared here
  204 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const BIGNUM
**pub_key,
      |                            ^~~~~~~~~~~~
key.c: In function ‘guac_common_ssh_key_free’:
key.c:164:9: error: ‘RSA_free’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  164 |         RSA_free(key->rsa);
      |         ^~~~~~~~
In file included from common-ssh/rsa-compat.h:26,
                 from key.c:25:
/usr/include/openssl/rsa.h:293:28: note: declared here
  293 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
      |                            ^~~~~~~~
key.c:166:9: error: ‘DSA_free’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  166 |         DSA_free(key->dsa);
      |         ^~~~~~~~
In file included from common-ssh/dsa-compat.h:26,
                 from key.c:23:
/usr/include/openssl/dsa.h:127:28: note: declared here
  127 | OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r);
      |                            ^~~~~~~~
key.c: In function ‘guac_common_ssh_key_sign’:
key.c:202:13: error: ‘RSA_sign’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  202 |             if (RSA_sign(NID_sha1, digest, dlen, sig, &len,
key->rsa) == 1)
      |             ^~
In file included from common-ssh/rsa-compat.h:26,
                 from key.c:25:
/usr/include/openssl/rsa.h:348:27: note: declared here
  348 | OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char *m,
      |                           ^~~~~~~~
key.c:208:13: error: ‘DSA_do_sign’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  208 |             DSA_SIG* dsa_sig = DSA_do_sign(digest, dlen, key->dsa);
      |             ^~~~~~~
In file included from common-ssh/dsa-compat.h:26,
                 from key.c:23:
/usr/include/openssl/dsa.h:113:32: note: declared here
  113 | OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char
*dgst, int dlen,
      |                                ^~~~~~~~~~~
cc1: all warnings being treated as errors
make[3]: *** [Makefile:591: libguac_common_ssh_la-key.lo] Error 1
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
make[2]: *** [Makefile:617: all-recursive] Error 1
make[2]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
make[1]: *** [Makefile:538: all-recursive] Error 1
make[1]: Leaving directory '/home/vrgyl/Downloads/guacamole-server-1.4.0'
make: *** [Makefile:460: all] Error 2
*****@********:~/Downloads/guacamole-server-1.4.0$ make install
Making install in src/libguac
make[1]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
Making install in .
make[2]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
 /usr/bin/mkdir -p '/usr/local/lib'
 /bin/bash ../../libtool   --mode=install /usr/bin/install -c   libguac.la
'/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libguac.so.20.0.0
/usr/local/lib/libguac.so.20.0.0
/usr/bin/install: cannot create regular file
'/usr/local/lib/libguac.so.20.0.0': Permission denied
make[3]: *** [Makefile:615: install-libLTLIBRARIES] Error 1
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
make[2]: *** [Makefile:1117: install-am] Error 2
make[2]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
make[1]: *** [Makefile:954: install-recursive] Error 1
make[1]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
make: *** [Makefile:538: install-recursive] Error 1
*****@********:~/Downloads/guacamole-server-1.4.0$ sudo make install
[sudo] password for vrgyl:
Making install in src/libguac
make[1]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
Making install in .
make[2]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
 /usr/bin/mkdir -p '/usr/local/lib'
 /bin/bash ../../libtool   --mode=install /usr/bin/install -c   libguac.la
'/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libguac.so.20.0.0
/usr/local/lib/libguac.so.20.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libguac.so.20.0.0
libguac.so.20 || { rm -f libguac.so.20 && ln -s libguac.so.20.0.0
libguac.so.20; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libguac.so.20.0.0
libguac.so || { rm -f libguac.so && ln -s libguac.so.20.0.0 libguac.so; };
})
libtool: install: /usr/bin/install -c .libs/libguac.lai /usr/local/lib/
libguac.la
libtool: install: /usr/bin/install -c .libs/libguac.a
/usr/local/lib/libguac.a
libtool: install: chmod 644 /usr/local/lib/libguac.a
libtool: install: ranlib /usr/local/lib/libguac.a
libtool: finish:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin"
ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /usr/bin/mkdir -p '/usr/local/include/guacamole'
 /usr/bin/install -c -m 644 guacamole/argv.h guacamole/argv-constants.h
guacamole/argv-fntypes.h guacamole/audio.h guacamole/audio-fntypes.h
guacamole/audio-types.h guacamole/client-constants.h guacamole/client.h
guacamole/client-fntypes.h guacamole/client-types.h guacamole/error.h
guacamole/error-types.h guacamole/hash.h guacamole/layer.h
guacamole/layer-types.h guacamole/object.h guacamole/object-types.h
guacamole/parser-constants.h guacamole/parser.h guacamole/parser-types.h
guacamole/plugin-constants.h guacamole/plugin.h guacamole/pool.h
guacamole/pool-types.h guacamole/protocol.h guacamole/protocol-constants.h
guacamole/protocol-types.h guacamole/socket-constants.h guacamole/socket.h
guacamole/socket-fntypes.h guacamole/socket-types.h guacamole/stream.h
guacamole/stream-types.h guacamole/string.h guacamole/timestamp.h
guacamole/timestamp-types.h guacamole/unicode.h guacamole/user.h
guacamole/user-constants.h guacamole/user-fntypes.h
'/usr/local/include/guacamole'
 /usr/bin/install -c -m 644 guacamole/user-types.h guacamole/wol.h
guacamole/wol-constants.h guacamole/socket-ssl.h
'/usr/local/include/guacamole'
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
make[2]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
Making install in tests
make[2]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
make[2]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
make[1]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
Making install in src/common
make[1]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
Making install in .
make[2]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
make[2]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
Making install in tests
make[2]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
make[3]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
make[2]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
make[1]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
Making install in src/common-ssh
make[1]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
Making install in .
make[2]: Entering directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
  CC       libguac_common_ssh_la-key.lo
key.c: In function ‘guac_common_ssh_key_alloc’:
key.c:63:9: error: ‘PEM_read_bio_RSAPrivateKey’ is deprecated: Since
OpenSSL 3.0 [-Werror=deprecated-declarations]
   63 |         rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL,
passphrase);
      |         ^~~~~~~
In file included from key.c:33:
/usr/include/openssl/pem.h:447:1: note: declared here
  447 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA)
      | ^~~~~~~~~~~~~~~~~~~~~~
key.c:79:9: error: ‘RSA_get0_key’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
   79 |         RSA_get0_key(rsa_key, &key_n, &key_e, NULL);
      |         ^~~~~~~~~~~~
In file included from common-ssh/rsa-compat.h:26,
                 from key.c:25:
/usr/include/openssl/rsa.h:217:28: note: declared here
  217 | OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r,
      |                            ^~~~~~~~~~~~
key.c:105:9: error: ‘PEM_read_bio_DSAPrivateKey’ is deprecated: Since
OpenSSL 3.0 [-Werror=deprecated-declarations]
  105 |         dsa_key = PEM_read_bio_DSAPrivateKey(key_bio, NULL, NULL,
passphrase);
      |         ^~~~~~~
In file included from key.c:33:
/usr/include/openssl/pem.h:453:1: note: declared here
  453 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA)
      | ^~~~~~~~~~~~~~~~~~~~~~
key.c:121:9: error: ‘DSA_get0_pqg’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  121 |         DSA_get0_pqg(dsa_key, &key_p, &key_q, &key_g);
      |         ^~~~~~~~~~~~
In file included from common-ssh/dsa-compat.h:26,
                 from key.c:23:
/usr/include/openssl/dsa.h:201:28: note: declared here
  201 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const BIGNUM
**p,
      |                            ^~~~~~~~~~~~
key.c:122:9: error: ‘DSA_get0_key’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  122 |         DSA_get0_key(dsa_key, &pub_key, NULL);
      |         ^~~~~~~~~~~~
In file included from common-ssh/dsa-compat.h:26,
                 from key.c:23:
/usr/include/openssl/dsa.h:204:28: note: declared here
  204 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const BIGNUM
**pub_key,
      |                            ^~~~~~~~~~~~
key.c: In function ‘guac_common_ssh_key_free’:
key.c:164:9: error: ‘RSA_free’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  164 |         RSA_free(key->rsa);
      |         ^~~~~~~~
In file included from common-ssh/rsa-compat.h:26,
                 from key.c:25:
/usr/include/openssl/rsa.h:293:28: note: declared here
  293 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
      |                            ^~~~~~~~
key.c:166:9: error: ‘DSA_free’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  166 |         DSA_free(key->dsa);
      |         ^~~~~~~~
In file included from common-ssh/dsa-compat.h:26,
                 from key.c:23:
/usr/include/openssl/dsa.h:127:28: note: declared here
  127 | OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r);
      |                            ^~~~~~~~
key.c: In function ‘guac_common_ssh_key_sign’:
key.c:202:13: error: ‘RSA_sign’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  202 |             if (RSA_sign(NID_sha1, digest, dlen, sig, &len,
key->rsa) == 1)
      |             ^~
In file included from common-ssh/rsa-compat.h:26,
                 from key.c:25:
/usr/include/openssl/rsa.h:348:27: note: declared here
  348 | OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char *m,
      |                           ^~~~~~~~
key.c:208:13: error: ‘DSA_do_sign’ is deprecated: Since OpenSSL 3.0
[-Werror=deprecated-declarations]
  208 |             DSA_SIG* dsa_sig = DSA_do_sign(digest, dlen, key->dsa);
      |             ^~~~~~~
In file included from common-ssh/dsa-compat.h:26,
                 from key.c:23:
/usr/include/openssl/dsa.h:113:32: note: declared here
  113 | OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char
*dgst, int dlen,
      |                                ^~~~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [Makefile:591: libguac_common_ssh_la-key.lo] Error 1
make[2]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
make[1]: *** [Makefile:617: install-recursive] Error 1
make[1]: Leaving directory
'/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
make: *** [Makefile:538: install-recursive] Error 1
*****@********:~/Downloads/guacamole-server-1.4.0$ ldconfig
/sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~:
Permission denied
*****@********:~/Downloads/guacamole-server-1.4.0$ sudo ldconfig
*****@********:~/Downloads/guacamole-server-1.4.0$

It looks like you are trying to compile the Guacamole server with OpenSSL
3.0 and you are encountering errors related to deprecated functions.

One potential solution would be to try compiling with OpenSSL 2.0 instead,
as the deprecated functions might still be available in that version. You
can check your current OpenSSL version by running openssl version.

Alternatively, you could try updating the code in the key.c file to use the
recommended replacements for the deprecated functions. For example,
PEM_read_bio_RSAPrivateKey and PEM_read_bio_DSAPrivateKey have been
replaced with PEM_read_bio_PrivateKey, and RSA_get0_key has been replaced
with RSA_get0_key.

I recommend consulting the OpenSSL documentation or asking for help in a
forum or on a mailing list specifically for the Guacamole project for
further assistance with this issue.

Kazin Whitewind
What steps do I take in updating the code in the key.c file to use the
recommended replacements for the deprecated functions?
To update the code in key.c to use the recommended replacements for the
deprecated functions:

Locate each instance of a deprecated function in the key.c file.
Replace the deprecated function with the recommended alternative.
Update the arguments for the new function to match its prototype.
Here is an example of how you could replace a deprecated function in the
key.c file:

Copy code
- RSA* rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL,
passphrase);
+ EVP_PKEY *pkey = NULL;
+ PEM_read_bio_PrivateKey(key_bio, &pkey, NULL, passphrase);
+ RSA *rsa_key = EVP_PKEY_get1_RSA(pkey);
In this example, the deprecated function PEM_read_bio_RSAPrivateKey is
replaced with PEM_read_bio_PrivateKey, and the resulting EVP_PKEY is then
converted to an RSA key using EVP_PKEY_get1_RSA.

I recommend thoroughly testing your changes before deploying them in a
production environment, as modifying the code in this way may introduce new
errors or issues. If you have any problems or questions while updating the
code, you can seek help in a forum or on a mailing list specifically for
the Guacamole project.

Re: Errors with Decprecated Functions and OpenSSL 3.0

Posted by RW Isenor <rw...@gmail.com>.
Hey Nick and Mike,

Thanks for being my programming heroes. I was spinning my wheels wondering if I should proceed but this repense got me back on track.

I really appreciate you mentioning back porting the pull request in one of the options —I’d never have considered that. With this, I am confident future roadblocks in code will be easier and if not, ChatGPT has my back.

Thanks for all your help, you guys are the best!

Best,
Ryan

Sent from my iPhone

> On Jan 7, 2023, at 17:01, Nick Couchman <vn...@apache.org> wrote:
> 
> On Thu, Jan 5, 2023 at 6:01 PM Ryan Isenor <rw...@gmail.com> wrote:
>> 
>> Thank you Mike for your swift reply. You'll forgive my ignorance in not 100% understanding the context of what GUACAMOLE-745 and GUACAMOLE-1553 are referring to but let me try to see if I have the right of it.
>> 
>> According to 1553, you advise that the lines of code in question are no longer part of the current source on Git. 745 outlines the fixes that were done to address the confusion of this issue and its complex nature. While the hope is that this may be ready for 1.5.0, it is likely not going to be but there is an acceptance that a better solution needs to exist for such issues. Finally, the solution in this case, would be to compile Guacamole Server 1.4.0 from the current source on Git and not via the download packages on the site? If that is indeed the case, might I suggest a rewording of the following: If you are looking for the absolute latest unreleased code (or extremely old code not archived here), please check our git repositories on GitHub. at https://guacamole.apache.org/releases/ the reason being that I did indeed go to the Git first but all advisings seem to suggest to not use the unreleased code. Pragmatically, I get it but perhaps an addendum about OpenSSL 3.0 will help things in the interim?
>> 
>> Do I have the right assessment of things? I am still learning a lot of this, so again, forgive my ignorance as I usually like to resolve and solve on my own. HAHA!
>> 
> 
> Not quite - the code was updated, fixing the OpenSSL issue, in the git
> repository, and is slated to go into the 1.5.0 release, when we
> release that, as part of GUACAMOLE-745. It is already part of the git
> branch that will become 1.5.0 (staging/1.5.0). If you want the fix,
> now, your options are:
> 1) To check out either the staging/1.5.0 or master git branch and
> compile from code.
> 2) Locate the pull request that fixed the issue and back-port the
> patch into 1.4.0. This may be a bit more difficult, since the patch
> may not apply cleanly and may take some manual work to get it applied,
> and you have to locate the correct pull request and/or commits.
> 
> -Nick
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@guacamole.apache.org
> For additional commands, e-mail: user-help@guacamole.apache.org
> 

Re: Errors with Decprecated Functions and OpenSSL 3.0

Posted by Nick Couchman <vn...@apache.org>.
On Thu, Jan 5, 2023 at 6:01 PM Ryan Isenor <rw...@gmail.com> wrote:
>
> Thank you Mike for your swift reply. You'll forgive my ignorance in not 100% understanding the context of what GUACAMOLE-745 and GUACAMOLE-1553 are referring to but let me try to see if I have the right of it.
>
> According to 1553, you advise that the lines of code in question are no longer part of the current source on Git. 745 outlines the fixes that were done to address the confusion of this issue and its complex nature. While the hope is that this may be ready for 1.5.0, it is likely not going to be but there is an acceptance that a better solution needs to exist for such issues. Finally, the solution in this case, would be to compile Guacamole Server 1.4.0 from the current source on Git and not via the download packages on the site? If that is indeed the case, might I suggest a rewording of the following: If you are looking for the absolute latest unreleased code (or extremely old code not archived here), please check our git repositories on GitHub. at https://guacamole.apache.org/releases/ the reason being that I did indeed go to the Git first but all advisings seem to suggest to not use the unreleased code. Pragmatically, I get it but perhaps an addendum about OpenSSL 3.0 will help things in the interim?
>
> Do I have the right assessment of things? I am still learning a lot of this, so again, forgive my ignorance as I usually like to resolve and solve on my own. HAHA!
>

Not quite - the code was updated, fixing the OpenSSL issue, in the git
repository, and is slated to go into the 1.5.0 release, when we
release that, as part of GUACAMOLE-745. It is already part of the git
branch that will become 1.5.0 (staging/1.5.0). If you want the fix,
now, your options are:
1) To check out either the staging/1.5.0 or master git branch and
compile from code.
2) Locate the pull request that fixed the issue and back-port the
patch into 1.4.0. This may be a bit more difficult, since the patch
may not apply cleanly and may take some manual work to get it applied,
and you have to locate the correct pull request and/or commits.

-Nick

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@guacamole.apache.org
For additional commands, e-mail: user-help@guacamole.apache.org


Re: Errors with Decprecated Functions and OpenSSL 3.0

Posted by Ryan Isenor <rw...@gmail.com>.
Thank you Mike for your swift reply. You'll forgive my ignorance in not
100% understanding the context of what GUACAMOLE-745 and GUACAMOLE-1553 are
referring to but let me try to see if I have the right of it.

According to 1553, you advise that the lines of code in question are no
longer part of the current source on Git. 745 outlines the fixes that were
done to address the confusion of this issue and its complex nature. While
the hope is that this may be ready for 1.5.0, it is likely not going to be
but there is an acceptance that a better solution needs to exist for such
issues. Finally, the solution in this case, would be to compile Guacamole
Server 1.4.0 from the current source on Git and not via the download
packages on the site? If that is indeed the case, might I suggest a
rewording of the following: *If you are looking for the absolute latest
unreleased code (or extremely old code not archived here), please check our
git repositories on GitHub.* at https://guacamole.apache.org/releases/ the
reason being that I did indeed go to the Git first but all advisings seem
to suggest to not use the unreleased code. Pragmatically, I get it but
perhaps an addendum about OpenSSL 3.0 will help things in the interim?

Do I have the right assessment of things? I am still learning a lot of
this, so again, forgive my ignorance as I usually like to resolve and solve
on my own. HAHA!

On Thu, Jan 5, 2023 at 6:48 PM Michael Jumper <mj...@apache.org> wrote:

> This should already be addressed on the "master" branch in git via
> GUACAMOLE-745.
>
> See:
>
> https://issues.apache.org/jira/browse/GUACAMOLE-745
> https://issues.apache.org/jira/browse/GUACAMOLE-1553
>
> The code in question no longer exists as of GUACAMOLE-745.
>
> - Mike
>
>
> On Thu, Jan 5, 2023 at 2:01 PM Ryan Isenor <rw...@gmail.com>
> wrote:
>
>> Hello,
>>
>> I am trying to compile Guacamole Server 1.4.0 on Linux Mint 21 and though
>> I am slowly working my way through a lot of the bugs and questions I
>> previously had, I have hit a roadblock here with OpenSSL 3.0 deprecated
>> errors. In order to provide you the context, I have uploaded the terminal
>> script for the /$ make install: https://pastebin.com/Qhh7gWfq In an
>> effort to try to resolve the issue myself, or at the very least acquire
>> some knowledge as to what the error is and how I might correct it, I
>> consulted ChatGPT and received a response that is attached to this email as
>> a .txt file. In an effort to respect the privacy and security of the list,
>> I have also upload that .txt file here: https://pastebin.com/UahxSzn6
>>
>> For the security and privacy conscious, the full script is below. My
>> question, given that ChatGPT explained what is going on and how to fix it,
>> is what precautions I should take and whether or not I should follow the
>> advice of ChatGPT which is either suggesting I compile in OpenSSL 2.0 or
>> replace the deprecated functions. Any help on expanding the insight
>> provided would be greatly appreciated.
>>
>> *****@********:~/Downloads/guacamole-server-1.4.0$ autoreconf -fi
>> libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
>> libtoolize: copying file 'build-aux/ltmain.sh'
>> libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
>> libtoolize: copying file 'm4/libtool.m4'
>> libtoolize: copying file 'm4/ltoptions.m4'
>> libtoolize: copying file 'm4/ltsugar.m4'
>> libtoolize: copying file 'm4/ltversion.m4'
>> libtoolize: copying file 'm4/lt~obsolete.m4'
>> configure.ac:29: warning: The macro `AC_CONFIG_HEADER' is obsolete.
>> configure.ac:29: You should run autoupdate.
>> ./lib/autoconf/status.m4:719: AC_CONFIG_HEADER is expanded from...
>> configure.ac:29: the top level
>> configure.ac:37: warning: The macro `AC_PROG_CC_C99' is obsolete.
>> configure.ac:37: You should run autoupdate.
>> ./lib/autoconf/c.m4:1659: AC_PROG_CC_C99 is expanded from...
>> configure.ac:37: the top level
>> configure.ac:38: warning: The macro `AC_PROG_LIBTOOL' is obsolete.
>> configure.ac:38: You should run autoupdate.
>> m4/libtool.m4:99: AC_PROG_LIBTOOL is expanded from...
>> configure.ac:38: the top level
>> configure.ac:27: installing 'build-aux/compile'
>> configure.ac:23: installing 'build-aux/missing'
>> src/common-ssh/Makefile.am: installing 'build-aux/depcomp'
>> *****@********:~/Downloads/guacamole-server-1.4.0$ ./configure
>> --with-init-dir=/etc/init.d
>> checking for a BSD-compatible install... /usr/bin/install -c
>> checking whether build environment is sane... yes
>> checking for a race-free mkdir -p... /usr/bin/mkdir -p
>> checking for gawk... gawk
>> checking whether make sets $(MAKE)... yes
>> checking whether make supports nested variables... yes
>> checking whether make supports nested variables... (cached) yes
>> checking build system type... x86_64-pc-linux-gnu
>> checking host system type... x86_64-pc-linux-gnu
>> checking how to print strings... printf
>> checking whether make supports the include directive... yes (GNU style)
>> checking for gcc... gcc
>> checking whether the C compiler works... yes
>> checking for C compiler default output file name... a.out
>> checking for suffix of executables...
>> checking whether we are cross compiling... no
>> checking for suffix of object files... o
>> checking whether the compiler supports GNU C... yes
>> checking whether gcc accepts -g... yes
>> checking for gcc option to enable C11 features... none needed
>> checking whether gcc understands -c and -o together... yes
>> checking dependency style of gcc... gcc3
>> checking for a sed that does not truncate output... /usr/bin/sed
>> checking for grep that handles long lines and -e... /usr/bin/grep
>> checking for egrep... /usr/bin/grep -E
>> checking for fgrep... /usr/bin/grep -F
>> checking for ld used by gcc... /usr/bin/ld
>> checking if the linker (/usr/bin/ld) is GNU ld... yes
>> checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
>> checking the name lister (/usr/bin/nm -B) interface... BSD nm
>> checking whether ln -s works... yes
>> checking the maximum length of command line arguments... 1572864
>> checking how to convert x86_64-pc-linux-gnu file names to
>> x86_64-pc-linux-gnu format... func_convert_file_noop
>> checking how to convert x86_64-pc-linux-gnu file names to toolchain
>> format... func_convert_file_noop
>> checking for /usr/bin/ld option to reload object files... -r
>> checking for objdump... objdump
>> checking how to recognize dependent libraries... pass_all
>> checking for dlltool... no
>> checking how to associate runtime and link libraries... printf %s\n
>> checking for ar... ar
>> checking for archiver @FILE support... @
>> checking for strip... strip
>> checking for ranlib... ranlib
>> checking command to parse /usr/bin/nm -B output from gcc object... ok
>> checking for sysroot... no
>> checking for a working dd... /usr/bin/dd
>> checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
>> checking for mt... mt
>> checking if mt is a manifest tool... no
>> checking for stdio.h... yes
>> checking for stdlib.h... yes
>> checking for string.h... yes
>> checking for inttypes.h... yes
>> checking for stdint.h... yes
>> checking for strings.h... yes
>> checking for sys/stat.h... yes
>> checking for sys/types.h... yes
>> checking for unistd.h... yes
>> checking for dlfcn.h... yes
>> checking for objdir... .libs
>> checking if gcc supports -fno-rtti -fno-exceptions... no
>> checking for gcc option to produce PIC... -fPIC -DPIC
>> checking if gcc PIC flag -fPIC -DPIC works... yes
>> checking if gcc static flag -static works... yes
>> checking if gcc supports -c -o file.o... yes
>> checking if gcc supports -c -o file.o... (cached) yes
>> checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports
>> shared libraries... yes
>> checking whether -lc should be explicitly linked in... no
>> checking dynamic linker characteristics... GNU/Linux ld.so
>> checking how to hardcode library paths into programs... immediate
>> checking for shl_load... no
>> checking for shl_load in -ldld... no
>> checking for dlopen... yes
>> checking whether a program can dlopen itself... yes
>> checking whether a statically linked program can dlopen itself... no
>> checking whether stripping libraries is possible... yes
>> checking if libtool supports shared libraries... yes
>> checking whether to build shared libraries... yes
>> checking whether to build static libraries... yes
>> checking for gcc... (cached) gcc
>> checking whether the compiler supports GNU C... (cached) yes
>> checking whether gcc accepts -g... (cached) yes
>> checking for gcc option to enable C11 features... (cached) none needed
>> checking whether gcc understands -c and -o together... (cached) yes
>> checking dependency style of gcc... (cached) gcc3
>> checking for fcntl.h... yes
>> checking for stdlib.h... (cached) yes
>> checking for string.h... (cached) yes
>> checking for sys/socket.h... yes
>> checking for time.h... yes
>> checking for sys/time.h... yes
>> checking for syslog.h... yes
>> checking for unistd.h... (cached) yes
>> checking for cairo/cairo.h... yes
>> checking for pngstruct.h... no
>> checking for gcc options needed to detect all undeclared functions...
>> none needed
>> checking for cos in -lm... yes
>> checking for png_write_png in -lpng... yes
>> checking for jpeg_start_compress in -ljpeg... yes
>> checking for cairo_create in -lcairo... yes
>> checking for pthread_create in -lpthread... yes
>> checking for dlopen in -ldl... yes
>> checking for uuid_generate in -luuid... yes
>> checking for CU_run_test in -lcunit... no
>> checking for clock_gettime... yes
>> checking for gettimeofday... yes
>> checking for memmove... yes
>> checking for memset... yes
>> checking for select... yes
>> checking for strdup... yes
>> checking for nanosleep... yes
>> checking whether png_get_io_ptr is declared... yes
>> checking whether cairo_format_stride_for_width is declared... yes
>> checking whether poll is declared... yes
>> checking whether strlcpy is declared... no
>> checking whether strlcat is declared... no
>> checking for size_t... yes
>> checking for ssize_t... yes
>> checking for pkg-config... /usr/bin/pkg-config
>> checking pkg-config is at least version 0.9.0... yes
>> checking for libavcodec... yes
>> checking for libavformat... yes
>> checking for libavutil... yes
>> checking for libswscale... yes
>> checking for openssl/ssl.h... yes
>> checking for SSL_CTX_new in -lssl... yes
>> checking whether DSA_SIG_get0 is declared... yes
>> checking whether DSA_get0_pqg is declared... yes
>> checking whether DSA_get0_key is declared... yes
>> checking whether RSA_get0_key is declared... yes
>> checking whether libssl requires threading callbacks... no
>> checking for main in -lwsock32... no
>> checking for vorbis/vorbisenc.h... yes
>> checking for ogg_stream_init in -logg... yes
>> checking for vorbis_block_init in -lvorbis... yes
>> checking for vorbis_encode_init in -lvorbisenc... yes
>> checking for pa_context_new in -lpulse... yes
>> checking for pango... yes
>> checking for pangocairo... yes
>> checking for rfbInitClient in -lvncclient... yes
>> checking whether LIBVNCSERVER_WITH_CLIENT_GCRYPT is declared... no
>> checking for rfbClient.destHost... yes
>> checking for rfbClient.destPort... yes
>> checking whether listenForIncomingConnectionsNoFork is declared... yes
>> checking for rfbClient.LockWriteToTLS... yes
>> checking for rfbClient.UnlockWriteToTLS... yes
>> checking for rfbClient.GetCredential... yes
>> checking for freerdp2 freerdp-client2 winpr2... yes
>> checking whether FreeRDPConvertColor is declared... yes
>> checking whether FreeRDP appears to be a development version... checking
>> how to run the C preprocessor... gcc -E
>> no
>> checking whether Bitmap_Free() frees the rdpBitmap and its image data...
>> no
>> checking whether pVirtualChannelWriteEx() frees the wStream upon
>> completion... no
>> checking whether rdpGlyph callbacks accept INT32 integer parameters... yes
>> checking whether CLIPRDR callbacks require const for their final
>> parameter... yes
>> checking whether RAIL callbacks require const for their final
>> parameter... yes
>> checking for rdpSettings.AllowUnanouncedOrdersFromServer... yes
>> checking for freerdp.VerifyCertificateEx... yes
>> checking for libssh2_session_init_ex in -lssh2... yes
>> checking for gcry_control in -lssh2... no
>> checking for telnet_init in -ltelnet... yes
>> checking for webp/encode.h... yes
>> checking for WebPEncode in -lwebp... yes
>> checking for lws_create_context in -lwebsockets... yes
>> checking whether LWS_CALLBACK_CLIENT_CLOSED is declared... yes
>> checking whether LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT is declared... yes
>> checking whether LCCSCF_USE_SSL is declared... yes
>> checking whether lws_callback_http_dummy is declared... yes
>> checking that generated files are newer than configure... done
>> configure: creating ./config.status
>> config.status: creating Makefile
>> config.status: creating doc/Doxyfile
>> config.status: creating src/common/Makefile
>> config.status: creating src/common/tests/Makefile
>> config.status: creating src/common-ssh/Makefile
>> config.status: creating src/common-ssh/tests/Makefile
>> config.status: creating src/terminal/Makefile
>> config.status: creating src/libguac/Makefile
>> config.status: creating src/libguac/tests/Makefile
>> config.status: creating src/guacd/Makefile
>> config.status: creating src/guacd/man/guacd.8
>> config.status: creating src/guacd/man/guacd.conf.5
>> config.status: creating src/guacenc/Makefile
>> config.status: creating src/guacenc/man/guacenc.1
>> config.status: creating src/guaclog/Makefile
>> config.status: creating src/guaclog/man/guaclog.1
>> config.status: creating src/pulse/Makefile
>> config.status: creating src/protocols/kubernetes/Makefile
>> config.status: creating src/protocols/kubernetes/tests/Makefile
>> config.status: creating src/protocols/rdp/Makefile
>> config.status: creating src/protocols/rdp/tests/Makefile
>> config.status: creating src/protocols/ssh/Makefile
>> config.status: creating src/protocols/telnet/Makefile
>> config.status: creating src/protocols/vnc/Makefile
>> config.status: creating config.h
>> config.status: executing depfiles commands
>> config.status: executing libtool commands
>>
>> ------------------------------------------------
>> guacamole-server version 1.4.0
>> ------------------------------------------------
>>
>>    Library status:
>>
>>      freerdp2 ............ yes
>>      pango ............... yes
>>      libavcodec .......... yes
>>      libavformat.......... yes
>>      libavutil ........... yes
>>      libssh2 ............. yes
>>      libssl .............. yes
>>      libswscale .......... yes
>>      libtelnet ........... yes
>>      libVNCServer ........ yes
>>      libvorbis ........... yes
>>      libpulse ............ yes
>>      libwebsockets ....... yes
>>      libwebp ............. yes
>>      wsock32 ............. no
>>
>>    Protocol support:
>>
>>       Kubernetes .... yes
>>       RDP ........... yes
>>       SSH ........... yes
>>       Telnet ........ yes
>>       VNC ........... yes
>>
>>    Services / tools:
>>
>>       guacd ...... yes
>>       guacenc .... yes
>>       guaclog .... yes
>>
>>    FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
>>    Init scripts: /etc/init.d
>>    Systemd units: no
>>
>> Type "make" to compile guacamole-server.
>>
>> *****@********:~/Downloads/guacamole-server-1.4.0$ make
>> make  all-recursive
>> make[1]: Entering directory '/home/vrgyl/Downloads/guacamole-server-1.4.0'
>> Making all in src/libguac
>> make[2]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> Making all in .
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>>   CC       libguac_la-argv.lo
>>   CC       libguac_la-audio.lo
>>   CC       libguac_la-client.lo
>>   CC       libguac_la-encode-jpeg.lo
>>   CC       libguac_la-encode-png.lo
>>   CC       libguac_la-error.lo
>>   CC       libguac_la-hash.lo
>>   CC       libguac_la-id.lo
>>   CC       libguac_la-palette.lo
>>   CC       libguac_la-parser.lo
>>   CC       libguac_la-pool.lo
>>   CC       libguac_la-protocol.lo
>>   CC       libguac_la-raw_encoder.lo
>>   CC       libguac_la-socket.lo
>>   CC       libguac_la-socket-broadcast.lo
>>   CC       libguac_la-socket-fd.lo
>>   CC       libguac_la-socket-nest.lo
>>   CC       libguac_la-socket-tee.lo
>>   CC       libguac_la-string.lo
>>   CC       libguac_la-timestamp.lo
>>   CC       libguac_la-unicode.lo
>>   CC       libguac_la-user.lo
>>   CC       libguac_la-user-handlers.lo
>>   CC       libguac_la-user-handshake.lo
>>   CC       libguac_la-wait-fd.lo
>>   CC       libguac_la-wol.lo
>>   CC       libguac_la-encode-webp.lo
>>   CC       libguac_la-socket-ssl.lo
>>   CCLD     libguac.la
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> Making all in tests
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
>> make[3]: Nothing to be done for 'all'.
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
>> make[2]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> Making all in src/common
>> make[2]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>> Making all in .
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>>   CC       libguac_common_la-io.lo
>>   CC       libguac_common_la-blank_cursor.lo
>>   CC       libguac_common_la-clipboard.lo
>>   CC       libguac_common_la-cursor.lo
>>   CC       libguac_common_la-display.lo
>>   CC       libguac_common_la-dot_cursor.lo
>>   CC       libguac_common_la-ibar_cursor.lo
>>   CC       libguac_common_la-iconv.lo
>>   CC       libguac_common_la-json.lo
>>   CC       libguac_common_la-list.lo
>>   CC       libguac_common_la-pointer_cursor.lo
>>   CC       libguac_common_la-recording.lo
>>   CC       libguac_common_la-rect.lo
>>   CC       libguac_common_la-string.lo
>>   CC       libguac_common_la-surface.lo
>>   CCLD     libguac_common.la
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>> Making all in tests
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
>> make[3]: Nothing to be done for 'all'.
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
>> make[2]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>> Making all in src/common-ssh
>> make[2]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>> Making all in .
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>>   CC       libguac_common_ssh_la-buffer.lo
>>   CC       libguac_common_ssh_la-dsa-compat.lo
>>   CC       libguac_common_ssh_la-rsa-compat.lo
>>   CC       libguac_common_ssh_la-sftp.lo
>>   CC       libguac_common_ssh_la-ssh.lo
>>   CC       libguac_common_ssh_la-key.lo
>> key.c: In function ‘guac_common_ssh_key_alloc’:
>> key.c:63:9: error: ‘PEM_read_bio_RSAPrivateKey’ is deprecated: Since
>> OpenSSL 3.0 [-Werror=deprecated-declarations]
>>    63 |         rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL,
>> passphrase);
>>       |         ^~~~~~~
>> In file included from key.c:33:
>> /usr/include/openssl/pem.h:447:1: note: declared here
>>   447 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA)
>>       | ^~~~~~~~~~~~~~~~~~~~~~
>> key.c:79:9: error: ‘RSA_get0_key’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>    79 |         RSA_get0_key(rsa_key, &key_n, &key_e, NULL);
>>       |         ^~~~~~~~~~~~
>> In file included from common-ssh/rsa-compat.h:26,
>>                  from key.c:25:
>> /usr/include/openssl/rsa.h:217:28: note: declared here
>>   217 | OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r,
>>       |                            ^~~~~~~~~~~~
>> key.c:105:9: error: ‘PEM_read_bio_DSAPrivateKey’ is deprecated: Since
>> OpenSSL 3.0 [-Werror=deprecated-declarations]
>>   105 |         dsa_key = PEM_read_bio_DSAPrivateKey(key_bio, NULL, NULL,
>> passphrase);
>>       |         ^~~~~~~
>> In file included from key.c:33:
>> /usr/include/openssl/pem.h:453:1: note: declared here
>>   453 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA)
>>       | ^~~~~~~~~~~~~~~~~~~~~~
>> key.c:121:9: error: ‘DSA_get0_pqg’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   121 |         DSA_get0_pqg(dsa_key, &key_p, &key_q, &key_g);
>>       |         ^~~~~~~~~~~~
>> In file included from common-ssh/dsa-compat.h:26,
>>                  from key.c:23:
>> /usr/include/openssl/dsa.h:201:28: note: declared here
>>   201 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const
>> BIGNUM **p,
>>       |                            ^~~~~~~~~~~~
>> key.c:122:9: error: ‘DSA_get0_key’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   122 |         DSA_get0_key(dsa_key, &pub_key, NULL);
>>       |         ^~~~~~~~~~~~
>> In file included from common-ssh/dsa-compat.h:26,
>>                  from key.c:23:
>> /usr/include/openssl/dsa.h:204:28: note: declared here
>>   204 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const
>> BIGNUM **pub_key,
>>       |                            ^~~~~~~~~~~~
>> key.c: In function ‘guac_common_ssh_key_free’:
>> key.c:164:9: error: ‘RSA_free’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   164 |         RSA_free(key->rsa);
>>       |         ^~~~~~~~
>> In file included from common-ssh/rsa-compat.h:26,
>>                  from key.c:25:
>> /usr/include/openssl/rsa.h:293:28: note: declared here
>>   293 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
>>       |                            ^~~~~~~~
>> key.c:166:9: error: ‘DSA_free’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   166 |         DSA_free(key->dsa);
>>       |         ^~~~~~~~
>> In file included from common-ssh/dsa-compat.h:26,
>>                  from key.c:23:
>> /usr/include/openssl/dsa.h:127:28: note: declared here
>>   127 | OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r);
>>       |                            ^~~~~~~~
>> key.c: In function ‘guac_common_ssh_key_sign’:
>> key.c:202:13: error: ‘RSA_sign’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   202 |             if (RSA_sign(NID_sha1, digest, dlen, sig, &len,
>> key->rsa) == 1)
>>       |             ^~
>> In file included from common-ssh/rsa-compat.h:26,
>>                  from key.c:25:
>> /usr/include/openssl/rsa.h:348:27: note: declared here
>>   348 | OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char
>> *m,
>>       |                           ^~~~~~~~
>> key.c:208:13: error: ‘DSA_do_sign’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   208 |             DSA_SIG* dsa_sig = DSA_do_sign(digest, dlen,
>> key->dsa);
>>       |             ^~~~~~~
>> In file included from common-ssh/dsa-compat.h:26,
>>                  from key.c:23:
>> /usr/include/openssl/dsa.h:113:32: note: declared here
>>   113 | OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char
>> *dgst, int dlen,
>>       |                                ^~~~~~~~~~~
>> cc1: all warnings being treated as errors
>> make[3]: *** [Makefile:591: libguac_common_ssh_la-key.lo] Error 1
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>> make[2]: *** [Makefile:617: all-recursive] Error 1
>> make[2]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>> make[1]: *** [Makefile:538: all-recursive] Error 1
>> make[1]: Leaving directory '/home/vrgyl/Downloads/guacamole-server-1.4.0'
>> make: *** [Makefile:460: all] Error 2
>> *****@********:~/Downloads/guacamole-server-1.4.0$ make install
>> Making install in src/libguac
>> make[1]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> Making install in .
>> make[2]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>>  /usr/bin/mkdir -p '/usr/local/lib'
>>  /bin/bash ../../libtool   --mode=install /usr/bin/install -c
>> libguac.la '/usr/local/lib'
>> libtool: install: /usr/bin/install -c .libs/libguac.so.20.0.0
>> /usr/local/lib/libguac.so.20.0.0
>> /usr/bin/install: cannot create regular file
>> '/usr/local/lib/libguac.so.20.0.0': Permission denied
>> make[3]: *** [Makefile:615: install-libLTLIBRARIES] Error 1
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> make[2]: *** [Makefile:1117: install-am] Error 2
>> make[2]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> make[1]: *** [Makefile:954: install-recursive] Error 1
>> make[1]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> make: *** [Makefile:538: install-recursive] Error 1
>> *****@********:~/Downloads/guacamole-server-1.4.0$ sudo make install
>> [sudo] password for vrgyl:
>> Making install in src/libguac
>> make[1]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> Making install in .
>> make[2]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>>  /usr/bin/mkdir -p '/usr/local/lib'
>>  /bin/bash ../../libtool   --mode=install /usr/bin/install -c
>> libguac.la '/usr/local/lib'
>> libtool: install: /usr/bin/install -c .libs/libguac.so.20.0.0
>> /usr/local/lib/libguac.so.20.0.0
>> libtool: install: (cd /usr/local/lib && { ln -s -f libguac.so.20.0.0
>> libguac.so.20 || { rm -f libguac.so.20 && ln -s libguac.so.20.0.0
>> libguac.so.20; }; })
>> libtool: install: (cd /usr/local/lib && { ln -s -f libguac.so.20.0.0
>> libguac.so || { rm -f libguac.so && ln -s libguac.so.20.0.0 libguac.so; };
>> })
>> libtool: install: /usr/bin/install -c .libs/libguac.lai /usr/local/lib/
>> libguac.la
>> libtool: install: /usr/bin/install -c .libs/libguac.a
>> /usr/local/lib/libguac.a
>> libtool: install: chmod 644 /usr/local/lib/libguac.a
>> libtool: install: ranlib /usr/local/lib/libguac.a
>> libtool: finish:
>> PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin"
>> ldconfig -n /usr/local/lib
>> ----------------------------------------------------------------------
>> Libraries have been installed in:
>>    /usr/local/lib
>>
>> If you ever happen to want to link against installed libraries
>> in a given directory, LIBDIR, you must either use libtool, and
>> specify the full pathname of the library, or use the '-LLIBDIR'
>> flag during linking and do at least one of the following:
>>    - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
>>      during execution
>>    - add LIBDIR to the 'LD_RUN_PATH' environment variable
>>      during linking
>>    - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
>>    - have your system administrator add LIBDIR to '/etc/ld.so.conf'
>>
>> See any operating system documentation about shared libraries for
>> more information, such as the ld(1) and ld.so(8) manual pages.
>> ----------------------------------------------------------------------
>>  /usr/bin/mkdir -p '/usr/local/include/guacamole'
>>  /usr/bin/install -c -m 644 guacamole/argv.h guacamole/argv-constants.h
>> guacamole/argv-fntypes.h guacamole/audio.h guacamole/audio-fntypes.h
>> guacamole/audio-types.h guacamole/client-constants.h guacamole/client.h
>> guacamole/client-fntypes.h guacamole/client-types.h guacamole/error.h
>> guacamole/error-types.h guacamole/hash.h guacamole/layer.h
>> guacamole/layer-types.h guacamole/object.h guacamole/object-types.h
>> guacamole/parser-constants.h guacamole/parser.h guacamole/parser-types.h
>> guacamole/plugin-constants.h guacamole/plugin.h guacamole/pool.h
>> guacamole/pool-types.h guacamole/protocol.h guacamole/protocol-constants.h
>> guacamole/protocol-types.h guacamole/socket-constants.h guacamole/socket.h
>> guacamole/socket-fntypes.h guacamole/socket-types.h guacamole/stream.h
>> guacamole/stream-types.h guacamole/string.h guacamole/timestamp.h
>> guacamole/timestamp-types.h guacamole/unicode.h guacamole/user.h
>> guacamole/user-constants.h guacamole/user-fntypes.h
>> '/usr/local/include/guacamole'
>>  /usr/bin/install -c -m 644 guacamole/user-types.h guacamole/wol.h
>> guacamole/wol-constants.h guacamole/socket-ssl.h
>> '/usr/local/include/guacamole'
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> make[2]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> Making install in tests
>> make[2]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
>> make[3]: Nothing to be done for 'install-exec-am'.
>> make[3]: Nothing to be done for 'install-data-am'.
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
>> make[2]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
>> make[1]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>> Making install in src/common
>> make[1]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>> Making install in .
>> make[2]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>> make[3]: Nothing to be done for 'install-exec-am'.
>> make[3]: Nothing to be done for 'install-data-am'.
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>> make[2]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>> Making install in tests
>> make[2]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
>> make[3]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
>> make[3]: Nothing to be done for 'install-exec-am'.
>> make[3]: Nothing to be done for 'install-data-am'.
>> make[3]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
>> make[2]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
>> make[1]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>> Making install in src/common-ssh
>> make[1]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>> Making install in .
>> make[2]: Entering directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>>   CC       libguac_common_ssh_la-key.lo
>> key.c: In function ‘guac_common_ssh_key_alloc’:
>> key.c:63:9: error: ‘PEM_read_bio_RSAPrivateKey’ is deprecated: Since
>> OpenSSL 3.0 [-Werror=deprecated-declarations]
>>    63 |         rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL,
>> passphrase);
>>       |         ^~~~~~~
>> In file included from key.c:33:
>> /usr/include/openssl/pem.h:447:1: note: declared here
>>   447 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA)
>>       | ^~~~~~~~~~~~~~~~~~~~~~
>> key.c:79:9: error: ‘RSA_get0_key’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>    79 |         RSA_get0_key(rsa_key, &key_n, &key_e, NULL);
>>       |         ^~~~~~~~~~~~
>> In file included from common-ssh/rsa-compat.h:26,
>>                  from key.c:25:
>> /usr/include/openssl/rsa.h:217:28: note: declared here
>>   217 | OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r,
>>       |                            ^~~~~~~~~~~~
>> key.c:105:9: error: ‘PEM_read_bio_DSAPrivateKey’ is deprecated: Since
>> OpenSSL 3.0 [-Werror=deprecated-declarations]
>>   105 |         dsa_key = PEM_read_bio_DSAPrivateKey(key_bio, NULL, NULL,
>> passphrase);
>>       |         ^~~~~~~
>> In file included from key.c:33:
>> /usr/include/openssl/pem.h:453:1: note: declared here
>>   453 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA)
>>       | ^~~~~~~~~~~~~~~~~~~~~~
>> key.c:121:9: error: ‘DSA_get0_pqg’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   121 |         DSA_get0_pqg(dsa_key, &key_p, &key_q, &key_g);
>>       |         ^~~~~~~~~~~~
>> In file included from common-ssh/dsa-compat.h:26,
>>                  from key.c:23:
>> /usr/include/openssl/dsa.h:201:28: note: declared here
>>   201 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const
>> BIGNUM **p,
>>       |                            ^~~~~~~~~~~~
>> key.c:122:9: error: ‘DSA_get0_key’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   122 |         DSA_get0_key(dsa_key, &pub_key, NULL);
>>       |         ^~~~~~~~~~~~
>> In file included from common-ssh/dsa-compat.h:26,
>>                  from key.c:23:
>> /usr/include/openssl/dsa.h:204:28: note: declared here
>>   204 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const
>> BIGNUM **pub_key,
>>       |                            ^~~~~~~~~~~~
>> key.c: In function ‘guac_common_ssh_key_free’:
>> key.c:164:9: error: ‘RSA_free’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   164 |         RSA_free(key->rsa);
>>       |         ^~~~~~~~
>> In file included from common-ssh/rsa-compat.h:26,
>>                  from key.c:25:
>> /usr/include/openssl/rsa.h:293:28: note: declared here
>>   293 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
>>       |                            ^~~~~~~~
>> key.c:166:9: error: ‘DSA_free’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   166 |         DSA_free(key->dsa);
>>       |         ^~~~~~~~
>> In file included from common-ssh/dsa-compat.h:26,
>>                  from key.c:23:
>> /usr/include/openssl/dsa.h:127:28: note: declared here
>>   127 | OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r);
>>       |                            ^~~~~~~~
>> key.c: In function ‘guac_common_ssh_key_sign’:
>> key.c:202:13: error: ‘RSA_sign’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   202 |             if (RSA_sign(NID_sha1, digest, dlen, sig, &len,
>> key->rsa) == 1)
>>       |             ^~
>> In file included from common-ssh/rsa-compat.h:26,
>>                  from key.c:25:
>> /usr/include/openssl/rsa.h:348:27: note: declared here
>>   348 | OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char
>> *m,
>>       |                           ^~~~~~~~
>> key.c:208:13: error: ‘DSA_do_sign’ is deprecated: Since OpenSSL 3.0
>> [-Werror=deprecated-declarations]
>>   208 |             DSA_SIG* dsa_sig = DSA_do_sign(digest, dlen,
>> key->dsa);
>>       |             ^~~~~~~
>> In file included from common-ssh/dsa-compat.h:26,
>>                  from key.c:23:
>> /usr/include/openssl/dsa.h:113:32: note: declared here
>>   113 | OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char
>> *dgst, int dlen,
>>       |                                ^~~~~~~~~~~
>> cc1: all warnings being treated as errors
>> make[2]: *** [Makefile:591: libguac_common_ssh_la-key.lo] Error 1
>> make[2]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>> make[1]: *** [Makefile:617: install-recursive] Error 1
>> make[1]: Leaving directory
>> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>> make: *** [Makefile:538: install-recursive] Error 1
>> *****@********:~/Downloads/guacamole-server-1.4.0$ ldconfig
>> /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~:
>> Permission denied
>> *****@********:~/Downloads/guacamole-server-1.4.0$ sudo ldconfig
>> *****@********:~/Downloads/guacamole-server-1.4.0$
>>
>> It looks like you are trying to compile the Guacamole server with OpenSSL
>> 3.0 and you are encountering errors related to deprecated functions.
>>
>> One potential solution would be to try compiling with OpenSSL 2.0
>> instead, as the deprecated functions might still be available in that
>> version. You can check your current OpenSSL version by running openssl
>> version.
>>
>> Alternatively, you could try updating the code in the key.c file to use
>> the recommended replacements for the deprecated functions. For example,
>> PEM_read_bio_RSAPrivateKey and PEM_read_bio_DSAPrivateKey have been
>> replaced with PEM_read_bio_PrivateKey, and RSA_get0_key has been replaced
>> with RSA_get0_key.
>>
>> I recommend consulting the OpenSSL documentation or asking for help in a
>> forum or on a mailing list specifically for the Guacamole project for
>> further assistance with this issue.
>>
>> Kazin Whitewind
>> What steps do I take in updating the code in the key.c file to use the
>> recommended replacements for the deprecated functions?
>> To update the code in key.c to use the recommended replacements for the
>> deprecated functions:
>>
>> Locate each instance of a deprecated function in the key.c file.
>> Replace the deprecated function with the recommended alternative.
>> Update the arguments for the new function to match its prototype.
>> Here is an example of how you could replace a deprecated function in the
>> key.c file:
>>
>> Copy code
>> - RSA* rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL,
>> passphrase);
>> + EVP_PKEY *pkey = NULL;
>> + PEM_read_bio_PrivateKey(key_bio, &pkey, NULL, passphrase);
>> + RSA *rsa_key = EVP_PKEY_get1_RSA(pkey);
>> In this example, the deprecated function PEM_read_bio_RSAPrivateKey is
>> replaced with PEM_read_bio_PrivateKey, and the resulting EVP_PKEY is then
>> converted to an RSA key using EVP_PKEY_get1_RSA.
>>
>> I recommend thoroughly testing your changes before deploying them in a
>> production environment, as modifying the code in this way may introduce new
>> errors or issues. If you have any problems or questions while updating the
>> code, you can seek help in a forum or on a mailing list specifically for
>> the Guacamole project.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@guacamole.apache.org
>> For additional commands, e-mail: user-help@guacamole.apache.org
>
>

Re: Errors with Decprecated Functions and OpenSSL 3.0

Posted by Michael Jumper <mj...@apache.org>.
This should already be addressed on the "master" branch in git via
GUACAMOLE-745.

See:

https://issues.apache.org/jira/browse/GUACAMOLE-745
https://issues.apache.org/jira/browse/GUACAMOLE-1553

The code in question no longer exists as of GUACAMOLE-745.

- Mike


On Thu, Jan 5, 2023 at 2:01 PM Ryan Isenor <rw...@gmail.com> wrote:

> Hello,
>
> I am trying to compile Guacamole Server 1.4.0 on Linux Mint 21 and though
> I am slowly working my way through a lot of the bugs and questions I
> previously had, I have hit a roadblock here with OpenSSL 3.0 deprecated
> errors. In order to provide you the context, I have uploaded the terminal
> script for the /$ make install: https://pastebin.com/Qhh7gWfq In an
> effort to try to resolve the issue myself, or at the very least acquire
> some knowledge as to what the error is and how I might correct it, I
> consulted ChatGPT and received a response that is attached to this email as
> a .txt file. In an effort to respect the privacy and security of the list,
> I have also upload that .txt file here: https://pastebin.com/UahxSzn6
>
> For the security and privacy conscious, the full script is below. My
> question, given that ChatGPT explained what is going on and how to fix it,
> is what precautions I should take and whether or not I should follow the
> advice of ChatGPT which is either suggesting I compile in OpenSSL 2.0 or
> replace the deprecated functions. Any help on expanding the insight
> provided would be greatly appreciated.
>
> *****@********:~/Downloads/guacamole-server-1.4.0$ autoreconf -fi
> libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
> libtoolize: copying file 'build-aux/ltmain.sh'
> libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
> libtoolize: copying file 'm4/libtool.m4'
> libtoolize: copying file 'm4/ltoptions.m4'
> libtoolize: copying file 'm4/ltsugar.m4'
> libtoolize: copying file 'm4/ltversion.m4'
> libtoolize: copying file 'm4/lt~obsolete.m4'
> configure.ac:29: warning: The macro `AC_CONFIG_HEADER' is obsolete.
> configure.ac:29: You should run autoupdate.
> ./lib/autoconf/status.m4:719: AC_CONFIG_HEADER is expanded from...
> configure.ac:29: the top level
> configure.ac:37: warning: The macro `AC_PROG_CC_C99' is obsolete.
> configure.ac:37: You should run autoupdate.
> ./lib/autoconf/c.m4:1659: AC_PROG_CC_C99 is expanded from...
> configure.ac:37: the top level
> configure.ac:38: warning: The macro `AC_PROG_LIBTOOL' is obsolete.
> configure.ac:38: You should run autoupdate.
> m4/libtool.m4:99: AC_PROG_LIBTOOL is expanded from...
> configure.ac:38: the top level
> configure.ac:27: installing 'build-aux/compile'
> configure.ac:23: installing 'build-aux/missing'
> src/common-ssh/Makefile.am: installing 'build-aux/depcomp'
> *****@********:~/Downloads/guacamole-server-1.4.0$ ./configure
> --with-init-dir=/etc/init.d
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether build environment is sane... yes
> checking for a race-free mkdir -p... /usr/bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> checking whether make supports nested variables... yes
> checking whether make supports nested variables... (cached) yes
> checking build system type... x86_64-pc-linux-gnu
> checking host system type... x86_64-pc-linux-gnu
> checking how to print strings... printf
> checking whether make supports the include directive... yes (GNU style)
> checking for gcc... gcc
> checking whether the C compiler works... yes
> checking for C compiler default output file name... a.out
> checking for suffix of executables...
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether the compiler supports GNU C... yes
> checking whether gcc accepts -g... yes
> checking for gcc option to enable C11 features... none needed
> checking whether gcc understands -c and -o together... yes
> checking dependency style of gcc... gcc3
> checking for a sed that does not truncate output... /usr/bin/sed
> checking for grep that handles long lines and -e... /usr/bin/grep
> checking for egrep... /usr/bin/grep -E
> checking for fgrep... /usr/bin/grep -F
> checking for ld used by gcc... /usr/bin/ld
> checking if the linker (/usr/bin/ld) is GNU ld... yes
> checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
> checking the name lister (/usr/bin/nm -B) interface... BSD nm
> checking whether ln -s works... yes
> checking the maximum length of command line arguments... 1572864
> checking how to convert x86_64-pc-linux-gnu file names to
> x86_64-pc-linux-gnu format... func_convert_file_noop
> checking how to convert x86_64-pc-linux-gnu file names to toolchain
> format... func_convert_file_noop
> checking for /usr/bin/ld option to reload object files... -r
> checking for objdump... objdump
> checking how to recognize dependent libraries... pass_all
> checking for dlltool... no
> checking how to associate runtime and link libraries... printf %s\n
> checking for ar... ar
> checking for archiver @FILE support... @
> checking for strip... strip
> checking for ranlib... ranlib
> checking command to parse /usr/bin/nm -B output from gcc object... ok
> checking for sysroot... no
> checking for a working dd... /usr/bin/dd
> checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
> checking for mt... mt
> checking if mt is a manifest tool... no
> checking for stdio.h... yes
> checking for stdlib.h... yes
> checking for string.h... yes
> checking for inttypes.h... yes
> checking for stdint.h... yes
> checking for strings.h... yes
> checking for sys/stat.h... yes
> checking for sys/types.h... yes
> checking for unistd.h... yes
> checking for dlfcn.h... yes
> checking for objdir... .libs
> checking if gcc supports -fno-rtti -fno-exceptions... no
> checking for gcc option to produce PIC... -fPIC -DPIC
> checking if gcc PIC flag -fPIC -DPIC works... yes
> checking if gcc static flag -static works... yes
> checking if gcc supports -c -o file.o... yes
> checking if gcc supports -c -o file.o... (cached) yes
> checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports
> shared libraries... yes
> checking whether -lc should be explicitly linked in... no
> checking dynamic linker characteristics... GNU/Linux ld.so
> checking how to hardcode library paths into programs... immediate
> checking for shl_load... no
> checking for shl_load in -ldld... no
> checking for dlopen... yes
> checking whether a program can dlopen itself... yes
> checking whether a statically linked program can dlopen itself... no
> checking whether stripping libraries is possible... yes
> checking if libtool supports shared libraries... yes
> checking whether to build shared libraries... yes
> checking whether to build static libraries... yes
> checking for gcc... (cached) gcc
> checking whether the compiler supports GNU C... (cached) yes
> checking whether gcc accepts -g... (cached) yes
> checking for gcc option to enable C11 features... (cached) none needed
> checking whether gcc understands -c and -o together... (cached) yes
> checking dependency style of gcc... (cached) gcc3
> checking for fcntl.h... yes
> checking for stdlib.h... (cached) yes
> checking for string.h... (cached) yes
> checking for sys/socket.h... yes
> checking for time.h... yes
> checking for sys/time.h... yes
> checking for syslog.h... yes
> checking for unistd.h... (cached) yes
> checking for cairo/cairo.h... yes
> checking for pngstruct.h... no
> checking for gcc options needed to detect all undeclared functions... none
> needed
> checking for cos in -lm... yes
> checking for png_write_png in -lpng... yes
> checking for jpeg_start_compress in -ljpeg... yes
> checking for cairo_create in -lcairo... yes
> checking for pthread_create in -lpthread... yes
> checking for dlopen in -ldl... yes
> checking for uuid_generate in -luuid... yes
> checking for CU_run_test in -lcunit... no
> checking for clock_gettime... yes
> checking for gettimeofday... yes
> checking for memmove... yes
> checking for memset... yes
> checking for select... yes
> checking for strdup... yes
> checking for nanosleep... yes
> checking whether png_get_io_ptr is declared... yes
> checking whether cairo_format_stride_for_width is declared... yes
> checking whether poll is declared... yes
> checking whether strlcpy is declared... no
> checking whether strlcat is declared... no
> checking for size_t... yes
> checking for ssize_t... yes
> checking for pkg-config... /usr/bin/pkg-config
> checking pkg-config is at least version 0.9.0... yes
> checking for libavcodec... yes
> checking for libavformat... yes
> checking for libavutil... yes
> checking for libswscale... yes
> checking for openssl/ssl.h... yes
> checking for SSL_CTX_new in -lssl... yes
> checking whether DSA_SIG_get0 is declared... yes
> checking whether DSA_get0_pqg is declared... yes
> checking whether DSA_get0_key is declared... yes
> checking whether RSA_get0_key is declared... yes
> checking whether libssl requires threading callbacks... no
> checking for main in -lwsock32... no
> checking for vorbis/vorbisenc.h... yes
> checking for ogg_stream_init in -logg... yes
> checking for vorbis_block_init in -lvorbis... yes
> checking for vorbis_encode_init in -lvorbisenc... yes
> checking for pa_context_new in -lpulse... yes
> checking for pango... yes
> checking for pangocairo... yes
> checking for rfbInitClient in -lvncclient... yes
> checking whether LIBVNCSERVER_WITH_CLIENT_GCRYPT is declared... no
> checking for rfbClient.destHost... yes
> checking for rfbClient.destPort... yes
> checking whether listenForIncomingConnectionsNoFork is declared... yes
> checking for rfbClient.LockWriteToTLS... yes
> checking for rfbClient.UnlockWriteToTLS... yes
> checking for rfbClient.GetCredential... yes
> checking for freerdp2 freerdp-client2 winpr2... yes
> checking whether FreeRDPConvertColor is declared... yes
> checking whether FreeRDP appears to be a development version... checking
> how to run the C preprocessor... gcc -E
> no
> checking whether Bitmap_Free() frees the rdpBitmap and its image data... no
> checking whether pVirtualChannelWriteEx() frees the wStream upon
> completion... no
> checking whether rdpGlyph callbacks accept INT32 integer parameters... yes
> checking whether CLIPRDR callbacks require const for their final
> parameter... yes
> checking whether RAIL callbacks require const for their final parameter...
> yes
> checking for rdpSettings.AllowUnanouncedOrdersFromServer... yes
> checking for freerdp.VerifyCertificateEx... yes
> checking for libssh2_session_init_ex in -lssh2... yes
> checking for gcry_control in -lssh2... no
> checking for telnet_init in -ltelnet... yes
> checking for webp/encode.h... yes
> checking for WebPEncode in -lwebp... yes
> checking for lws_create_context in -lwebsockets... yes
> checking whether LWS_CALLBACK_CLIENT_CLOSED is declared... yes
> checking whether LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT is declared... yes
> checking whether LCCSCF_USE_SSL is declared... yes
> checking whether lws_callback_http_dummy is declared... yes
> checking that generated files are newer than configure... done
> configure: creating ./config.status
> config.status: creating Makefile
> config.status: creating doc/Doxyfile
> config.status: creating src/common/Makefile
> config.status: creating src/common/tests/Makefile
> config.status: creating src/common-ssh/Makefile
> config.status: creating src/common-ssh/tests/Makefile
> config.status: creating src/terminal/Makefile
> config.status: creating src/libguac/Makefile
> config.status: creating src/libguac/tests/Makefile
> config.status: creating src/guacd/Makefile
> config.status: creating src/guacd/man/guacd.8
> config.status: creating src/guacd/man/guacd.conf.5
> config.status: creating src/guacenc/Makefile
> config.status: creating src/guacenc/man/guacenc.1
> config.status: creating src/guaclog/Makefile
> config.status: creating src/guaclog/man/guaclog.1
> config.status: creating src/pulse/Makefile
> config.status: creating src/protocols/kubernetes/Makefile
> config.status: creating src/protocols/kubernetes/tests/Makefile
> config.status: creating src/protocols/rdp/Makefile
> config.status: creating src/protocols/rdp/tests/Makefile
> config.status: creating src/protocols/ssh/Makefile
> config.status: creating src/protocols/telnet/Makefile
> config.status: creating src/protocols/vnc/Makefile
> config.status: creating config.h
> config.status: executing depfiles commands
> config.status: executing libtool commands
>
> ------------------------------------------------
> guacamole-server version 1.4.0
> ------------------------------------------------
>
>    Library status:
>
>      freerdp2 ............ yes
>      pango ............... yes
>      libavcodec .......... yes
>      libavformat.......... yes
>      libavutil ........... yes
>      libssh2 ............. yes
>      libssl .............. yes
>      libswscale .......... yes
>      libtelnet ........... yes
>      libVNCServer ........ yes
>      libvorbis ........... yes
>      libpulse ............ yes
>      libwebsockets ....... yes
>      libwebp ............. yes
>      wsock32 ............. no
>
>    Protocol support:
>
>       Kubernetes .... yes
>       RDP ........... yes
>       SSH ........... yes
>       Telnet ........ yes
>       VNC ........... yes
>
>    Services / tools:
>
>       guacd ...... yes
>       guacenc .... yes
>       guaclog .... yes
>
>    FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
>    Init scripts: /etc/init.d
>    Systemd units: no
>
> Type "make" to compile guacamole-server.
>
> *****@********:~/Downloads/guacamole-server-1.4.0$ make
> make  all-recursive
> make[1]: Entering directory '/home/vrgyl/Downloads/guacamole-server-1.4.0'
> Making all in src/libguac
> make[2]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> Making all in .
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>   CC       libguac_la-argv.lo
>   CC       libguac_la-audio.lo
>   CC       libguac_la-client.lo
>   CC       libguac_la-encode-jpeg.lo
>   CC       libguac_la-encode-png.lo
>   CC       libguac_la-error.lo
>   CC       libguac_la-hash.lo
>   CC       libguac_la-id.lo
>   CC       libguac_la-palette.lo
>   CC       libguac_la-parser.lo
>   CC       libguac_la-pool.lo
>   CC       libguac_la-protocol.lo
>   CC       libguac_la-raw_encoder.lo
>   CC       libguac_la-socket.lo
>   CC       libguac_la-socket-broadcast.lo
>   CC       libguac_la-socket-fd.lo
>   CC       libguac_la-socket-nest.lo
>   CC       libguac_la-socket-tee.lo
>   CC       libguac_la-string.lo
>   CC       libguac_la-timestamp.lo
>   CC       libguac_la-unicode.lo
>   CC       libguac_la-user.lo
>   CC       libguac_la-user-handlers.lo
>   CC       libguac_la-user-handshake.lo
>   CC       libguac_la-wait-fd.lo
>   CC       libguac_la-wol.lo
>   CC       libguac_la-encode-webp.lo
>   CC       libguac_la-socket-ssl.lo
>   CCLD     libguac.la
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> Making all in tests
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
> make[3]: Nothing to be done for 'all'.
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
> make[2]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> Making all in src/common
> make[2]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
> Making all in .
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
>   CC       libguac_common_la-io.lo
>   CC       libguac_common_la-blank_cursor.lo
>   CC       libguac_common_la-clipboard.lo
>   CC       libguac_common_la-cursor.lo
>   CC       libguac_common_la-display.lo
>   CC       libguac_common_la-dot_cursor.lo
>   CC       libguac_common_la-ibar_cursor.lo
>   CC       libguac_common_la-iconv.lo
>   CC       libguac_common_la-json.lo
>   CC       libguac_common_la-list.lo
>   CC       libguac_common_la-pointer_cursor.lo
>   CC       libguac_common_la-recording.lo
>   CC       libguac_common_la-rect.lo
>   CC       libguac_common_la-string.lo
>   CC       libguac_common_la-surface.lo
>   CCLD     libguac_common.la
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
> Making all in tests
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
> make[3]: Nothing to be done for 'all'.
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
> make[2]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
> Making all in src/common-ssh
> make[2]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
> Making all in .
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>   CC       libguac_common_ssh_la-buffer.lo
>   CC       libguac_common_ssh_la-dsa-compat.lo
>   CC       libguac_common_ssh_la-rsa-compat.lo
>   CC       libguac_common_ssh_la-sftp.lo
>   CC       libguac_common_ssh_la-ssh.lo
>   CC       libguac_common_ssh_la-key.lo
> key.c: In function ‘guac_common_ssh_key_alloc’:
> key.c:63:9: error: ‘PEM_read_bio_RSAPrivateKey’ is deprecated: Since
> OpenSSL 3.0 [-Werror=deprecated-declarations]
>    63 |         rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL,
> passphrase);
>       |         ^~~~~~~
> In file included from key.c:33:
> /usr/include/openssl/pem.h:447:1: note: declared here
>   447 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA)
>       | ^~~~~~~~~~~~~~~~~~~~~~
> key.c:79:9: error: ‘RSA_get0_key’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>    79 |         RSA_get0_key(rsa_key, &key_n, &key_e, NULL);
>       |         ^~~~~~~~~~~~
> In file included from common-ssh/rsa-compat.h:26,
>                  from key.c:25:
> /usr/include/openssl/rsa.h:217:28: note: declared here
>   217 | OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r,
>       |                            ^~~~~~~~~~~~
> key.c:105:9: error: ‘PEM_read_bio_DSAPrivateKey’ is deprecated: Since
> OpenSSL 3.0 [-Werror=deprecated-declarations]
>   105 |         dsa_key = PEM_read_bio_DSAPrivateKey(key_bio, NULL, NULL,
> passphrase);
>       |         ^~~~~~~
> In file included from key.c:33:
> /usr/include/openssl/pem.h:453:1: note: declared here
>   453 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA)
>       | ^~~~~~~~~~~~~~~~~~~~~~
> key.c:121:9: error: ‘DSA_get0_pqg’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   121 |         DSA_get0_pqg(dsa_key, &key_p, &key_q, &key_g);
>       |         ^~~~~~~~~~~~
> In file included from common-ssh/dsa-compat.h:26,
>                  from key.c:23:
> /usr/include/openssl/dsa.h:201:28: note: declared here
>   201 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const BIGNUM
> **p,
>       |                            ^~~~~~~~~~~~
> key.c:122:9: error: ‘DSA_get0_key’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   122 |         DSA_get0_key(dsa_key, &pub_key, NULL);
>       |         ^~~~~~~~~~~~
> In file included from common-ssh/dsa-compat.h:26,
>                  from key.c:23:
> /usr/include/openssl/dsa.h:204:28: note: declared here
>   204 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const BIGNUM
> **pub_key,
>       |                            ^~~~~~~~~~~~
> key.c: In function ‘guac_common_ssh_key_free’:
> key.c:164:9: error: ‘RSA_free’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   164 |         RSA_free(key->rsa);
>       |         ^~~~~~~~
> In file included from common-ssh/rsa-compat.h:26,
>                  from key.c:25:
> /usr/include/openssl/rsa.h:293:28: note: declared here
>   293 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
>       |                            ^~~~~~~~
> key.c:166:9: error: ‘DSA_free’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   166 |         DSA_free(key->dsa);
>       |         ^~~~~~~~
> In file included from common-ssh/dsa-compat.h:26,
>                  from key.c:23:
> /usr/include/openssl/dsa.h:127:28: note: declared here
>   127 | OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r);
>       |                            ^~~~~~~~
> key.c: In function ‘guac_common_ssh_key_sign’:
> key.c:202:13: error: ‘RSA_sign’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   202 |             if (RSA_sign(NID_sha1, digest, dlen, sig, &len,
> key->rsa) == 1)
>       |             ^~
> In file included from common-ssh/rsa-compat.h:26,
>                  from key.c:25:
> /usr/include/openssl/rsa.h:348:27: note: declared here
>   348 | OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char
> *m,
>       |                           ^~~~~~~~
> key.c:208:13: error: ‘DSA_do_sign’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   208 |             DSA_SIG* dsa_sig = DSA_do_sign(digest, dlen, key->dsa);
>       |             ^~~~~~~
> In file included from common-ssh/dsa-compat.h:26,
>                  from key.c:23:
> /usr/include/openssl/dsa.h:113:32: note: declared here
>   113 | OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char
> *dgst, int dlen,
>       |                                ^~~~~~~~~~~
> cc1: all warnings being treated as errors
> make[3]: *** [Makefile:591: libguac_common_ssh_la-key.lo] Error 1
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
> make[2]: *** [Makefile:617: all-recursive] Error 1
> make[2]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
> make[1]: *** [Makefile:538: all-recursive] Error 1
> make[1]: Leaving directory '/home/vrgyl/Downloads/guacamole-server-1.4.0'
> make: *** [Makefile:460: all] Error 2
> *****@********:~/Downloads/guacamole-server-1.4.0$ make install
> Making install in src/libguac
> make[1]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> Making install in .
> make[2]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>  /usr/bin/mkdir -p '/usr/local/lib'
>  /bin/bash ../../libtool   --mode=install /usr/bin/install -c   libguac.la
> '/usr/local/lib'
> libtool: install: /usr/bin/install -c .libs/libguac.so.20.0.0
> /usr/local/lib/libguac.so.20.0.0
> /usr/bin/install: cannot create regular file
> '/usr/local/lib/libguac.so.20.0.0': Permission denied
> make[3]: *** [Makefile:615: install-libLTLIBRARIES] Error 1
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> make[2]: *** [Makefile:1117: install-am] Error 2
> make[2]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> make[1]: *** [Makefile:954: install-recursive] Error 1
> make[1]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> make: *** [Makefile:538: install-recursive] Error 1
> *****@********:~/Downloads/guacamole-server-1.4.0$ sudo make install
> [sudo] password for vrgyl:
> Making install in src/libguac
> make[1]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> Making install in .
> make[2]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
>  /usr/bin/mkdir -p '/usr/local/lib'
>  /bin/bash ../../libtool   --mode=install /usr/bin/install -c   libguac.la
> '/usr/local/lib'
> libtool: install: /usr/bin/install -c .libs/libguac.so.20.0.0
> /usr/local/lib/libguac.so.20.0.0
> libtool: install: (cd /usr/local/lib && { ln -s -f libguac.so.20.0.0
> libguac.so.20 || { rm -f libguac.so.20 && ln -s libguac.so.20.0.0
> libguac.so.20; }; })
> libtool: install: (cd /usr/local/lib && { ln -s -f libguac.so.20.0.0
> libguac.so || { rm -f libguac.so && ln -s libguac.so.20.0.0 libguac.so; };
> })
> libtool: install: /usr/bin/install -c .libs/libguac.lai /usr/local/lib/
> libguac.la
> libtool: install: /usr/bin/install -c .libs/libguac.a
> /usr/local/lib/libguac.a
> libtool: install: chmod 644 /usr/local/lib/libguac.a
> libtool: install: ranlib /usr/local/lib/libguac.a
> libtool: finish:
> PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin"
> ldconfig -n /usr/local/lib
> ----------------------------------------------------------------------
> Libraries have been installed in:
>    /usr/local/lib
>
> If you ever happen to want to link against installed libraries
> in a given directory, LIBDIR, you must either use libtool, and
> specify the full pathname of the library, or use the '-LLIBDIR'
> flag during linking and do at least one of the following:
>    - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
>      during execution
>    - add LIBDIR to the 'LD_RUN_PATH' environment variable
>      during linking
>    - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
>    - have your system administrator add LIBDIR to '/etc/ld.so.conf'
>
> See any operating system documentation about shared libraries for
> more information, such as the ld(1) and ld.so(8) manual pages.
> ----------------------------------------------------------------------
>  /usr/bin/mkdir -p '/usr/local/include/guacamole'
>  /usr/bin/install -c -m 644 guacamole/argv.h guacamole/argv-constants.h
> guacamole/argv-fntypes.h guacamole/audio.h guacamole/audio-fntypes.h
> guacamole/audio-types.h guacamole/client-constants.h guacamole/client.h
> guacamole/client-fntypes.h guacamole/client-types.h guacamole/error.h
> guacamole/error-types.h guacamole/hash.h guacamole/layer.h
> guacamole/layer-types.h guacamole/object.h guacamole/object-types.h
> guacamole/parser-constants.h guacamole/parser.h guacamole/parser-types.h
> guacamole/plugin-constants.h guacamole/plugin.h guacamole/pool.h
> guacamole/pool-types.h guacamole/protocol.h guacamole/protocol-constants.h
> guacamole/protocol-types.h guacamole/socket-constants.h guacamole/socket.h
> guacamole/socket-fntypes.h guacamole/socket-types.h guacamole/stream.h
> guacamole/stream-types.h guacamole/string.h guacamole/timestamp.h
> guacamole/timestamp-types.h guacamole/unicode.h guacamole/user.h
> guacamole/user-constants.h guacamole/user-fntypes.h
> '/usr/local/include/guacamole'
>  /usr/bin/install -c -m 644 guacamole/user-types.h guacamole/wol.h
> guacamole/wol-constants.h guacamole/socket-ssl.h
> '/usr/local/include/guacamole'
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> make[2]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> Making install in tests
> make[2]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
> make[3]: Nothing to be done for 'install-exec-am'.
> make[3]: Nothing to be done for 'install-data-am'.
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
> make[2]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests'
> make[1]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac'
> Making install in src/common
> make[1]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
> Making install in .
> make[2]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
> make[3]: Nothing to be done for 'install-exec-am'.
> make[3]: Nothing to be done for 'install-data-am'.
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
> make[2]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
> Making install in tests
> make[2]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
> make[3]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
> make[3]: Nothing to be done for 'install-exec-am'.
> make[3]: Nothing to be done for 'install-data-am'.
> make[3]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
> make[2]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests'
> make[1]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common'
> Making install in src/common-ssh
> make[1]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
> Making install in .
> make[2]: Entering directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
>   CC       libguac_common_ssh_la-key.lo
> key.c: In function ‘guac_common_ssh_key_alloc’:
> key.c:63:9: error: ‘PEM_read_bio_RSAPrivateKey’ is deprecated: Since
> OpenSSL 3.0 [-Werror=deprecated-declarations]
>    63 |         rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL,
> passphrase);
>       |         ^~~~~~~
> In file included from key.c:33:
> /usr/include/openssl/pem.h:447:1: note: declared here
>   447 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA)
>       | ^~~~~~~~~~~~~~~~~~~~~~
> key.c:79:9: error: ‘RSA_get0_key’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>    79 |         RSA_get0_key(rsa_key, &key_n, &key_e, NULL);
>       |         ^~~~~~~~~~~~
> In file included from common-ssh/rsa-compat.h:26,
>                  from key.c:25:
> /usr/include/openssl/rsa.h:217:28: note: declared here
>   217 | OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r,
>       |                            ^~~~~~~~~~~~
> key.c:105:9: error: ‘PEM_read_bio_DSAPrivateKey’ is deprecated: Since
> OpenSSL 3.0 [-Werror=deprecated-declarations]
>   105 |         dsa_key = PEM_read_bio_DSAPrivateKey(key_bio, NULL, NULL,
> passphrase);
>       |         ^~~~~~~
> In file included from key.c:33:
> /usr/include/openssl/pem.h:453:1: note: declared here
>   453 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA)
>       | ^~~~~~~~~~~~~~~~~~~~~~
> key.c:121:9: error: ‘DSA_get0_pqg’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   121 |         DSA_get0_pqg(dsa_key, &key_p, &key_q, &key_g);
>       |         ^~~~~~~~~~~~
> In file included from common-ssh/dsa-compat.h:26,
>                  from key.c:23:
> /usr/include/openssl/dsa.h:201:28: note: declared here
>   201 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const BIGNUM
> **p,
>       |                            ^~~~~~~~~~~~
> key.c:122:9: error: ‘DSA_get0_key’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   122 |         DSA_get0_key(dsa_key, &pub_key, NULL);
>       |         ^~~~~~~~~~~~
> In file included from common-ssh/dsa-compat.h:26,
>                  from key.c:23:
> /usr/include/openssl/dsa.h:204:28: note: declared here
>   204 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const BIGNUM
> **pub_key,
>       |                            ^~~~~~~~~~~~
> key.c: In function ‘guac_common_ssh_key_free’:
> key.c:164:9: error: ‘RSA_free’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   164 |         RSA_free(key->rsa);
>       |         ^~~~~~~~
> In file included from common-ssh/rsa-compat.h:26,
>                  from key.c:25:
> /usr/include/openssl/rsa.h:293:28: note: declared here
>   293 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
>       |                            ^~~~~~~~
> key.c:166:9: error: ‘DSA_free’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   166 |         DSA_free(key->dsa);
>       |         ^~~~~~~~
> In file included from common-ssh/dsa-compat.h:26,
>                  from key.c:23:
> /usr/include/openssl/dsa.h:127:28: note: declared here
>   127 | OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r);
>       |                            ^~~~~~~~
> key.c: In function ‘guac_common_ssh_key_sign’:
> key.c:202:13: error: ‘RSA_sign’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   202 |             if (RSA_sign(NID_sha1, digest, dlen, sig, &len,
> key->rsa) == 1)
>       |             ^~
> In file included from common-ssh/rsa-compat.h:26,
>                  from key.c:25:
> /usr/include/openssl/rsa.h:348:27: note: declared here
>   348 | OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char
> *m,
>       |                           ^~~~~~~~
> key.c:208:13: error: ‘DSA_do_sign’ is deprecated: Since OpenSSL 3.0
> [-Werror=deprecated-declarations]
>   208 |             DSA_SIG* dsa_sig = DSA_do_sign(digest, dlen, key->dsa);
>       |             ^~~~~~~
> In file included from common-ssh/dsa-compat.h:26,
>                  from key.c:23:
> /usr/include/openssl/dsa.h:113:32: note: declared here
>   113 | OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char
> *dgst, int dlen,
>       |                                ^~~~~~~~~~~
> cc1: all warnings being treated as errors
> make[2]: *** [Makefile:591: libguac_common_ssh_la-key.lo] Error 1
> make[2]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
> make[1]: *** [Makefile:617: install-recursive] Error 1
> make[1]: Leaving directory
> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh'
> make: *** [Makefile:538: install-recursive] Error 1
> *****@********:~/Downloads/guacamole-server-1.4.0$ ldconfig
> /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~:
> Permission denied
> *****@********:~/Downloads/guacamole-server-1.4.0$ sudo ldconfig
> *****@********:~/Downloads/guacamole-server-1.4.0$
>
> It looks like you are trying to compile the Guacamole server with OpenSSL
> 3.0 and you are encountering errors related to deprecated functions.
>
> One potential solution would be to try compiling with OpenSSL 2.0 instead,
> as the deprecated functions might still be available in that version. You
> can check your current OpenSSL version by running openssl version.
>
> Alternatively, you could try updating the code in the key.c file to use
> the recommended replacements for the deprecated functions. For example,
> PEM_read_bio_RSAPrivateKey and PEM_read_bio_DSAPrivateKey have been
> replaced with PEM_read_bio_PrivateKey, and RSA_get0_key has been replaced
> with RSA_get0_key.
>
> I recommend consulting the OpenSSL documentation or asking for help in a
> forum or on a mailing list specifically for the Guacamole project for
> further assistance with this issue.
>
> Kazin Whitewind
> What steps do I take in updating the code in the key.c file to use the
> recommended replacements for the deprecated functions?
> To update the code in key.c to use the recommended replacements for the
> deprecated functions:
>
> Locate each instance of a deprecated function in the key.c file.
> Replace the deprecated function with the recommended alternative.
> Update the arguments for the new function to match its prototype.
> Here is an example of how you could replace a deprecated function in the
> key.c file:
>
> Copy code
> - RSA* rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL,
> passphrase);
> + EVP_PKEY *pkey = NULL;
> + PEM_read_bio_PrivateKey(key_bio, &pkey, NULL, passphrase);
> + RSA *rsa_key = EVP_PKEY_get1_RSA(pkey);
> In this example, the deprecated function PEM_read_bio_RSAPrivateKey is
> replaced with PEM_read_bio_PrivateKey, and the resulting EVP_PKEY is then
> converted to an RSA key using EVP_PKEY_get1_RSA.
>
> I recommend thoroughly testing your changes before deploying them in a
> production environment, as modifying the code in this way may introduce new
> errors or issues. If you have any problems or questions while updating the
> code, you can seek help in a forum or on a mailing list specifically for
> the Guacamole project.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@guacamole.apache.org
> For additional commands, e-mail: user-help@guacamole.apache.org