2013-05-13 2 views
0

Я разрабатываю основанный на Интернете компилятор. Для этого мне нужно сохранить входные данные, которые должны быть переданы в исходный код в файле, а затем сохранить вывод, записанный в файле. Я хочу ограничить размер файла выходного файла до максимального значения. вот фрагмент кода:Определить верхний предел размера файла

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dir + "/run.sh"))); 
      out.write("cd \"" + dir +"\"\n"); 
      out.write("chroot .\n"); 
      out.write("./a.out <in.txt> out.txt"); 
      out.close(); 

Как определить верхний предел размера файла?

+1

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

+0

Кстати, этот код выглядит очень уязвимым для инъекций ... например, что, если есть каталог под названием '"; rm -rf.; Echo "'? – wchargin

ответ

0

Одна из возможностей - использовать ulimit -f, чтобы ограничить общий размер выходного файла.

Другая возможность конвейерный вывода через dd bs=1 count=NNNNNN


Кстати, вам не нужно запускать скрипт, который путь. Вы можете сделать это следующим образом:

exec(new String[]{ 
    "/bin/sh", "-c", 
    "cd \"" + dir + "\" ; chroot . ; ./a.out <in.txt> out.txt" 
}); 

Это не касается проблемы с «инъекцией». И вы действительно, действительнонеобходимо, чтобы обратиться к этому !!

Смежные вопросы