Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[2.7][Filesystem] Changed dumpFile to allow dumping to streams... #14754

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 2 commits into from
Closed

[2.7][Filesystem] Changed dumpFile to allow dumping to streams... #14754

wants to merge 2 commits into from

Conversation

markchalloner
Copy link
Contributor

Q A
Bug fix? yes
New feature? yes
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets #10018
License MIT
Doc PR symfony/symfony-docs#5320

...as rename can only work where $oldname and $newname have the same streams wrappers.

Added tempnam, stream wrapper aware version of tempnam(), to do the heavy lifting.

*
* @return string The filename hierarchy.
*/
private function getHierarchy($filename)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hierarchy ? this is the first time I see this word used for a path component

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Includes the authority as well as the path.

STD 66 and RFC 3986 call it "hierarchical part" but hierarchy seemed nicer.

http://en.wikipedia.org/wiki/URI_scheme

Cheers

$limit = 10;
$schemeSeparator = '://';
$scheme = $this->getScheme($dir);
$hierarchy = $this->getHierarchy($dir);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rather than implementing these in 2 separate methods, each of them redoing the same splitting of the path, what about doing the logic determining both in the same place (either here or in a method returning array($scheme, $hierarchy) and using list($scheme, $hierarchy) = ... here) ?

@javiereguiluz
Copy link
Member

In the current Filesystem component, all custom functions use the same name as the original PHP function (copy, mkdir, touch, etc.) Why should we change the name of the PHP function in this case (tempnam() -> tempNam())?


// If the file already exists restart the loop
// Use fopen instead of file_exists as some streams do not support stat
$handle = @fopen($tmpFile, 'r');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why don't you use file_exists (or is_readable)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@staabm. See comment just above :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arghs sry ;)

@markchalloner
Copy link
Contributor Author

I think I fixed a TOCTOU security vulnerability but can someone check:

https://github.com/markchalloner/symfony/commit/26cbdfbd49b708367e459b7328859bef3207486a#diff-e88ad8ede40599bea0592b1113c4452c

I also added a MockStream as none of the built-in ones were suitable for testing (see comments in testTempnamWith*SchemeFails).

@markchalloner
Copy link
Contributor Author

Rebased onto 2.8 in #14970

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants