LINUX.ORG.RU

Sendfile (2) или моя тупость


0

0

Почему-то не работает следующий коротенький пример работы с sendfile

nt main(int argc, char **argv) { int src; /* дескриптор исходного файла */ int dest; /* дескриптор файла назначения */ struct stat stat_buf; /* сведения об исходном файле */ off_t offset = 0; /* смещение от начала исходного файла */

/* проверить -- существует ли исходный файл и открыть его */ src = open(argv[1], O_RDONLY);

/* запросить размер исходного файла и права доступа к нему */ fstat(src, &stat_buf);

/* открыть файл назначения */ dest = open(argv[2], O_WRONLY|O_CREAT, stat_buf.st_mode); /* скопировать файл */ sendfile (dest, src, &offset, stat_buf.st_size);

/* закрыть файлы и выйти */ close(dest); close(src); } sendfile выругался с ошибкой EINVAL 8(((

Самое интересное - когда я, в попытке найти решение, неверно задал права в Open, создался файл SSH_PROCCESS_PID=7768 или каким-то таким (точно не помню давно было).

Причем запускал от обычного юзера. Это может быть уязвимостью, если атакующему надо выяснить пид сервера ссх..

★★★★

если моя память мне ни скем не изменяет, на Linux первый аргумент sendfile должен быть сокетом или пайпом.

man sendfile ;)

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