Klockwerk RH.Leak в C ++ на sock_ctrl и sock_data - PullRequest
0 голосов
/ 12 апреля 2019

После того, как я пишу программу Qt, я запускаю отчет klocwork для моей программы Qt.И я обнаружил 1 ошибку, которую я не знаю, как ее решить.

Внутри моего mainprocess.cpp я вызвал функцию в getXML.cpp

mainprocess.cpp code:

getFile n;
n.getXML();

getXML.cpp code:

    void getFile::getXML()
{
    QString settingsFile = QApplication::applicationDirPath() + "/ini";
    QSettings setting(settingsFile, QSettings::IniFormat);
    setting.beginGroup("logSetting");
    QString ftpPass = setting.value("ftpPass").toString();

    QByteArray ftpUser;
    ftpUser = globalFtp.toUtf8();
    const char *ftpUser1 = ftpUser.constData();

    QByteArray ftpIP;
    ftpIP = globalFtpIP.toUtf8();
    const char *ftpIP1 = ftpIP.constData();

    QByteArray ftp;
    ftp = ftpPass.toUtf8();
    const char *ftpPass1 = ftp.constData();
    ftp_t myftp(ftpIP1, 21);
    myftp.login(ftpUser1, ftpPass1);

    QString utcDate = "Stats_" + QDateTime::currentDateTimeUtc().toString("yyyyMMdd_hh") + "00_UTC";
    QByteArray ba;
    ba = utcDate.toUtf8();
    const char *utcDate1 = ba.constData();
    //char filepath[100] =
    char filename[100] = "site.xml";
    myftp.get_file(filename, utcDate1);
    myftp.logout();
}

Внутри моих функций myftp.login и myftp.logout у меня есть создания sock_ctrl и sock_data, но я сразу же закрываю sock_ctrl и sock_data в концеfunction.

myftp.login function:

void ftp_t::login(const char *user_name, const char *pass)
{
  char buf_request[255];
  std::string str_server_ip;
  std::string str_rsp;
  create_socket(sock_ctrl, m_server_ip.c_str(), m_server_port);
  get_response(sock_ctrl, str_rsp);
  sprintf(buf_request, "USER %s\r\n", user_name);
  send_request(sock_ctrl, buf_request);
  get_response(sock_ctrl, str_rsp);
  sprintf(buf_request, "PASS %s\r\n", pass);
  send_request(sock_ctrl, buf_request);
  get_response(sock_ctrl, str_rsp);
}

myftp.logout code:

void ftp_t::logout()
{
  char buf_request[255];
  std::string str_rsp;
  sprintf(buf_request, "QUIT\r\n");
  send_request(sock_ctrl, buf_request);
  get_response(sock_ctrl, str_rsp);
  close_socket(sock_ctrl);
}

Хотя я закрываю сокет, но все равно получаю ошибкуthis.

enter image description here

Строка 39, 72 ссылается на функцию myftp.login, строки 48 и 80 в отчете Klocwork ссылаются на функцию myftp.logout,Если какая-либо дополнительная информация необходима.Пожалуйста, дайте мне знать.Заранее спасибо

...