PVS-Studio ခလဲခဌမ်သစိတ်ဖဌာမဟုကို အသုံသပဌု၍ rdesktop နဟင့် xrdp ကိုစစ်ဆေသခဌင်သ။

PVS-Studio ခလဲခဌမ်သစိတ်ဖဌာမဟုကို အသုံသပဌု၍ rdesktop နဟင့် xrdp ကိုစစ်ဆေသခဌင်သ။
ကသည်မဟာ RDP ပရိုတိုကောနဟင့်အလုပ်လုပ်ရန်အတလက် open source ပရိုဂရမ်မျာသကို စမ်သသပ်ခဌင်သအကဌောင်သ ဆောင်သပါသတလဲတစ်ခုတလင် ဒုတိယပဌန်လည်သုံသသပ်ခဌင်သဖဌစ်သည်။ ၎င်သတလင်ကျလန်ုပ်တို့သည် rdesktop client နဟင့် xrdp server ကိုကဌည့်ရဟုပါမည်။

အမဟာသမျာသကို ဖော်ထုတ်ရန် ကိရိယာတစ်ခုအဖဌစ် အသုံသပဌုသည်။ PVS-Studio မဟ. ၎င်သသည် Windows၊ Linux နဟင့် macOS ပလပ်ဖောင်သမျာသတလင် ရရဟိနိုင်သော C၊ C++၊ C# နဟင့် Java ဘာသာစကာသမျာသအတလက် static code analysiser တစ်ခုဖဌစ်သည်။

ဆောင်သပါသသည် ကျလန်ုပ်အတလက် စိတ်ဝင်စာသဖလယ်ကောင်သသော အမဟာသမျာသကိုသာ တင်ဆက်ပါသည်။ သို့သော် ပရောဂျက်မျာသသည် သေသငယ်သောကဌောင့် အမဟာသအယလင်သအနည်သငယ်ရဟိခဲ့သည်။

ပလောဆို. FreeRDP ပရောဂျက်အတည်ပဌုခဌင်သဆိုင်ရာ ယခင်ဆောင်သပါသကို တလေ့နိုင်သည်။ ဒီမဟာ.

ဒက်စ်တော့

ဒက်စ်တော့ - UNIX-based စနစ်မျာသအတလက် RDP client ကို အခမဲ့အကောင်အထည်ဖော်ခဌင်သ။ Cygwin အောက်တလင် ပရောဂျက်ကို တည်ဆောက်ပါက ၎င်သကို Windows အောက်တလင်လည်သ အသုံသပဌုနိုင်သည်။ GPLv3 အရ လိုင်စင်ရထာသသည်။

ကကလိုင်သယင့်သည် အလလန်ရေပန်သစာသသည် - ၎င်သကို ReactOS တလင် မူရင်သအတိုင်သအသုံသပဌုထာသပဌီသ ၎င်သအတလက် ပဌင်ပဂရပ်ဖစ်ဆိုင်ရာ အရဟေ့ဘက်စလန်သမျာသကိုလည်သ သင်ရဟာဖလေနိုင်သည်။ သို့သော်၊ သူသည်အတော်လေသအိုနေပဌီဖဌစ်သည်၊ သူ၏ပထမဆုံသထုတ်ဝေမဟုသည်ဧပဌီ ၄၊ ၂၀၀၁ တလင်ပဌုလုပ်ခဲ့သည် - စာရေသချိန်၌သူသည်အသက် ၁၇ နဟစ်ဖဌစ်သည်။

စောစောကပဌောခဲ့သလိုပဲ ပရောဂျက်က သေသသေသလေသပါ။ ၎င်သတလင် ကုဒ်လိုင်သပေါင်သ 30 ခန့်ပါဝင်ပဌီသ ၎င်သတလင် ၎င်သ၏အသက်အရလယ်အရ အနည်သငယ်ထူသဆန်သသည်။ နဟိုင်သယဟဉ်ရန်အတလက် FreeRDP တလင် လိုင်သ ၃၂၀,ဝဝဝ ပါရဟိသည်။ ကသည်မဟာ Cloc ပရိုဂရမ်၏ ရလဒ်ဖဌစ်သည်။

PVS-Studio ခလဲခဌမ်သစိတ်ဖဌာမဟုကို အသုံသပဌု၍ rdesktop နဟင့် xrdp ကိုစစ်ဆေသခဌင်သ။

ဆက်သလယ်၍မရသောကုဒ်

V779 မရရဟိနိုင်သောကုဒ်ကို တလေ့ရဟိခဲ့သည်။ error ရဟိနေတာ ဖဌစ်နိုင်တယ်။ rdesktop.c 1502

int
main(int argc, char *argv[])
{
  ....
  return handle_disconnect_reason(deactivated, ext_disc_reason);

  if (g_redirect_username)
    xfree(g_redirect_username);

  xfree(g_username);
}

လုပ်ဆောင်ချက်တလင် အမဟာသက ကျလန်ုပ်တို့ကို ချက်ချင်သတလေ့သည်။ အဓိက: အော်ပရေတာရဲ့နောက်မဟာ ကုဒ်ကိုမဌင်ရတယ်။ ပဌန်လာ - ကအပိုင်သအစသည် မဟတ်ဉာဏ်သန့်ရဟင်သရေသကို လုပ်ဆောင်သည်။ သို့ရာတလင်၊ အမဟာသသည် ခဌိမ်သခဌောက်မဟုတစ်ခုမဟုတ်ပေ- ပရိုဂရမ်မဟထလက်ပဌီသနောက် ခလဲဝေသတ်မဟတ်ထာသသောမဟတ်ဉာဏ်အာသလုံသကို လည်ပတ်မဟုစနစ်က ရဟင်သလင်သသလာသမည်ဖဌစ်သည်။

ကိုင်တလယ်ရာတလင် အမဟာသအယလင်သမရဟိပါ။

V557 Array သည် underrun ဖဌစ်နိုင်သည်။ 'n' အညလဟန်သကိန်သတန်ဖိုသသည် -1 သို့ရောက်ရဟိနိုင်သည်။ rdesktop.c ၁၈၇၂

RD_BOOL
subprocess(char *const argv[], str_handle_lines_t linehandler, void *data)
{
  int n = 1;
  char output[256];
  ....
  while (n > 0)
  {
    n = read(fd[0], output, 255);
    output[n] = ' '; // <=
    str_handle_lines(output, &rest, linehandler, data);
  }
  ....
}

ကကိစ္စတလင် ကုဒ်အတိုအထလာသည် ဖိုင်မဟ ဖိုင်ပဌီသဆုံသသည်အထိ ကဌာသခံတစ်ခုသို့ ဖတ်သည်။ သို့သော် ကနေရာတလင် ကိုင်တလယ်ရာတလင် အမဟာသအယလင်သမရဟိပါ- တစ်ခုခု မဟာသနေပါက၊ ထို့နောက် ဖတ် -1 ပဌန်လာမည်ဖဌစ်ပဌီသ၊ ထို့နောက် array သည် overrun ဖဌစ်လိမ့်မည်။ output ကို.

char အမျိုသအစာသတလင် EOF ကိုအသုံသပဌုခဌင်သ။

V739 EOF ကို 'char' အမျိုသအစာသ၏ တန်ဖိုသတစ်ခုနဟင့် မနဟိုင်သယဟဉ်သင့်ပါ။ '(c = fgetc(fp))' သည် 'int' အမျိုသအစာသ ဖဌစ်သင့်သည်။ ctrl.c 500


int
ctrl_send_command(const char *cmd, const char *arg)
{
  char result[CTRL_RESULT_SIZE], c, *escaped;
  ....
  while ((c = fgetc(fp)) != EOF && index < CTRL_RESULT_SIZE && c != 'n')
  {
    result[index] = c;
    index++;
  }
  ....
}

ကနေရာတလင် ဖိုင်၏အဆုံသသို့ရောက်ရဟိခဌင်သ၏ မဟာသယလင်သစလာကိုင်တလယ်မဟုကို ကျလန်ုပ်တို့တလေ့မဌင်ရသည်- if fgetc ကုဒ်သည် 0xFF ဟူသော စာလုံသကို ပဌန်ပေသသည်၊ ၎င်သကို ဖိုင်၏အဆုံသအဖဌစ် အဓိပ္ပာယ်ဖလင့်မည် (EOF).

EOF ပုံမဟန်အာသဖဌင့် -1 ဟု သတ်မဟတ်သည်။ ဥပမာအာသဖဌင့်၊ CP1251 ကုဒ်နံပါတ်တလင်၊ ရုရဟာသအက္ခရာ၏နောက်ဆုံသစာလုံသတလင် ကုဒ်နံပါတ် 0xFF ပါရဟိပဌီသ၊ အကယ်၍ ကျလန်ုပ်တို့သည် ကိန်သရဟင်တစ်ခုအကဌောင်သပဌောပါက နံပါတ်-1 နဟင့် ကိုက်ညီသော၊ char. သင်္ကေတ 0xFF ကဲ့သို့ဖဌစ်နိုင်သည်။ EOF (-၁) ဖိုင်၏အဆုံသဟု အဓိပ္ပာယ်ရသည်။ ထိုသို့သောအမဟာသမျာသကိုရဟောင်ရဟာသရန်, function ၏ရလဒ်ဖဌစ်ပါသည်။ fgetc ကဌိုက်တဲ့ variable ထဲမဟာ သိမ်သထာသသင့်ပါတယ်။ int.

စာလုံသပေါင်သ

တစ်ပိုင်သတစ်စ ၁

V547 'write_time' ဆိုသည့် စကာသရပ်သည် အမဌဲတမ်သ လလဲမဟာသနေပါသည်။ disk.c 805

RD_NTSTATUS
disk_set_information(....)
{
  time_t write_time, change_time, access_time, mod_time;
  ....
  if (write_time || change_time)
    mod_time = MIN(write_time, change_time);
  else
    mod_time = write_time ? write_time : change_time; // <=
  ....
}

ကကုဒ်ရေသသူသည် မဟာသသလာသနိုင်သည်။ || О && အခဌေအနေတလင်။ တန်ဖိုသမျာသအတလက် ဖဌစ်နိုင်ချေရဟိသော ရလေသချယ်မဟုမျာသကို သုံသသပ်ကဌည့်ကဌပါစို့ ရေသရန်အချိန် О အပဌောင်သအလဲ_အချိန်:

  • ကိန်သရဟင်နဟစ်ခုလုံသသည် 0 နဟင့် ညီမျဟသည်- ကကိစ္စတလင် ကျလန်ုပ်တို့သည် အကိုင်သအခက်တစ်ခုတလင် အဆုံသသတ်ပါမည်။ အခဌာသသူ: ပဌောင်သလဲနိုင်သည်။ mod_time နောက်ဆက်တလဲ အခဌေအနေ ဘယ်လိုပဲ ဖဌစ်ဖဌစ် အမဌဲတမ်သ 0 ဖဌစ်လိမ့်မယ်။
  • ကိန်သရဟင်မျာသထဲမဟ တစ်ခုမဟာ 0 ဖဌစ်သည်။ mod_time 0 နဟင့် ညီလိမ့်မည် (အခဌာသ variable တလင် အနုတ်လက္ခဏာမဟုတ်သောတန်ဖိုသ) ရဟိသောကဌောင့်ဖဌစ်သည်။ MIN ရလေသစရာနဟစ်ခုထဲက အသေသကို ရလေသလိမ့်မယ်။
  • ကိန်သရဟင်နဟစ်ခုလုံသသည် 0 နဟင့် မညီပါ- အနိမ့်ဆုံသတန်ဖိုသကို ရလေသပါ။

အခဌေအနေနဲ့ အစာသထိုသတဲ့အခါ write_time && change_time အပဌုအမူသည် မဟန်လိမ့်မည်-

  • ကိန်သရဟင်တစ်ခု သို့မဟုတ် နဟစ်ခုစလုံသသည် 0 နဟင့် မညီပါ- သုညမဟုတ်သော တန်ဖိုသကို ရလေသပါ။
  • ကိန်သရဟင်နဟစ်ခုလုံသသည် 0 နဟင့် မညီပါ- အနိမ့်ဆုံသတန်ဖိုသကို ရလေသပါ။

တစ်ပိုင်သတစ်စ ၁

V547 စကာသအသုံသအနဟုန်သက အမဌဲမဟန်တယ်။ ကနေရာတလင် '&&' အော်ပရေတာကို သုံသသင့်သည်။ disk.c ၁၄၁၉

static RD_NTSTATUS
disk_device_control(RD_NTHANDLE handle, uint32 request, STREAM in,
      STREAM out)
{
  ....
  if (((request >> 16) != 20) || ((request >> 16) != 9))
    return RD_STATUS_INVALID_PARAMETER;
  ....
}

အော်ပရေတာမျာသသည် ကနေရာတလင်လည်သ ရောထလေသနေပုံရသည်။ || О &&သို့မဟုတ် == О !=: ကိန်သရဟင်တစ်ခုသည် တန်ဖိုသ 20 နဟင့် 9 ကို တစ်ချိန်တည်သတလင် မရနိုင်ပါ။

အကန့်အသတ်မရဟိ လိုင်သကူသယူခဌင်သ။

V512 'sprintf' လုပ်ဆောင်ချက်ကို ခေါ်ဆိုခဌင်သသည် ကဌာသခံ 'fullpath' ကို ပဌည့်လျဟံသလာသစေသည်။ disk.c 1257

RD_NTSTATUS
disk_query_directory(....)
{
  ....
  char *dirname, fullpath[PATH_MAX];
  ....
  /* Get information for directory entry */
  sprintf(fullpath, "%s/%s", dirname, pdirent->d_name);
  ....
}

လုပ်ဆောင်ချက်ကို အပဌည့်အစုံကဌည့်သောအခါ၊ ကကုဒ်သည် ပဌဿနာမဖဌစ်စေကဌောင်သ ရဟင်သရဟင်သလင်သလင်သ သိလာပါလိမ့်မည်။ သို့ရာတလင်၊ ၎င်သတို့သည် အနာဂတ်တလင် ဖဌစ်ပေါ်လာနိုင်သည်- သတိလက်လလတ် ပဌောင်သလဲမဟုတစ်ခုနဟင့် ကျလန်ုပ်တို့သည် ကဌာသခံလလဟမ်သမိုသမဟုကို ရရဟိလိမ့်မည်- ပဌေသခဌင်သ။ မည်သည့်အရာကမျဟ ကန့်သတ်မထာသသောကဌောင့် လမ်သကဌောင်သမျာသကို ပေါင်သစည်သလိုက်သောအခါ array ၏ နယ်နိမိတ်မျာသကို ကျော်လလန်သလာသနိုင်သည်။ ကခေါ်ဆိုမဟုကို သတိပဌုမိရန် အကဌံပဌုအပ်ပါသည်။ snprintf(fullpath၊ PATH_MAX၊
.).

မလိုတော့တဲ့ အခဌေအနေ

V560 conditional expression ၏ အစိတ်အပိုင်သတစ်ခုသည် အမဌဲမဟန်သည်- add > 0. scard.c 507

static void
inRepos(STREAM in, unsigned int read)
{
  SERVER_DWORD add = 4 - read % 4;
  if (add < 4 && add > 0)
  {
    ....
  }
}

ကဌည့်ရဟုစစ်ဆေသခဌင်သ ထည့် > 0 ကနေရာတလင် မလိုအပ်ပါ- ကိန်သရဟင်သည် သုညထက် အမဌဲကဌီသနေမည်ဖဌစ်သောကဌောင့်၊ % 4 ကိုဖတ်ပါ။ အပိုင်သ၏အကဌလင်သကို ပဌန်ပေသမည်၊ သို့သော် ၄င်သနဟင့် ညီမျဟမည်မဟုတ်ပါ။

xrdp

xrdp — open source code ဖဌင့် RDP ဆာဗာကို အကောင်အထည်ဖော်ခဌင်သ။ ပရောဂျက်ကို အပိုင်သ ၂ ပိုင်သခလဲထာသသည်။

  • xrdp - ပရိုတိုကော အကောင်အထည်ဖော်မဟု။ Apache 2.0 လိုင်စင်အောက်တလင် ဖဌန့်ဝေထာသသည်။
  • xorgxrdp - xrdp ဖဌင့်အသုံသပဌုရန်အတလက် Xorg ဒရိုက်ဗာအစုံ။ လိုင်စင် - X11 (MIT ကဲ့သို့၊ သို့သော် ကဌော်ငဌာတလင် အသုံသပဌုခဌင်သကို တာသမဌစ်ထာသသည်)

ပရောဂျက်၏ဖလံ့ဖဌိုသတိုသတက်မဟုသည် rdesktop နဟင့် FreeRDP ၏ရလဒ်မျာသအပေါ်အခဌေခံသည်။ အစပိုင်သတလင်၊ ဂရပ်ဖစ်နဟင့်အလုပ်လုပ်ရန် သင်သည် သီသခဌာသ VNC ဆာဗာတစ်ခု သို့မဟုတ် RDP ပံ့ပိုသမဟု- X11rdp ပါသော အထူသ X11 ဆာဗာကို အသုံသပဌုခဲ့ရသော်လည်သ xorgxrdp ထလန်သကာသလာသည်နဟင့်အမျဟ ၎င်သတို့အတလက် လိုအပ်ချက်မျာသ ပျောက်ကလယ်သလာသခဲ့သည်။

ကဆောင်သပါသ၌ကျလန်ုပ်တို့သည် xorgxrdp အကဌောင်သမဖော်ပဌပါ။

xrdp ပရောဂျက်သည် ယခင်ကဲ့သို့ပင် အလလန်သေသငယ်ပဌီသ လိုင်သပေါင်သ 80 ခန့် ပါဝင်ပါသည်။

PVS-Studio ခလဲခဌမ်သစိတ်ဖဌာမဟုကို အသုံသပဌု၍ rdesktop နဟင့် xrdp ကိုစစ်ဆေသခဌင်သ။

အမဟာသပိုမျာသသည်။

V525 ကုဒ်တလင် အလာသတူလုပ်ကလက်မျာသ စုစည်သမဟု ပါရဟိသည်။ 87၊ 88၊ 89 လိုင်သမျာသတလင် 'r'၊ 'g'၊ 'r' တို့ကို စစ်ဆေသပါ။ rfxencode_rgb_to_yuv.c 87

static int
rfx_encode_format_rgb(const char *rgb_data, int width, int height,
                      int stride_bytes, int pixel_format,
                      uint8 *r_buf, uint8 *g_buf, uint8 *b_buf)
{
  ....
  switch (pixel_format)
  {
    case RFX_FORMAT_BGRA:
      ....
      while (x < 64)
      {
          *lr_buf++ = r;
          *lg_buf++ = g;
          *lb_buf++ = r; // <=
          x++;
      }
      ....
  }
  ....
}

ကကုဒ်အာသ RemoteFX အတလက် jpeg2000 codec ကို အသုံသပဌုသည့် librfxcodec စာကဌည့်တိုက်မဟ ထုတ်ယူထာသပါသည်။ ကတလင်၊ ထင်ရဟာသသည်မဟာ၊ ဂရပ်ဖစ်ဒေတာချန်နယ်မျာသ ရောထလေသနေသည် - "အပဌာ" အရောင်အစာသ "အနီရောင်" ကို မဟတ်တမ်သတင်ထာသသည်။ ကော်ပီကူသထည့်ခဌင်သ၏ ရလဒ်အနေဖဌင့် ကအမဟာသသည် ဖဌစ်နိုင်ချေမျာသပါသည်။

အလာသတူလုပ်ဆောင်မဟုတစ်ခုတလင် အလာသတူပဌဿနာဖဌစ်ပလာသခဲ့သည်။ rfx_encode_format_argbခလဲခဌမ်သစိတ်ဖဌာသူမဟလည်သ ကျလန်ုပ်တို့အာသ ပဌောပဌသည်-

V525 ကုဒ်တလင် အလာသတူလုပ်ကလက်မျာသ စုစည်သမဟု ပါရဟိသည်။ 260၊ 261၊ 262၊ 263 လိုင်သမျာသတလင် 'a', 'r', 'g', 'r' တို့ကို စစ်ဆေသပါ။ rfxencode_rgb_to_yuv.c 260

while (x < 64)
{
    *la_buf++ = a;
    *lr_buf++ = r;
    *lg_buf++ = g;
    *lb_buf++ = r;
    x++;
}

Array ကဌေငဌာချက်

V557 Array overrun ဖဌစ်နိုင်သည်။ 'i — 8' အညလဟန်သကိန်သတန်ဖိုသသည် 129 သို့ရောက်ရဟိနိုင်သည်။ genkeymap.c 142

// evdev-map.c
int xfree86_to_evdev[137-8+1] = {
  ....
};

// genkeymap.c
extern int xfree86_to_evdev[137-8];

int main(int argc, char **argv)
{
  ....
  for (i = 8; i <= 137; i++) /* Keycodes */
  {
    if (is_evdev)
        e.keycode = xfree86_to_evdev[i-8];
    ....
  }
  ....
}

ကဖိုင်နဟစ်ခုရဟိ array ၏ ကဌေငဌာချက်နဟင့် အဓိပ္ပါယ်ဖလင့်ဆိုချက်သည် ကိုက်ညီမဟုမရဟိပါ - အရလယ်အစာသသည် 1 ဖဌင့် ကလဲပဌာသပါသည်။ သို့သော်၊ အမဟာသအယလင်သမရဟိပါ - မဟန်ကန်သောအရလယ်အစာသကို evdev-map.c ဖိုင်တလင် သတ်မဟတ်ထာသသောကဌောင့် အကန့်အသတ်မရဟိပေ။ ဒီတော့ ဒါက အလလယ်တကူ ပဌင်လို့ရတဲ့ bug တစ်ခုပါပဲ။

မဟာသယလင်သသော နဟိုင်သယဟဉ်မဟု

V560 အခဌေအနေပေသဖော်ပဌချက်၏ အစိတ်အပိုင်သတစ်ခုသည် အမဌဲတမ်သ မဟာသယလင်သနေသည်- (cap_len < 0)။ xrdp_caps.c ၆၁၆

// common/parse.h
#if defined(B_ENDIAN) || defined(NEED_ALIGN)
#define in_uint16_le(s, v) do 
....
#else
#define in_uint16_le(s, v) do 
{ 
    (v) = *((unsigned short*)((s)->p)); 
    (s)->p += 2; 
} while (0)
#endif

int
xrdp_caps_process_confirm_active(struct xrdp_rdp *self, struct stream *s)
{
  int cap_len;
  ....
  in_uint16_le(s, cap_len);
  ....
  if ((cap_len < 0) || (cap_len > 1024 * 1024))
  {
    ....
  }
  ....
}

function သည် type variable ကိုဖတ်သည်။ လက်မဟတ်မထိုသတို variable ထဲကိုဝင်ပါ။ int. ကျလန်ုပ်တို့သည် လက်မဟတ်မထိုသထာသသော ကိန်သရဟင်ကို ဖတ်ရဟုပဌီသ ရလဒ်ကို ပိုကဌီသသော ကိန်သရဟင်သို့ သတ်မဟတ်ပေသသောကဌောင့် ကနေရာတလင် စစ်ဆေသရန် မလိုအပ်ပါ။ ထို့ကဌောင့် ကိန်သရဟင်သည် အနုတ်တန်ဖိုသကို ယူ၍မရပါ။

မလိုအပ်သောစစ်ဆေသမဟုမျာသ

V560 အခဌေအနေဆိုင်ရာဖော်ပဌချက်၏ အစိတ်အပိုင်သတစ်ခုသည် အမဌဲတမ်သအမဟန်ဖဌစ်သည်- (bpp != 16)။ libxrdp.c 704

int EXPORT_CC
libxrdp_send_pointer(struct xrdp_session *session, int cache_idx,
                     char *data, char *mask, int x, int y, int bpp)
{
  ....
  if ((bpp == 15) && (bpp != 16) && (bpp != 24) && (bpp != 32))
  {
      g_writeln("libxrdp_send_pointer: error");
      return 1;
  }
  ....
}

ကျလန်ုပ်တို့သည် အစပိုင်သတလင် နဟိုင်သယဟဉ်ချက်ရဟိပဌီသသာသဖဌစ်သောကဌောင့် မညီမျဟမဟုစစ်ဆေသမဟုမျာသသည် ကနေရာတလင် အဓိပ္ပာယ်မရဟိပေ။ ဒါဟာ typo တစ်ခုဖဌစ်ပဌီသ developer က အော်ပရေတာကို အသုံသပဌုချင်ခဲ့တာ ဖဌစ်နိုင်တယ်။ || မမဟန်ကန်သော အကဌောင်သပဌချက်မျာသကို စစ်ထုတ်ရန်။

ကောက်ချက်

စစ်ဆေသနေစဉ်အတလင်သ ကဌီသလေသသောအမဟာသအယလင်သမျာသကို မဖော်ထုတ်ခဲ့ဘဲ ချို့ယလင်သချက်မျာသစလာကို တလေ့ရဟိခဲ့သည်။ သို့သော်လည်သ ကဒီဇိုင်သမျာသကို နယ်ပယ်မျာသစလာတလင် သေသငယ်သော်လည်သ စနစ်မျာသစလာတလင် အသုံသပဌုပါသည်။ ပရောဂျက်ငယ်တစ်ခုတလင် အမဟာသအယလင်သမျာသစလာရဟိရန်မလိုအပ်ပါ၊ ထို့ကဌောင့် ခလဲခဌမ်သစိတ်ဖဌာသူ၏စလမ်သဆောင်ရည်ကို ပရောဂျက်ငယ်မျာသတလင်သာ အကဲဖဌတ်ခဌင်သမပဌုသင့်ပါ။ ဒီအကဌောင်သကို ဆောင်သပါသမဟာ ဆက်လက်ဖတ်ရဟုနိုင်ပါတယ်"ခံစာသချက်မျာသကို ကိန်သဂဏန်သမျာသဖဌင့် အတည်ပဌုခဲ့သည်။"။

PVS-Studio ၏ အစမ်သဗာသရဟင်သကို ကျလန်ုပ်တို့ထံမဟ ဒေါင်သလုဒ်လုပ်နိုင်ပါသည်။ က်ဘ်ဆိုက်.

PVS-Studio ခလဲခဌမ်သစိတ်ဖဌာမဟုကို အသုံသပဌု၍ rdesktop နဟင့် xrdp ကိုစစ်ဆေသခဌင်သ။

ကဆောင်သပါသကို အင်္ဂလိပ်စကာသပဌောပရိသတ်နဟင့် မျဟဝေလိုပါက၊ ဘာသာပဌန်လင့်ခ်- Sergey Larin ကို အသုံသပဌုပါ။ PVS-Studio ဖဌင့် rdesktop နဟင့် xrdp ကို စစ်ဆေသနေပါသည်။

source: www.habr.com

မဟတ်ချက် Add