View Issue Details

IDProjectCategoryView StatusLast Update
0001862Far Manager_Commonpublic2011-09-01 20:50
ReporterAndrey_KarpovAssigned ToDrKnS 
PrioritynormalSeverityminorReproducibilityunable to reproduce
Status closedResolutionfixed 
Platformx64OSWindowsOS Version7
Product Version3.0 
Target VersionFixed in Version3.0 
Summary0001862: Статический анализ кода
DescriptionЯ запустил анализатор PVS-Studio для проверки исходных кодов FAR 3. Ничего особенно интересного я не нашел. Но есть пара мест, которая видимо ошибочна. Приведу их ниже. Если хочется более внимательно изучить отчет PVS-Studio, то могу предоставить ключ ( http://www.viva64.com/ru/b/0092/ ).

----------------------------------------------------
V512 A call of the 'memset' function will lead to underflow of the buffer 'PInfo'. far filelist.cpp 672

__int64 FileList::VMProcess(int OpCode,void *vParam,__int64 iParam)
{
  ...
  PluginInfo *PInfo=(PluginInfo *)vParam;
  memset(PInfo,0,sizeof(PInfo));
  PInfo->StructSize=sizeof(PInfo);
  ...
}

Должно быть:
memset(PInfo,0,sizeof(PluginInfo));
----------------------------------------------------
V584 The 'FADC_ALLDISKS' value is present on both sides of the '==' operator. The expression is incorrect or it can be simplified. far findfile.cpp 3317

enum FINDASKDLGCOMBO
{
  FADC_ALLDISKS,
  ...
};

FindFiles::FindFiles()
{
  ...
  if (FADC_ALLDISKS+SearchMode==FADC_ALLDISKS ||
      FADC_ALLDISKS+SearchMode==FADC_ALLBUTNET)
  ...
}

Странное: FADC_ALLDISKS+SearchMode==FADC_ALLDISKS.
Можно упросить до: SearchMode == 0.
----------------------------------------------------
V576 Incorrect format. Consider checking the third actual argument of the 'fwprintf' function. The argument is expected to be not greater than 32-bit. far syslog.cpp 1943

struct PanelViewSettings
{
  unsigned __int64 ColumnType[PANEL_COLUMNCOUNT];
  ...
};

void PanelViewSettings_Dump(...)
{
  ...
  fwprintf(fp,L"%d, ",ViewSettings.ColumnType[I]);
  ...
}

Работает, так как везет (у функции только один аргумент). Но лучше поправить.

И здесь:
V576 Incorrect format. Consider checking the third actual argument of the 'fwprintf' function. The argument is expected to be not greater than 32-bit. far syslog.cpp 1945
V576 Incorrect format. Consider checking the third actual argument of the 'fwprintf' function. The argument is expected to be not greater than 32-bit. far syslog.cpp 1956
V576 Incorrect format. Consider checking the third actual argument of the 'fwprintf' function. The argument is expected to be not greater than 32-bit. far syslog.cpp 1958
----------------------------------------------------
V579 The memset function receives the pointer and its size as arguments. It is possibly a mistake. Inspect the third argument. far treelist.hpp 66

struct TreeItem
{
  int *Last;
  size_t LastCount;
  ...
  void Clear()
  {
    strName.Clear();
    memset(Last,0,sizeof(Last));
    Depth=0;
  }
};

Должно быть:
memset(Last,0,sizeof(LastCount*sizeof(int)));
----------------------------------------------------
TagsNo tags attached.
Build2169

Activities

sonar

2011-08-25 12:44

reporter   bugnote:0007522

ключ стоит попросить, но в момент когда по ощущениям Far3 будет готов к public. а то ключ всего на месяц -))

DrKnS

2011-08-25 12:52

administrator   bugnote:0007523

build 2169.

Спасибо за анализ.
От ключа не откажемся, но, действительно, чуть позже :)

Andrey_Karpov

2011-08-25 14:08

reporter   bugnote:0007524

Можно и дольше. Тем более, что стоит попробовать Incremental Analysis, а не разовую проверку. Попробуйте, надеюсь, вам понравится. Подробнее на эту тему: http://habrahabr.ru/blogs/code_review/124611/

На сколько месяцев вы хотите ключ, и на какое количество людей?

DrKnS

2011-08-25 23:44

administrator   bugnote:0007535

На двоих, срок - на ваше усмотрение.

Andrey_Karpov

2011-08-26 09:31

reporter   bugnote:0007540

Напишите мне на karpov[@]viva64.com ваши имена, фамилии и e-mail.

DrKnS

2011-08-26 11:11

administrator   bugnote:0007541

Отправил.

Issue History

Date Modified Username Field Change
2011-08-25 12:21 Andrey_Karpov New Issue
2011-08-25 12:44 sonar Note Added: 0007522
2011-08-25 12:52 DrKnS Note Added: 0007523
2011-08-25 12:52 DrKnS Assigned To => DrKnS
2011-08-25 12:52 DrKnS Status new => feedback
2011-08-25 14:08 Andrey_Karpov Note Added: 0007524
2011-08-25 14:08 Andrey_Karpov Status feedback => assigned
2011-08-25 23:44 DrKnS Note Added: 0007535
2011-08-26 09:31 Andrey_Karpov Note Added: 0007540
2011-08-26 11:11 DrKnS Note Added: 0007541
2011-09-01 20:50 DrKnS Build => 2169
2011-09-01 20:50 DrKnS Status assigned => closed
2011-09-01 20:50 DrKnS Resolution open => fixed
2011-09-01 20:50 DrKnS Fixed in Version => 3.0