Skip to content

[Process] Non ASCII characters disappearing during the escapeshellarg #21485

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 8 commits into from
Closed

[Process] Non ASCII characters disappearing during the escapeshellarg #21485

wants to merge 8 commits into from

Conversation

GuillaumeVerdon
Copy link
Contributor

@GuillaumeVerdon GuillaumeVerdon commented Feb 1, 2017

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

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
@stof stof changed the base branch from 2.3 to 3.2 February 1, 2017 09:44
@GuillaumeVerdon GuillaumeVerdon changed the title Escapeargumentfix [Process] Non ASCII characters disappearing during the escapeshellarg Feb 1, 2017
@nicolas-grekas
Copy link
Member

nicolas-grekas commented Feb 1, 2017

what about doing escaping ourselves instead?
return "'".str_replace(array('\\', "'"), array('\\\\', "\\'"), $argument)."'";
can you try it? does it work?
if yes, can you pelase update your PR and add a test case?

@GuillaumeVerdon
Copy link
Contributor Author

GuillaumeVerdon commented Feb 1, 2017

I edited the current test case and the logic for Linux, as I don't know how the function is working on windows I didn't patch it.

ProcessUtilsTest.php is passing on my environment

@nicolas-grekas
Copy link
Member

👍 (to be merged on 2.7, Windows is unaffected)

@nicolas-grekas nicolas-grekas added this to the 2.7 milestone Feb 1, 2017
@nicolas-grekas
Copy link
Member

Thank you @GuillaumeVerdon.

nicolas-grekas added a commit that referenced this pull request Feb 2, 2017
…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
@GuillaumeVerdon GuillaumeVerdon deleted the escapeargumentfix branch February 2, 2017 14:01
This was referenced Feb 6, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants