nixp.ru v3.0

25 мая 2017,
четверг,
00:25:41 MSK

DevOps с компанией «Флант»
Longobard написал 4 июня 2004 года в 20:07 (357 просмотров) Ведет себя как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.

Почитал новость. Странно. Не работает дыра. mkdir при попытке создания диры длинной пишет filename is too long. сисколл mkdir() возвращает ошибку. Сегфолта нету ни в том ни в другом случае. Следовательно дыра — просто утка?

Longobard

Проверил что там с сисколлом. Вот код:

#include 
#include 
#include 
#include 
#include 
int main()
{
      using namespace std;
      string fucker;
      mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP;
      for ( int i = 0; i < 1000; i++ )
            fucker += "f";
      int rval = mkdir( fucker.c_str(), mode );
      if ( rval < 0 )
            switch ( errno )
            {
                  case EFAULT:
                        cout << "EFAULT" << endl;
                  break;
                  case ENAMETOOLONG:
                        cout << "ENAMETOOLONG" << endl;
                  break;
                  default:
                        cout << "Another error. Errno = " << errno << endl;
                  break;
            }
      return 0;
}

Вот какой вывод программы (пускалась из под рута ессно).

longobard root# g++ test.cpp -o test-cpp

longobard root# ./test-cpp

ENAMETOOLONG

Значит утка? Потому что ну по идее должен быть сегфолт если переполнени буфера. А тут его нету .

Дмитрий Шурупов

»…В общем-то, автор говорит об уязвимости в UNIX версии 7 (о SYSTEM V ничего не говорится) и утверждает о наличии уязвимости в такой экзотической системе, как PDP-11…»

Longobard

А, черт, а я уж испугался :) Я еще и сплоит проверил — он тоже не работает :)