[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v9] ssh: switch from libssh2 to libssh
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-block] [PATCH v9] ssh: switch from libssh2 to libssh |
Date: |
Fri, 14 Jun 2019 17:15:57 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 6/14/19 4:34 PM, Max Reitz wrote:
> On 14.06.19 16:29, Pino Toscano wrote:
>> On Thursday, 13 June 2019 21:31:40 CEST Max Reitz wrote:
>>> On 13.06.19 15:20, Pino Toscano wrote:
[...]
>>>> - case LIBSSH2_KNOWNHOST_CHECK_NOTFOUND:
>>>> + case SSH_KNOWN_HOSTS_OTHER:
>>>> ret = -EINVAL;
>>>> - session_error_setg(errp, s, "no host key was found in
>>>> known_hosts");
>>>> + error_setg(errp,
>>>> + "host key for this server not found, another type
>>>> exists");
>>>> goto out;
>>>> - case LIBSSH2_KNOWNHOST_CHECK_FAILURE:
>>>> + case SSH_KNOWN_HOSTS_UNKNOWN:
>>>> ret = -EINVAL;
>>>> - session_error_setg(errp, s,
>>>> - "failure matching the host key with known_hosts");
>>>> + error_setg(errp, "no host key was found in known_hosts");
>>>> + goto out;
>>>> + case SSH_KNOWN_HOSTS_NOT_FOUND:
>>>> + ret = -ENOENT;
>>>> + error_setg(errp, "known_hosts file not found");
>>>> + goto out;
>>>> + case SSH_KNOWN_HOSTS_ERROR:
>>>> + ret = -EINVAL;
>>>> + error_setg(errp, "error while checking the host");
>>>> goto out;
>>>> default:
>>>> ret = -EINVAL;
>>>> - session_error_setg(errp, s, "unknown error matching the host key"
>>>> - " with known_hosts (%d)", r);
>>>> + error_setg(errp, "error while checking for known server");
>>>> goto out;
>>>> }
>>>> +#else /* !HAVE_LIBSSH_0_8 */
>>>> + int state;
>>>> +
>>>> + state = ssh_is_server_known(s->session);
>>>> + trace_ssh_server_status(state);
>>>> +
>>>> + switch (state) {
>>>> + case SSH_SERVER_KNOWN_OK:
>>>> + /* OK */
>>>> + trace_ssh_check_host_key_knownhosts();
>>>> + break;
>>>> + case SSH_SERVER_KNOWN_CHANGED:
>>>> + ret = -EINVAL;
>>>> + error_setg(errp, "host key does not match the one in
>>>> known_hosts");
>>>> + goto out;
>>>> + case SSH_SERVER_FOUND_OTHER:
>>>> + ret = -EINVAL;
>>>> + error_setg(errp,
>>>> + "host key for this server not found, another type
>>>> exists");
>>>> + goto out;
>>>> + case SSH_SERVER_FILE_NOT_FOUND:
>>>> + ret = -ENOENT;
>>>> + error_setg(errp, "known_hosts file not found");
>>>> + goto out;
>>>> + case SSH_SERVER_NOT_KNOWN:
>>>> + ret = -EINVAL;
>>>> + error_setg(errp, "no host key was found in known_hosts");
>>>> + goto out;
>>>> + case SSH_SERVER_ERROR:
>>>> + ret = -EINVAL;
>>>> + error_setg(errp, "server error");
>>>> + goto out;
>>>
>>> No default here?
>>
>> This switch is for libssh < 0.8.0, so enumerating all the possible
>> values of the enum of the old API is enough.
>
> state is an integer. I feel very uneasy about not having a default
> clause for a plain integer, especially if it is supplied by an external
> library.
Agreed. What's odd is I tested it on Ubuntu Xenial which is 0.6.3 and no
got no cpp warning. I wonder if it is using a backported patch adding
ssh_session_is_known_server(), like 0.7.1 on Ubuntu Bionic. Anyway,
better add a default.
signature.asc
Description: OpenPGP digital signature
- Re: [Qemu-block] [Qemu-devel] [PATCH v9] ssh: switch from libssh2 to libssh, (continued)
Re: [Qemu-block] [PATCH v9] ssh: switch from libssh2 to libssh, Max Reitz, 2019/06/13
Re: [Qemu-block] [PATCH v9] ssh: switch from libssh2 to libssh, Pino Toscano, 2019/06/14