Ejemplo n.º 1
0
int
ftp_getline(struct vsf_session* p_sess, struct mystr* p_str, char* p_buf)
{
    if (p_sess->control_use_ssl && p_sess->ssl_slave_active)
    {
        int ret;
        priv_sock_send_cmd(p_sess->ssl_consumer_fd, PRIV_SOCK_GET_USER_CMD);
        ret = priv_sock_get_int(p_sess->ssl_consumer_fd);
        if (ret >= 0)
        {
            priv_sock_get_str(p_sess->ssl_consumer_fd, p_str);
        }
        return ret;
    }
    else
    {
        str_netfd_read_t p_peek = plain_peek_adapter;
        str_netfd_read_t p_read = plain_read_adapter;
        if (p_sess->control_use_ssl)
        {
            p_peek = ssl_peek_adapter;
            p_read = ssl_read_adapter;
        }
        return str_netfd_alloc(p_sess,
                               p_str,
                               '\n',
                               p_buf,
                               VSFTP_MAX_COMMAND_LINE,
                               p_peek,
                               p_read);
    }
}
Ejemplo n.º 2
0
void
ftp_getline(const struct vsf_session* p_sess, struct mystr* p_str, char* p_buf)
{
  if (p_sess->control_use_ssl && p_sess->ssl_slave_active)
  {
    priv_sock_send_cmd(p_sess->ssl_consumer_fd, PRIV_SOCK_GET_USER_CMD);
    priv_sock_get_str(p_sess->ssl_consumer_fd, p_str);
  }
  else if (p_sess->control_use_ssl)
  {
    ssl_getline(p_sess, p_str, '\n', p_buf, VSFTP_MAX_COMMAND_LINE);
  }
  else
  {
    str_netfd_alloc(
      p_str, VSFTP_COMMAND_FD, '\n', p_buf, VSFTP_MAX_COMMAND_LINE);
  }
}
Ejemplo n.º 3
0
static void
ftp_getline(struct mystr* p_str)
{
  static char* s_p_readline_buf;
  if (s_p_readline_buf == 0)
  {
    vsf_secbuf_alloc(&s_p_readline_buf, VSFTP_MAX_COMMAND_LINE);
  }
  str_netfd_alloc(p_str, VSFTP_COMMAND_FD, '\n', s_p_readline_buf,
                  VSFTP_MAX_COMMAND_LINE);
  /* As mandated by the FTP specifications.. */
  str_replace_char(p_str, '\0', '\n');
  /* If the last character is a \r, strip it */
  {
    unsigned int len = str_getlen(p_str);
    if (len > 0 && str_get_char_at(p_str, len - 1) == '\r')
    {
      str_trunc(p_str, len - 1);
    }
  }
}