The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Четыре из восьми членов технического комитета Debian высказа..., opennews (??), 18-Янв-14, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


316. "Четыре из восьми членов технического комитета Debian..."  +1 +/
Сообщение от arisu (ok), 19-Янв-14, 17:29 
> Я не программист ниразу

в данном случае это очень хорошо заметно.

Ответить | Правка | Наверх | Cообщить модератору

321. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от Аноним (-), 19-Янв-14, 18:27 
>> Я не программист ниразу
> в данном случае это очень хорошо заметно.

Поясни, пожалуйста, наблюдательный программист, почему
e = path_startswith(k, "/tmp/");
а не
e = path_startswith(k, getenv("SYSTEMD_TMP"));
ну или
e = path_startswith(k, TMP_PATH);

также что за 4096*1024 и 'x', если несложно.

Ответить | Правка | Наверх | Cообщить модератору

337. "Четыре из восьми членов технического комитета Debian..."  –1 +/
Сообщение от arisu (ok), 19-Янв-14, 20:21 
> Поясни, пожалуйста, наблюдательный программист, почему
> e = path_startswith(k, «/tmp/»);
> а не
> e = path_startswith(k, getenv(«SYSTEMD_TMP»));
> ну или
> e = path_startswith(k, TMP_PATH);

/tmp — часть LSB (см. FHS 3.18). не вижу никакого смысла развлекаться ерундой типа «а вдруг тмп в глубокой жопе?»

> также что за 4096*1024 и 'x', если несложно.

четыре мегабайта фигни в ТЕСТЕ. что такое «тест» — в курсе, нет? вот static перед массивом забыли — это зря, незачем в стек так сильно гадить: тест может фэйлануться из-за этого.

Ответить | Правка | Наверх | Cообщить модератору

346. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от Аноним (-), 19-Янв-14, 22:05 
> /tmp — часть LSB (см. FHS 3.18).

/dev/shm, /var/tmp и /tmp ведь не одно и то же по LSB? В смысле разве там не надо
if(not_in_dir(k, getenv("SYSTEMD_ALLOWED_PATH")) error();
? Может и развлечение ерундой.

> четыре мегабайта фигни в ТЕСТЕ. что такое «тест» — в курсе, нет?

Почему именно 4, а не 10 или 2 не в курсе.


Ответить | Правка | Наверх | Cообщить модератору

351. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от arisu (ok), 20-Янв-14, 00:00 
> /dev/shm, /var/tmp и /tmp ведь не одно и то же по LSB?
> В смысле разве там не надо
> if(not_in_dir(k, getenv(«SYSTEMD_ALLOWED_PATH»)) error();

а это уже никак не относится к претензии «захардкоженые пути».

>> четыре мегабайта фигни в ТЕСТЕ. что такое «тест» — в курсе, нет?
> Почему именно 4, а не 10 или 2 не в курсе.

потому что тест такой. тестируют, как справится с четырьмя мегабайтами фигни.

Ответить | Правка | Наверх | Cообщить модератору

355. "Четыре из восьми членов технического комитета Debian..."  +1 +/
Сообщение от Аноним (-), 20-Янв-14, 00:47 
>> /dev/shm, /var/tmp и /tmp ведь не одно и то же по LSB?
>> В смысле разве там не надо
>> if(not_in_dir(k, getenv(«SYSTEMD_ALLOWED_PATH»)) error();
> а это уже никак не относится к претензии «захардкоженые пути».

Ты как-то неочевидно для меня определяешь "захардкоженые". Нельзя ни при компиляции, ни в рантайме изменить => hardcoded. У программистов иная формулировка? Но претензия (это громко сказано) в основном к тому же, что и

>>> четыре мегабайта фигни в ТЕСТЕ. что такое «тест» — в курсе, нет?
>> Почему именно 4, а не 10 или 2 не в курсе.
> потому что тест такой. тестируют, как справится с четырьмя мегабайтами фигни.

здесь. 4М с потолка взялись? /dev/shm, /var/tmp и /tmp по ритуалу положены? Можешь объяснить чего они в одном коммите забыли?

Ответить | Правка | Наверх | Cообщить модератору

362. "Четыре из восьми членов технического комитета Debian..."  +1 +/
Сообщение от Vkni (ok), 20-Янв-14, 07:13 
> /tmp — часть LSB (см. FHS 3.18). не вижу никакого смысла развлекаться ерундой типа «а вдруг тмп в глубокой жопе?»

Тем не менее, хороший тон - засунуть это в define.

Ответить | Правка | К родителю #337 | Наверх | Cообщить модератору

366. "Четыре из восьми членов технического комитета Debian..."  –1 +/
Сообщение от arisu (ok), 20-Янв-14, 11:10 
>> /tmp — часть LSB (см. FHS 3.18). не вижу никакого смысла развлекаться ерундой типа «а вдруг тмп в глубокой жопе?»
> Тем не менее, хороший тон — засунуть это в define.

вот если я вижу путь к /tmp в дефайне, то понимаю, что человек совершенно неадекватен.

p.s. это психическое расстройство называется «страх непоименованых литералов». лечению поддаётся плохо, превращает код в убойно нечитаемую лапшу не менее надёжно, чем куча волшебных чисел.

Ответить | Правка | Наверх | Cообщить модератору

383. "Четыре из восьми членов технического комитета Debian..."  +1 +/
Сообщение от Michael Shigorinemail (ok), 21-Янв-14, 01:18 
> вот если я вижу путь к /tmp в дефайне, то понимаю, что
> человек совершенно неадекватен.

/tmp вообще сложно использовать так, чтобы не вляпываться регулярно в симлинковые атаки +/- toctou.  Т.е. тогда уж mkstemp(3) и лучше частные TMPDIR, так или иначе реализованные (в альте и, кажется, Owl это pam_mktemp, например).

Ответить | Правка | Наверх | Cообщить модератору

384. "Четыре из восьми членов технического комитета Debian..."  –2 +/
Сообщение от arisu (ok), 21-Янв-14, 02:41 
не запускайте недовереный софт. точка.
Ответить | Правка | Наверх | Cообщить модератору

385. "Четыре из восьми членов технического комитета Debian..."  +1 +/
Сообщение от Michael Shigorinemail (ok), 21-Янв-14, 02:58 
> не запускайте недовереный софт. точка.

Софт, в котором нагрепывается /tmp, у меня имеет приличные шансы таким и оказаться.  Начиная с resin лет так двенадцать тому.

Ответить | Правка | Наверх | Cообщить модератору

389. "Четыре из восьми членов технического комитета Debian..."  –1 +/
Сообщение от arisu (ok), 21-Янв-14, 15:29 
>> не запускайте недовереный софт. точка.
> Софт, в котором нагрепывается /tmp, у меня имеет приличные шансы таким и
> оказаться.  Начиная с resin лет так двенадцать тому.

круто. весь, то есть, который временные файлы создаёт. ну, плохо быть тобой, чо.

Ответить | Правка | Наверх | Cообщить модератору

393. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от Michael Shigorinemail (ok), 22-Янв-14, 02:18 
>> Софт, в котором нагрепывается /tmp
> круто. весь, то есть, который временные файлы создаёт

Надо же, я-то думал, за последние полтора, ну десяток лет всё-таки изрядно в багтраке прополоскали любителей отождествлять эти совсем разные вещи -- одну из двух главных бед юникса (вторая -- root) и бытовую потребность, которая грамотно решается совсем не creat() в /tmp с разбегу.

Ответить | Правка | Наверх | Cообщить модератору

395. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от Led (ok), 22-Янв-14, 02:46 
>>> Софт, в котором нагрепывается /tmp
>> круто. весь, то есть, который временные файлы создаёт
> Надо же, я-то думал, за последние полтора, ну десяток лет всё-таки изрядно
> в багтраке прополоскали любителей отождествлять эти совсем разные вещи -- одну
> из двух главных бед юникса (вторая -- root) и бытовую потребность,
> которая грамотно решается совсем не creat() в /tmp с разбегу.

Посмотри на реализации mtpfs. Я нарыл штук 4 или 5. И все (ВСЕ) реализованы через копирование в /tmp. Т.о. скопировать 10Г файл на андроидину в принципе невозможно с дагностикой "нет места на таргете" (хотя его там over 30Г). И только в simple_mtpfs в какой-момент появлись коммиты, в которых добавляется опция монтирования, в которой можно указать алтернативу /tmp. Правда, до релиза это не дожило - ревертнули и заменили на распознавание переменной среды $TMPDIR (вот только куда втавилять этк переменную в /etc/fstab "разработчики" так и не написали, видно, культурные шибко).

Ответить | Правка | Наверх | Cообщить модератору

396. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от Michael Shigorinemail (ok), 22-Янв-14, 03:08 
>> Надо же, я-то думал, за последние полтора, ну десяток лет всё-таки изрядно
>> в багтраке прополоскали любителей отождествлять эти совсем разные вещи
> Посмотри на реализации mtpfs. Я нарыл штук 4 или 5.
> И все (ВСЕ) реализованы через копирование в /tmp.

И каждая вторая -- с предсказуемыми именами?..

Ответить | Правка | Наверх | Cообщить модератору

398. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от arisu (ok), 22-Янв-14, 03:46 
а при чэм тут creat() вообще? O_O
Ответить | Правка | К родителю #393 | Наверх | Cообщить модератору

399. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от Michael Shigorinemail (ok), 22-Янв-14, 13:47 
> а при чэм тут creat() вообще? O_O
>>> который временные файлы создаёт

Или речь про echo?

Ответить | Правка | Наверх | Cообщить модератору

400. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от arisu (ok), 22-Янв-14, 13:56 
>> а при чэм тут creat() вообще? O_O
>>>> который временные файлы создаёт
> Или речь про echo?

речь про «/tmp» в путях. которое фигурирует и в mkstemp(), например. а если вдруг какой-то программе хочется выделить «свой tmp», то это ВНИЗАПНА! можно решить при помощи монтирования частных поддеревьев.

Ответить | Правка | К родителю #399 | Наверх | Cообщить модератору

401. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от Michael Shigorinemail (ok), 22-Янв-14, 14:01 
> речь про «/tmp» в путях. которое фигурирует и в mkstemp(), например.

Зачем?!

> а если вдруг какой-то программе хочется выделить «свой tmp», то это ВНИЗАПНА!
> можно решить при помощи монтирования частных поддеревьев.

Ага, и так каждый вдох-выдох.

Ответить | Правка | К родителю #400 | Наверх | Cообщить модератору

402. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от arisu (ok), 22-Янв-14, 14:05 
>> речь про «/tmp» в путях. которое фигурирует и в mkstemp(), например.
> Зачем?!


#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main (void) {
  char *tmp[64];
  strcpy(tmp, "zXXXXXX");
  mkstemp(tmp);
  return 0;
}


угадываем, где создастся файл с именем zблабла. могу подсказать, если что.

>> а если вдруг какой-то программе хочется выделить «свой tmp», то это ВНИЗАПНА!
>> можно решить при помощи монтирования частных поддеревьев.
> Ага, и так каждый вдох-выдох.

ну да. а ещё каждая GUI-программа должна уметь запоминать размер и положение своего окна, потому что использовать для этого средства WM — некошерно. так? ну действительно: зачем нам универсальное системное средство, мы же можем в каждую программу костылей напихать!

Ответить | Правка | К родителю #401 | Наверх | Cообщить модератору

403. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от Michael Shigorinemail (ok), 22-Янв-14, 21:23 
> угадываем, где создастся файл с именем zблабла. могу подсказать, если что.

$ gcc -xc -<< EOF
> #include <stdlib.h>
> #include <stdio.h>
> #include <string.h>
> int main (void) {
>  char *tmp[64];
>  strcpy(tmp, "zXXXXXX");  
>  mkstemp(tmp);
>  return 0;
> }
> EOF

<stdin>: In function ‘main’:
<stdin>:7:2: warning: passing argument 1 of ‘strcpy’ from incompatible pointer type [enabled by default]
In file included from <stdin>:3:0:
/usr/include/string.h:125:14: note: expected ‘char * __restrict__’ but argument is of type ‘char **’
<stdin>:8:2: warning: passing argument 1 of ‘mkstemp’ from incompatible pointer type [enabled by default]
In file included from <stdin>:1:0:
/usr/include/stdlib.h:627:12: note: expected ‘char *’ but argument is of type ‘char **’
$ ls z* /tmp/z*
ls: невозможно получить доступ к z*: Нет такого файла или каталога
ls: невозможно получить доступ к /tmp/z*: Нет такого файла или каталога
$ ./a.out
$ ls z* /tmp/z*
ls: невозможно получить доступ к /tmp/z*: Нет такого файла или каталога
zcCkR18
$ _


>>> а если вдруг какой-то программе хочется выделить «свой tmp», то это ВНИЗАПНА!
>>> можно решить при помощи монтирования частных поддеревьев.
>> Ага, и так каждый вдох-выдох.
> ну действительно: зачем нам универсальное системное средство, мы же можем
> в каждую программу костылей напихать!

Именно о предложении пихать костыли (или дырки с приличным потенциалом) и возмущаюсь.

google://"insecure /tmp handling"

PS: пришлось удалить пустую строчку после инклудов, а то оверквотилка любезно заменяла первый из них на соответствующее предупреждение (вообще говоря, это off-by-one по осмысленности).

Ответить | Правка | К родителю #402 | Наверх | Cообщить модератору

404. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от arisu (ok), 22-Янв-14, 21:55 
>> угадываем, где создастся файл с именем zблабла. могу подсказать, если что.

вот не надо мне прямо в браузере код править, да. там было tmp = alloca(64), гыг. заменил на массив, забыл звезду убрать. суть того, что я хотел показать, от этого, само собой, не меняется, и файл всё равно создаётся в текущем каталоге, если не указать явно /tmp/zXXXXXX

> Именно о предложении пихать костыли (или дырки с приличным потенциалом) и возмущаюсь.

угу. то есть, задавать при необходимости /tmp биндами — это, значит, костыль и дырка. а писать везде код, который будет пытаться смотреть на $TMPDIR, которой и вовсе может не быть, добавлять проверки на это и городить таким образом совершенно лишние куски, реализующие то, что может сделать сама система — это не костыль и совершенно безопасно.

> google://"insecure /tmp handling»

а то, что в позиксе нет функции для создания файла без имени, хотя система такое вполне может поддерживать — это уже совсем другая беда. как не костыль обходы этого, всё равно будут костыли. поэтому лучше не заниматься ерундой, костыля обходы в каждой софтине, а таки выдавать им изолированые /tmp системными средствами.

Ответить | Правка | К родителю #403 | Наверх | Cообщить модератору

405. "Четыре из восьми членов технического комитета Debian..."  +/
Сообщение от Michael Shigorinemail (ok), 23-Янв-14, 04:06 
> суть того, что я хотел показать, от этого, само собой, не меняется,
> и файл всё равно создаётся в текущем каталоге, если не указать
> явно /tmp/zXXXXXX [...]

Дошло, спасибо.  Привык сильно к шелльному :-/

Ответить | Правка | К родителю #404 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру