Skip to content
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

Fix NativeMethods.IsSymLink #8282

Closed
wants to merge 5 commits into from

Conversation

JanKrivanek
Copy link
Member

Fixes #6773

Context

Original PR #8213 had imprecise implementation of IsSymLink - fixing this.
Details: #8213 (comment)
Special thanks to @KalleOlaviNiemitalo for pointing out the issue and proposing remedy options.

Changes Made

IsSymLink now uses GetFileInformationByHandleEx to obtain file attributes and detect symlink in case reparse point was detected.

Testing

Cover by unit test added in original PR

static bool GetFileAttributeTagInfoByHandle(SafeFileHandle fileHandle, out FileAttributeTagInfo fileAttributeTagInfo)
{
int typeSize = Marshal.SizeOf(typeof(FileAttributeTagInfo));
IntPtr ptr = Marshal.AllocHGlobal(typeSize);

Choose a reason for hiding this comment

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

Isn't it blittable?

Copy link
Member Author

Choose a reason for hiding this comment

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

Thanks for pointing - simplifying...

@JanKrivanek
Copy link
Member Author

Superseded by #8306

JaynieBai pushed a commit that referenced this pull request Jan 18, 2023
Fixes #6773

Context
Supersedes #8213 and #8282
Symlinked files were not embedded into binlog - previous solution was too much focused on symlinks and hence requried nontrivial code to properly distinguish aymlinks with available contnet.

Alternate approach - proceed with adding file as soon as it has available content

Testing
Preexisting unit test is excercising the scenario. Added a case for empty file - that still should not be added.
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.

BinaryLogger doesn't embed file contents for symbolic links
3 participants