Отлаживал урезанный вариант ls, нашёл неслабую ошибку в библиотеке. Файл readdir.c должен оканчиваться так:
Раньше обнулялся байт по смещению len-1, в результате портилась цепочка свободной памяти.Код:strncpy(buf->d_name, (char *) direntry.d_name, len - 2);
buf->d_name[len - 2] = 0;
return buf;
Прикладываю также свои варианты ssh и ls. Шелл на пару Кб больше, чем у SfS, зато функциональность не пострадала. В ls закомментировал сортировку и вывод времени.

