Permalink
Browse files

bug #21485 [Process] Non ASCII characters disappearing during the esc…

…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...
2 parents 3ee1aa0 + 3779f3f commit 01a0250d49238843d7b1efa795e527e7f416fab9 @nicolas-grekas nicolas-grekas committed Feb 2, 2017
@@ -71,7 +71,7 @@ public static function escapeArgument($argument)
return $escapedArgument;
}
- return escapeshellarg($argument);
+ return "'".str_replace("'", "'\\''", $argument)."'";
}
/**
@@ -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.