LINUX.ORG.RU

[segfault][mcedit] Отголоски изменений vsftpd

 ,


0

2

Как воспроизвести баг на который я напоролся.

useradd -m mctest
chmod u-w /home/mctest
su mctest
mcedit # табличка не могу создать директорию и segfault.

Изрядно повозившись с исходниками и gdb, нашёл то место из-за которого он и происходит

//  https://github.com/MidnightCommander/mc/blob/master/lib/util.c#L1136

char *
concat_dir_and_file (const char *dir, const char *file)
{
    int i = strlen (dir);

    if (dir[i - 1] == PATH_SEP)
        return g_strconcat (dir, file, (char *) NULL);
    else
        return g_strconcat (dir, PATH_SEP_STR, file, (char *) NULL);
}

Дело, наверное в том что в вызывающей данную функцию edit_file() https://github.com/MidnightCommander/mc/blob/master/src/editor/editwidget.c#L360 плохое условие на проверку ошибки существования и возможности создания директории. В результате в concat_dir_and_file попадает NULL и «mcedit».

Такие дела.

cast Slavaz

★★★

Ответ на: комментарий от visual

Там Слава VFS переделывает, как закончит, глянем

angel_il ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.