mirror of
				https://github.com/libssh2/libssh2.git
				synced 2025-11-03 22:13:11 +03:00 
			
		
		
		
	rename libssh2_error to the correct _libssh2_error
We reserve ^libssh2_ for public symbols and we use _libssh2 as prefix for internal ones. I fixed the intendation of all these edits with emacs afterwards, which then changed it slightly more than just _libssh2_error() expressions but I didn't see any obvious problems.
This commit is contained in:
		
							
								
								
									
										272
									
								
								src/publickey.c
									
									
									
									
									
								
							
							
						
						
									
										272
									
								
								src/publickey.c
									
									
									
									
									
								
							@@ -118,7 +118,7 @@ publickey_status_error(const LIBSSH2_PUBLICKEY *pkey,
 | 
			
		||||
        msg = publickey_status_codes[status].name;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, msg);
 | 
			
		||||
    _libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, msg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -140,17 +140,17 @@ publickey_packet_receive(LIBSSH2_PUBLICKEY * pkey,
 | 
			
		||||
        if (rc == PACKET_EAGAIN) {
 | 
			
		||||
            return rc;
 | 
			
		||||
        } else if (rc != 4) {
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                                 "Invalid response from publickey subsystem");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                                  "Invalid response from publickey subsystem");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pkey->receive_packet_len = _libssh2_ntohu32(buffer);
 | 
			
		||||
        pkey->receive_packet =
 | 
			
		||||
            LIBSSH2_ALLOC(session, pkey->receive_packet_len);
 | 
			
		||||
        if (!pkey->receive_packet) {
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                 "Unable to allocate publickey response "
 | 
			
		||||
                                 "buffer");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                  "Unable to allocate publickey response "
 | 
			
		||||
                                  "buffer");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pkey->receive_state = libssh2_NB_state_sent;
 | 
			
		||||
@@ -165,9 +165,9 @@ publickey_packet_receive(LIBSSH2_PUBLICKEY * pkey,
 | 
			
		||||
            LIBSSH2_FREE(session, pkey->receive_packet);
 | 
			
		||||
            pkey->receive_packet = NULL;
 | 
			
		||||
            pkey->receive_state = libssh2_NB_state_idle;
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
 | 
			
		||||
                                 "Timeout waiting for publickey subsystem "
 | 
			
		||||
                                 "response packet");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
 | 
			
		||||
                                  "Timeout waiting for publickey subsystem "
 | 
			
		||||
                                  "response packet");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        *data = pkey->receive_packet;
 | 
			
		||||
@@ -233,36 +233,36 @@ publickey_response_success(LIBSSH2_PUBLICKEY * pkey)
 | 
			
		||||
        if (rc == PACKET_EAGAIN) {
 | 
			
		||||
            return rc;
 | 
			
		||||
        } else if (rc) {
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
 | 
			
		||||
                                 "Timeout waiting for response from "
 | 
			
		||||
                                 "publickey subsystem");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
 | 
			
		||||
                                  "Timeout waiting for response from "
 | 
			
		||||
                                  "publickey subsystem");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        s = data;
 | 
			
		||||
        if ((response = publickey_response_id(&s, data_len)) < 0) {
 | 
			
		||||
            LIBSSH2_FREE(session, data);
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                                 "Invalid publickey subsystem response code");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                                  "Invalid publickey subsystem response code");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        switch (response) {
 | 
			
		||||
        case LIBSSH2_PUBLICKEY_RESPONSE_STATUS:
 | 
			
		||||
            /* Error, or processing complete */
 | 
			
		||||
            {
 | 
			
		||||
                unsigned long status = _libssh2_ntohu32(s);
 | 
			
		||||
        {
 | 
			
		||||
            unsigned long status = _libssh2_ntohu32(s);
 | 
			
		||||
 | 
			
		||||
                LIBSSH2_FREE(session, data);
 | 
			
		||||
            LIBSSH2_FREE(session, data);
 | 
			
		||||
 | 
			
		||||
                if (status == LIBSSH2_PUBLICKEY_SUCCESS)
 | 
			
		||||
                    return 0;
 | 
			
		||||
            if (status == LIBSSH2_PUBLICKEY_SUCCESS)
 | 
			
		||||
                return 0;
 | 
			
		||||
 | 
			
		||||
                publickey_status_error(pkey, session, status);
 | 
			
		||||
                return -1;
 | 
			
		||||
            }
 | 
			
		||||
            publickey_status_error(pkey, session, status);
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
        default:
 | 
			
		||||
            /* Unknown/Unexpected */
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                          "Unexpected publickey subsystem response, ignoring");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                           "Unexpected publickey subsystem response, ignoring");
 | 
			
		||||
            LIBSSH2_FREE(session, data);
 | 
			
		||||
            data = NULL;
 | 
			
		||||
        }
 | 
			
		||||
@@ -272,8 +272,8 @@ publickey_response_success(LIBSSH2_PUBLICKEY * pkey)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* *****************
 | 
			
		||||
   * Publickey API *
 | 
			
		||||
   ***************** */
 | 
			
		||||
 * Publickey API *
 | 
			
		||||
 ***************** */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * libssh2_publickey_init
 | 
			
		||||
@@ -312,14 +312,14 @@ libssh2_publickey_init(LIBSSH2_SESSION * session)
 | 
			
		||||
                && (libssh2_session_last_errno(session) ==
 | 
			
		||||
                    LIBSSH2_ERROR_EAGAIN)) {
 | 
			
		||||
                /* The error state is already set, so leave it */
 | 
			
		||||
                libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                              "Would block to startup channel");
 | 
			
		||||
                _libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                               "Would block to startup channel");
 | 
			
		||||
                return NULL;
 | 
			
		||||
            } else if (!session->pkeyInit_channel
 | 
			
		||||
                       && (libssh2_session_last_errno(session) !=
 | 
			
		||||
                           LIBSSH2_ERROR_EAGAIN)) {
 | 
			
		||||
                libssh2_error(session, LIBSSH2_ERROR_CHANNEL_FAILURE,
 | 
			
		||||
                              "Unable to startup channel");
 | 
			
		||||
                _libssh2_error(session, LIBSSH2_ERROR_CHANNEL_FAILURE,
 | 
			
		||||
                               "Unable to startup channel");
 | 
			
		||||
                goto err_exit;
 | 
			
		||||
            }
 | 
			
		||||
        } while (!session->pkeyInit_channel);
 | 
			
		||||
@@ -333,12 +333,12 @@ libssh2_publickey_init(LIBSSH2_SESSION * session)
 | 
			
		||||
                                             sizeof("subsystem") - 1,
 | 
			
		||||
                                             "publickey", strlen("publickey"));
 | 
			
		||||
        if (rc == PACKET_EAGAIN) {
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                          "Would block starting publickey subsystem");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                           "Would block starting publickey subsystem");
 | 
			
		||||
            return NULL;
 | 
			
		||||
        } else if (rc) {
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_CHANNEL_FAILURE,
 | 
			
		||||
                          "Unable to request publickey subsystem");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_CHANNEL_FAILURE,
 | 
			
		||||
                           "Unable to request publickey subsystem");
 | 
			
		||||
            goto err_exit;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -349,16 +349,16 @@ libssh2_publickey_init(LIBSSH2_SESSION * session)
 | 
			
		||||
        rc = libssh2_channel_handle_extended_data2(session->pkeyInit_channel,
 | 
			
		||||
                                                   LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE);
 | 
			
		||||
        if (rc == PACKET_EAGAIN) {
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                          "Would block starting publickey subsystem");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                           "Would block starting publickey subsystem");
 | 
			
		||||
            return NULL;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        session->pkeyInit_pkey =
 | 
			
		||||
            LIBSSH2_ALLOC(session, sizeof(LIBSSH2_PUBLICKEY));
 | 
			
		||||
        if (!session->pkeyInit_pkey) {
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                          "Unable to allocate a new publickey structure");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                           "Unable to allocate a new publickey structure");
 | 
			
		||||
            goto err_exit;
 | 
			
		||||
        }
 | 
			
		||||
        memset(session->pkeyInit_pkey, 0, sizeof(LIBSSH2_PUBLICKEY));
 | 
			
		||||
@@ -386,12 +386,12 @@ libssh2_publickey_init(LIBSSH2_SESSION * session)
 | 
			
		||||
        rc = _libssh2_channel_write(session->pkeyInit_channel, 0,
 | 
			
		||||
                                    (char *) buffer, (s - buffer));
 | 
			
		||||
        if (rc == PACKET_EAGAIN) {
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                          "Would block sending publickey version packet");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                           "Would block sending publickey version packet");
 | 
			
		||||
            return NULL;
 | 
			
		||||
        } else if ((s - buffer) != rc) {
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND,
 | 
			
		||||
                          "Unable to send publickey version packet");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND,
 | 
			
		||||
                           "Unable to send publickey version packet");
 | 
			
		||||
            goto err_exit;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -404,56 +404,56 @@ libssh2_publickey_init(LIBSSH2_SESSION * session)
 | 
			
		||||
                                          &session->pkeyInit_data,
 | 
			
		||||
                                          &session->pkeyInit_data_len);
 | 
			
		||||
            if (rc == PACKET_EAGAIN) {
 | 
			
		||||
                libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                              "Would block waiting for response from "
 | 
			
		||||
                              "publickey subsystem");
 | 
			
		||||
                _libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                               "Would block waiting for response from "
 | 
			
		||||
                               "publickey subsystem");
 | 
			
		||||
                return NULL;
 | 
			
		||||
            } else if (rc) {
 | 
			
		||||
                libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
 | 
			
		||||
                              "Timeout waiting for response from "
 | 
			
		||||
                              "publickey subsystem");
 | 
			
		||||
                _libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
 | 
			
		||||
                               "Timeout waiting for response from "
 | 
			
		||||
                               "publickey subsystem");
 | 
			
		||||
                goto err_exit;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            s = session->pkeyInit_data;
 | 
			
		||||
            if ((response =
 | 
			
		||||
                 publickey_response_id(&s, session->pkeyInit_data_len)) < 0) {
 | 
			
		||||
                libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                              "Invalid publickey subsystem response code");
 | 
			
		||||
                _libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                               "Invalid publickey subsystem response code");
 | 
			
		||||
                goto err_exit;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            switch (response) {
 | 
			
		||||
            case LIBSSH2_PUBLICKEY_RESPONSE_STATUS:
 | 
			
		||||
                /* Error */
 | 
			
		||||
                {
 | 
			
		||||
                    unsigned long status, descr_len, lang_len;
 | 
			
		||||
                    unsigned char *descr, *lang;
 | 
			
		||||
            {
 | 
			
		||||
                unsigned long status, descr_len, lang_len;
 | 
			
		||||
                unsigned char *descr, *lang;
 | 
			
		||||
 | 
			
		||||
                    status = _libssh2_ntohu32(s);
 | 
			
		||||
                    s += 4;
 | 
			
		||||
                    descr_len = _libssh2_ntohu32(s);
 | 
			
		||||
                    s += 4;
 | 
			
		||||
                    descr = s;
 | 
			
		||||
                    s += descr_len;
 | 
			
		||||
                    lang_len = _libssh2_ntohu32(s);
 | 
			
		||||
                    s += 4;
 | 
			
		||||
                    lang = s;
 | 
			
		||||
                    s += lang_len;
 | 
			
		||||
 | 
			
		||||
                    if (s >
 | 
			
		||||
                        session->pkeyInit_data + session->pkeyInit_data_len) {
 | 
			
		||||
                        libssh2_error(session,
 | 
			
		||||
                                      LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                                      "Malformed publickey subsystem packet");
 | 
			
		||||
                        goto err_exit;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    publickey_status_error(NULL, session, status);
 | 
			
		||||
                status = _libssh2_ntohu32(s);
 | 
			
		||||
                s += 4;
 | 
			
		||||
                descr_len = _libssh2_ntohu32(s);
 | 
			
		||||
                s += 4;
 | 
			
		||||
                descr = s;
 | 
			
		||||
                s += descr_len;
 | 
			
		||||
                lang_len = _libssh2_ntohu32(s);
 | 
			
		||||
                s += 4;
 | 
			
		||||
                lang = s;
 | 
			
		||||
                s += lang_len;
 | 
			
		||||
 | 
			
		||||
                if (s >
 | 
			
		||||
                    session->pkeyInit_data + session->pkeyInit_data_len) {
 | 
			
		||||
                    _libssh2_error(session,
 | 
			
		||||
                                   LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                                   "Malformed publickey subsystem packet");
 | 
			
		||||
                    goto err_exit;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                publickey_status_error(NULL, session, status);
 | 
			
		||||
 | 
			
		||||
                goto err_exit;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            case LIBSSH2_PUBLICKEY_RESPONSE_VERSION:
 | 
			
		||||
                /* What we want */
 | 
			
		||||
                session->pkeyInit_pkey->version = _libssh2_ntohu32(s);
 | 
			
		||||
@@ -475,9 +475,9 @@ libssh2_publickey_init(LIBSSH2_SESSION * session)
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                /* Unknown/Unexpected */
 | 
			
		||||
                libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                              "Unexpected publickey subsystem response, "
 | 
			
		||||
                              "ignoring");
 | 
			
		||||
                _libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                               "Unexpected publickey subsystem response, "
 | 
			
		||||
                               "ignoring");
 | 
			
		||||
                LIBSSH2_FREE(session, session->pkeyInit_data);
 | 
			
		||||
                session->pkeyInit_data = NULL;
 | 
			
		||||
            }
 | 
			
		||||
@@ -490,8 +490,8 @@ libssh2_publickey_init(LIBSSH2_SESSION * session)
 | 
			
		||||
    if (session->pkeyInit_channel) {
 | 
			
		||||
        rc = libssh2_channel_close(session->pkeyInit_channel);
 | 
			
		||||
        if (rc == PACKET_EAGAIN) {
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                          "Would block closing channel");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
 | 
			
		||||
                           "Would block closing channel");
 | 
			
		||||
            return NULL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -555,9 +555,9 @@ libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY * pkey, const unsigned char *name,
 | 
			
		||||
 | 
			
		||||
        pkey->add_packet = LIBSSH2_ALLOC(session, packet_len);
 | 
			
		||||
        if (!pkey->add_packet) {
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                 "Unable to allocate memory for "
 | 
			
		||||
                                 "publickey \"add\" packet");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                  "Unable to allocate memory for "
 | 
			
		||||
                                  "publickey \"add\" packet");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pkey->add_s = pkey->add_packet;
 | 
			
		||||
@@ -625,8 +625,8 @@ libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY * pkey, const unsigned char *name,
 | 
			
		||||
        } else if ((pkey->add_s - pkey->add_packet) != rc) {
 | 
			
		||||
            LIBSSH2_FREE(session, pkey->add_packet);
 | 
			
		||||
            pkey->add_packet = NULL;
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND,
 | 
			
		||||
                                 "Unable to send publickey add packet");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND,
 | 
			
		||||
                                  "Unable to send publickey add packet");
 | 
			
		||||
        }
 | 
			
		||||
        LIBSSH2_FREE(session, pkey->add_packet);
 | 
			
		||||
        pkey->add_packet = NULL;
 | 
			
		||||
@@ -663,9 +663,9 @@ libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY * pkey,
 | 
			
		||||
 | 
			
		||||
        pkey->remove_packet = LIBSSH2_ALLOC(session, packet_len);
 | 
			
		||||
        if (!pkey->remove_packet) {
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                 "Unable to allocate memory for "
 | 
			
		||||
                                 "publickey \"remove\" packet");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                  "Unable to allocate memory for "
 | 
			
		||||
                                  "publickey \"remove\" packet");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pkey->remove_s = pkey->remove_packet;
 | 
			
		||||
@@ -700,8 +700,8 @@ libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY * pkey,
 | 
			
		||||
            LIBSSH2_FREE(session, pkey->remove_packet);
 | 
			
		||||
            pkey->remove_packet = NULL;
 | 
			
		||||
            pkey->remove_state = libssh2_NB_state_idle;
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND,
 | 
			
		||||
                                 "Unable to send publickey remove packet");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND,
 | 
			
		||||
                                  "Unable to send publickey remove packet");
 | 
			
		||||
        }
 | 
			
		||||
        LIBSSH2_FREE(session, pkey->remove_packet);
 | 
			
		||||
        pkey->remove_packet = NULL;
 | 
			
		||||
@@ -760,8 +760,8 @@ libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY * pkey, unsigned long *num_keys,
 | 
			
		||||
            return rc;
 | 
			
		||||
        } else if ((pkey->listFetch_s - pkey->listFetch_buffer) != rc) {
 | 
			
		||||
            pkey->listFetch_state = libssh2_NB_state_idle;
 | 
			
		||||
            return libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND,
 | 
			
		||||
                                 "Unable to send publickey list packet");
 | 
			
		||||
            return _libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND,
 | 
			
		||||
                                  "Unable to send publickey list packet");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pkey->listFetch_state = libssh2_NB_state_sent;
 | 
			
		||||
@@ -773,9 +773,9 @@ libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY * pkey, unsigned long *num_keys,
 | 
			
		||||
        if (rc == PACKET_EAGAIN) {
 | 
			
		||||
            return rc;
 | 
			
		||||
        } else if (rc) {
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
 | 
			
		||||
                          "Timeout waiting for response from "
 | 
			
		||||
                          "publickey subsystem");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT,
 | 
			
		||||
                           "Timeout waiting for response from "
 | 
			
		||||
                           "publickey subsystem");
 | 
			
		||||
            goto err_exit;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -783,48 +783,48 @@ libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY * pkey, unsigned long *num_keys,
 | 
			
		||||
        if ((response =
 | 
			
		||||
             publickey_response_id(&pkey->listFetch_s,
 | 
			
		||||
                                   pkey->listFetch_data_len)) < 0) {
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                          "Invalid publickey subsystem response code");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                           "Invalid publickey subsystem response code");
 | 
			
		||||
            goto err_exit;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        switch (response) {
 | 
			
		||||
        case LIBSSH2_PUBLICKEY_RESPONSE_STATUS:
 | 
			
		||||
            /* Error, or processing complete */
 | 
			
		||||
            {
 | 
			
		||||
                unsigned long status, descr_len, lang_len;
 | 
			
		||||
                unsigned char *descr, *lang;
 | 
			
		||||
        {
 | 
			
		||||
            unsigned long status, descr_len, lang_len;
 | 
			
		||||
            unsigned char *descr, *lang;
 | 
			
		||||
 | 
			
		||||
                status = _libssh2_ntohu32(pkey->listFetch_s);
 | 
			
		||||
                pkey->listFetch_s += 4;
 | 
			
		||||
                descr_len = _libssh2_ntohu32(pkey->listFetch_s);
 | 
			
		||||
                pkey->listFetch_s += 4;
 | 
			
		||||
                descr = pkey->listFetch_s;
 | 
			
		||||
                pkey->listFetch_s += descr_len;
 | 
			
		||||
                lang_len = _libssh2_ntohu32(pkey->listFetch_s);
 | 
			
		||||
                pkey->listFetch_s += 4;
 | 
			
		||||
                lang = pkey->listFetch_s;
 | 
			
		||||
                pkey->listFetch_s += lang_len;
 | 
			
		||||
            status = _libssh2_ntohu32(pkey->listFetch_s);
 | 
			
		||||
            pkey->listFetch_s += 4;
 | 
			
		||||
            descr_len = _libssh2_ntohu32(pkey->listFetch_s);
 | 
			
		||||
            pkey->listFetch_s += 4;
 | 
			
		||||
            descr = pkey->listFetch_s;
 | 
			
		||||
            pkey->listFetch_s += descr_len;
 | 
			
		||||
            lang_len = _libssh2_ntohu32(pkey->listFetch_s);
 | 
			
		||||
            pkey->listFetch_s += 4;
 | 
			
		||||
            lang = pkey->listFetch_s;
 | 
			
		||||
            pkey->listFetch_s += lang_len;
 | 
			
		||||
 | 
			
		||||
                if (pkey->listFetch_s >
 | 
			
		||||
                    pkey->listFetch_data + pkey->listFetch_data_len) {
 | 
			
		||||
                    libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                                  "Malformed publickey subsystem packet");
 | 
			
		||||
                    goto err_exit;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (status == LIBSSH2_PUBLICKEY_SUCCESS) {
 | 
			
		||||
                    LIBSSH2_FREE(session, pkey->listFetch_data);
 | 
			
		||||
                    pkey->listFetch_data = NULL;
 | 
			
		||||
                    *pkey_list = list;
 | 
			
		||||
                    *num_keys = keys;
 | 
			
		||||
                    pkey->listFetch_state = libssh2_NB_state_idle;
 | 
			
		||||
                    return 0;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                publickey_status_error(pkey, session, status);
 | 
			
		||||
            if (pkey->listFetch_s >
 | 
			
		||||
                pkey->listFetch_data + pkey->listFetch_data_len) {
 | 
			
		||||
                _libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                               "Malformed publickey subsystem packet");
 | 
			
		||||
                goto err_exit;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (status == LIBSSH2_PUBLICKEY_SUCCESS) {
 | 
			
		||||
                LIBSSH2_FREE(session, pkey->listFetch_data);
 | 
			
		||||
                pkey->listFetch_data = NULL;
 | 
			
		||||
                *pkey_list = list;
 | 
			
		||||
                *num_keys = keys;
 | 
			
		||||
                pkey->listFetch_state = libssh2_NB_state_idle;
 | 
			
		||||
                return 0;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            publickey_status_error(pkey, session, status);
 | 
			
		||||
            goto err_exit;
 | 
			
		||||
        }
 | 
			
		||||
        case LIBSSH2_PUBLICKEY_RESPONSE_PUBLICKEY:
 | 
			
		||||
            /* What we want */
 | 
			
		||||
            if (keys >= max_keys) {
 | 
			
		||||
@@ -836,9 +836,9 @@ libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY * pkey, unsigned long *num_keys,
 | 
			
		||||
                                    (max_keys +
 | 
			
		||||
                                     1) * sizeof(libssh2_publickey_list));
 | 
			
		||||
                if (!newlist) {
 | 
			
		||||
                    libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                  "Unable to allocate memory for "
 | 
			
		||||
                                  "publickey list");
 | 
			
		||||
                    _libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                   "Unable to allocate memory for "
 | 
			
		||||
                                   "publickey list");
 | 
			
		||||
                    goto err_exit;
 | 
			
		||||
                }
 | 
			
		||||
                list = newlist;
 | 
			
		||||
@@ -854,9 +854,9 @@ libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY * pkey, unsigned long *num_keys,
 | 
			
		||||
                        LIBSSH2_ALLOC(session,
 | 
			
		||||
                                      sizeof(libssh2_publickey_attribute));
 | 
			
		||||
                    if (!list[keys].attrs) {
 | 
			
		||||
                        libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                      "Unable to allocate memory for "
 | 
			
		||||
                                      "publickey attributes");
 | 
			
		||||
                        _libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                       "Unable to allocate memory for "
 | 
			
		||||
                                       "publickey attributes");
 | 
			
		||||
                        goto err_exit;
 | 
			
		||||
                    }
 | 
			
		||||
                    list[keys].attrs[0].name = "comment";
 | 
			
		||||
@@ -896,9 +896,9 @@ libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY * pkey, unsigned long *num_keys,
 | 
			
		||||
                                      list[keys].num_attrs *
 | 
			
		||||
                                      sizeof(libssh2_publickey_attribute));
 | 
			
		||||
                    if (!list[keys].attrs) {
 | 
			
		||||
                        libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                      "Unable to allocate memory for "
 | 
			
		||||
                                      "publickey attributes");
 | 
			
		||||
                        _libssh2_error(session, LIBSSH2_ERROR_ALLOC,
 | 
			
		||||
                                       "Unable to allocate memory for "
 | 
			
		||||
                                       "publickey attributes");
 | 
			
		||||
                        goto err_exit;
 | 
			
		||||
                    }
 | 
			
		||||
                    for(i = 0; i < list[keys].num_attrs; i++) {
 | 
			
		||||
@@ -926,8 +926,8 @@ libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY * pkey, unsigned long *num_keys,
 | 
			
		||||
            break;
 | 
			
		||||
        default:
 | 
			
		||||
            /* Unknown/Unexpected */
 | 
			
		||||
            libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                          "Unexpected publickey subsystem response, ignoring");
 | 
			
		||||
            _libssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL,
 | 
			
		||||
                           "Unexpected publickey subsystem response, ignoring");
 | 
			
		||||
            LIBSSH2_FREE(session, pkey->listFetch_data);
 | 
			
		||||
            pkey->listFetch_data = NULL;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user