Skip to content

Commit

Permalink
bug #21485 [Process] Non ASCII characters disappearing during the esc…
Browse files Browse the repository at this point in the history
…apeshellarg (GuillaumeVerdon)

This PR was submitted for the 3.2 branch but it was merged into the 2.7 branch instead (closes #21485).

Discussion
----------

[Process] Non ASCII characters disappearing during the escapeshellarg

If the LC_CTYPE is not set at UTF-8, the escapeshellarg() function will remove every non-ascii characters.

As it's usual in europe to have directories with non-ascii chars in their name (ex : ~/Vidéos) the function should throw an exception if we're trying to submit it an argument containing non-ascii param and the LC_CTYPE is not set to use UTF-8

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   |
| Fixed tickets |
| License       | MIT
| Doc PR        |

I had this issue while using the lib ffmpeg and giving it a path like "~/Vidéos" the "é" chars was disappearing from the command giving a RuntimeException.

The problem was my LC_CTYPE that wasn't set properly, I believe an exception should be raised before the RuntimeException to warn the user of that behavior

Commits
-------

3779f3f [Process] Non ASCII characters disappearing during the escapeshellarg
  • Loading branch information
nicolas-grekas committed Feb 2, 2017
2 parents 3ee1aa0 + 3779f3f commit 01a0250
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/Symfony/Component/Process/ProcessUtils.php
Expand Up @@ -71,7 +71,7 @@ public static function escapeArgument($argument)
return $escapedArgument;
}

return escapeshellarg($argument);
return "'".str_replace("'", "'\\''", $argument)."'";
}

/**
Expand Down
1 change: 1 addition & 0 deletions src/Symfony/Component/Process/Tests/ProcessUtilsTest.php
Expand Up @@ -43,6 +43,7 @@ public function dataArguments()
array("'<|>\" \"'\\''f'", '<|>" "\'f'),
array("''", ''),
array("'with\\trailingbs\\'", 'with\trailingbs\\'),
array("'withNonAsciiAccentLikeéÉèÈàÀöä'", 'withNonAsciiAccentLikeéÉèÈàÀöä'),
);
}
}

0 comments on commit 01a0250

Please sign in to comment.