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 Issue 15399 - unaligned pointers are not @safe #5852

Merged
merged 1 commit into from
Jun 18, 2016

Conversation

WalterBright
Copy link
Member

No description provided.

@dlang-bot
Copy link
Contributor

dlang-bot commented Jun 8, 2016

Fix Bugzilla Description
15399 unaligned pointers are not @safe

@yebblies
Copy link
Member

yebblies commented Jun 8, 2016

Taking the address too?

@WalterBright WalterBright force-pushed the fix15399 branch 3 times, most recently from 813e4d2 to 9f9b45b Compare June 9, 2016 03:35
@WalterBright
Copy link
Member Author

Toto too!

bar(s2.ptr);
sinister(s1.ptr);
sinister(s2.ptr);
}
Copy link
Member

Choose a reason for hiding this comment

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

What about int x = *s1.ptr and *s1.ptr = 42?

Copy link
Member Author

Choose a reason for hiding this comment

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

It's writing a new value to the misaligned pointer that is the problem, not dereferencing it.

Copy link
Member

Choose a reason for hiding this comment

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

Alright, tnx for the explanation.


bool checkMisalignedPointer(Scope* sc, Expression e, string msg)
{
if (e.op == TOKdotvar)
Copy link
Member

Choose a reason for hiding this comment

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

This is a prime example of that pattern that should be replaced with:

if (e.op != TOKdotvar)
    return false;
... interesting branch ...

Clarifies the charter of the scope and unindents everything that's interesting.

@andralex
Copy link
Member

ok modulo pet peeve

@WalterBright
Copy link
Member Author

@andralex rebased, working now

@andralex
Copy link
Member

Auto-merge toggled on

@andralex andralex merged commit 077a2d7 into dlang:master Jun 18, 2016
@WalterBright WalterBright deleted the fix15399 branch June 20, 2016 22:31
PetarKirov added a commit to PetarKirov/D-YAML that referenced this pull request Nov 4, 2016
The following DMD PRs added more rigorous safety checks directly
affecting this project:
* dlang/dmd#5852 (fix Issue 15399 - unaligned pointers are not
  `@safe`) - triggered at line:
  https://github.com/kiith-sa/D-YAML/blob/v0.5.3/source/dyaml/emitter.d#L1011

* dlang/dmd#5940 (Unions may break immutability / unions with
  pointers are un-`@safe` ) - triggered at line:
  https://github.com/kiith-sa/D-YAML/blob/v0.5.3/source/dyaml/event.d#L230

* dlang/dmd#5876 (Casting from `void[]` to `T[]` is erroneously
  considered `@safe`) - triggered at line:
  https://github.com/kiith-sa/D-YAML/blob/v0.5.3/source/dyaml/loader.d#L186

* dlang/dmd#5860 (array.ptr in @safe code may point past end
  of array) - triggered at line:
  https://github.com/kiith-sa/D-YAML/blob/v0.5.3/source/dyaml/zerostring.d#L35
PetarKirov added a commit to PetarKirov/D-YAML that referenced this pull request Nov 4, 2016
The following DMD PRs added more rigorous safety checks directly
affecting this project:
* dlang/dmd#5852 (fix Issue 15399 - unaligned pointers are not
  `@safe`) - triggered at line:
  https://github.com/kiith-sa/D-YAML/blob/v0.5.3/source/dyaml/emitter.d#L1011

* dlang/dmd#5940 (Unions may break immutability / unions with
  pointers are un-`@safe` ) - triggered at line:
  https://github.com/kiith-sa/D-YAML/blob/v0.5.3/source/dyaml/event.d#L230

* dlang/dmd#5876 (Casting from `void[]` to `T[]` is erroneously
  considered `@safe`) - triggered at line:
  https://github.com/kiith-sa/D-YAML/blob/v0.5.3/source/dyaml/loader.d#L186

* dlang/dmd#5860 (array.ptr in @safe code may point past end
  of array) - triggered at line:
  https://github.com/kiith-sa/D-YAML/blob/v0.5.3/source/dyaml/zerostring.d#L35
ibuclaw added a commit to ibuclaw/dmd that referenced this pull request Mar 5, 2017
ibuclaw added a commit to ibuclaw/dmd that referenced this pull request Mar 5, 2017
ibuclaw added a commit to ibuclaw/dmd that referenced this pull request May 4, 2017
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