LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

опробовал полное экранирование

sprintf(shellcmd,"\"openssl sha1 \\\"%s\\\"\"",filename);

Это не полное экранирование, экранировать надо всё, в том числе имя файла. Разбирай его посимвольно, видишь кавычки и слэши - экранируй. А, ну и кавычки вокруг команды зачем добавил? И кавычки вокруг имени файла зачем-то экранировал - это не надо было делать. Они тут синтаксис шелла и нужны как есть.

Только, повторю, вместо этой возни лучше использовать exec.

execl(shell path, «sh», "-c", command, (char *)0);

Это ты пытаешься эмулировать popen и получаешь все те же проблемы которые у него были. Бесполезное занятие. Запускать надо openssl безо всяких шеллов.

Исправление firkax, :

опробовал полное экранирование

sprintf(shellcmd,"\"openssl sha1 \\\"%s\\\"\"",filename);

Это не полное экранирование, экранировать надо всё, в том числе имя файла. Разбирай его посимвольно, видишь кавычки и слэши - экранируй. А, ну и кавычки вокруг команды зачем добавил?

Только, повторю, вместо этой возни лучше использовать exec.

execl(shell path, «sh», "-c", command, (char *)0);

Это ты пытаешься эмулировать popen и получаешь все те же проблемы которые у него были. Бесполезное занятие. Запускать надо openssl безо всяких шеллов.

Исправление firkax, :

опробовал полное экранирование

sprintf(shellcmd,"\"openssl sha1 \\\"%s\\\"\"",filename);

Это не полное экранирование, экранировать надо всё, в том числе имя файла. Разбирай его посимвольно, видишь кавычки и слэши - экранируй. А, ну и кавычки вокруг команды зачем добавил? Да ещё и с экранированием. И слеши экранировал дважды зачем-то.

Только, повторю, вместо этой возни лучше использовать exec.

execl(shell path, «sh», "-c", command, (char *)0);

Это ты пытаешься эмулировать popen и получаешь все те же проблемы которые у него были. Бесполезное занятие. Запускать надо openssl безо всяких шеллов.

Исправление firkax, :

опробовал полное экранирование

sprintf(shellcmd,"\"openssl sha1 \\\"%s\\\"\"",filename);

Это не полное экранирование, экранировать надо всё, в том числе имя файла. Разбирай его посимвольно, видишь кавычки и слэши - экранируй. А, ну и кавычки вокруг команды зачем добавил? Да ещё и с экранированием.

Только, повторю, вместо этой возни лучше использовать exec.

execl(shell path, «sh», "-c", command, (char *)0);

Это ты пытаешься эмулировать popen и получаешь все те же проблемы которые у него были. Бесполезное занятие. Запускать надо openssl безо всяких шеллов.

Исходная версия firkax, :

опробовал полное экранирование

sprintf(shellcmd,«\„openssl sha1 \\\“%s\\\»\"",filename);

Это не полное экранирование, экранировать надо всё, в том числе имя файла. Разбирай его посимвольно, видишь кавычки и слэши - экранируй.

Только, повторю, вместо этой возни лучше использовать exec.

execl(shell path, «sh», "-c", command, (char *)0);

Это ты пытаешься эмулировать popen и получаешь все те же проблемы которые у него были. Бесполезное занятие. Запускать надо openssl безо всяких шеллов.