[libvirt] [PATCH] rpc: fixing compilation error due to deprecated ssh_get_publickey().

Julio Faracco jcfaracco at gmail.com
Fri May 4 21:01:57 UTC 2018


IMHO:
- The first approach is simple to remove in the future.
- The second one is easy to read and understand.

--
Julio Cesar Faracco

2018-05-04 16:10 GMT-03:00 Jiri Denemark <jdenemar at redhat.com>:
> On Tue, May 01, 2018 at 13:21:15 -0300, Julio Faracco wrote:
>> After 0.7.5 release, libssh deprecated ssh_get_publickey() method to
>> introduce ssh_get_server_publickey(). This commit check the current
>> version of libssh and use the proper method during the compilation.
>> See the error:
>>
>> make[3]: Entering directory '/home/julio/Desktop/virt/libvirt/src'
>>   CC       rpc/libvirt_net_rpc_la-virnetlibsshsession.lo
>> rpc/virnetlibsshsession.c:217:9: error: 'ssh_get_publickey' is deprecated [-Werror,-Wdeprecated-declarations]
>>     if (ssh_get_publickey(sess->session, &key) != SSH_OK) {
>>         ^
>> /usr/include/libssh/libssh.h:489:1: note: 'ssh_get_publickey' has been explicitly marked deprecated here
>> SSH_DEPRECATED LIBSSH_API int ssh_get_publickey(ssh_session session, ssh_key *key);
>> ^
>> /usr/include/libssh/libssh.h:99:40: note: expanded from macro 'SSH_DEPRECATED'
>>                                        ^
>> 1 error generated.
>> Makefile:8604: recipe for target 'rpc/libvirt_net_rpc_la-virnetlibsshsession.lo' failed
>>
>> Signed-off-by: Julio Faracco <jcfaracco at gmail.com>
>> ---
>>  src/rpc/virnetlibsshsession.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/src/rpc/virnetlibsshsession.c b/src/rpc/virnetlibsshsession.c
>> index 309e8a9340..96c5bc0882 100644
>> --- a/src/rpc/virnetlibsshsession.c
>> +++ b/src/rpc/virnetlibsshsession.c
>> @@ -214,7 +214,11 @@ virLibsshServerKeyAsString(virNetLibsshSessionPtr sess)
>>      size_t keyhashlen;
>>      char *str;
>>
>> +#if LIBSSH_VERSION_INT > 0x0705 /* 0.7.5 */
>> +    if (ssh_get_server_publickey(sess->session, &key) != SSH_OK) {
>> +#else
>>      if (ssh_get_publickey(sess->session, &key) != SSH_OK) {
>> +#endif
>>          virReportError(VIR_ERR_LIBSSH, "%s",
>>                         _("failed to get the key of the current "
>>                           "session"));
>
> How about making it easier to read and harder to mess up:
>
>     #if LIBSSH_VERSION_INT > 0x0705 /* 0.7.5 */
>         rc = ssh_get_server_publickey(sess->session, &key);
>     #else
>         rc = ssh_get_publickey(sess->session, &key);
>     #endif
>
>     if (rc != SSH_OK) {
>         ...
>     }
>
> Jirka




More information about the libvir-list mailing list