Skip to content

Commit fa80586

Browse files
committed
MREMAP_FIXED protection
1 parent 26ac22b commit fa80586

File tree

7 files changed

+72
-2
lines changed

7 files changed

+72
-2
lines changed

.idea/.gitignore

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/sys.iml

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/watcherTasks.xml

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/mremap.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type mremapMmapper struct {
1515
}
1616

1717
func (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {
18-
if newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) {
18+
if newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&MREMAP_FIXED == 1 {
1919
return nil, EINVAL
2020
}
2121

unix/mremap_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func TestMremap(t *testing.T) {
2828
if err != nil {
2929
t.Fatalf("Mremap2: %v", err)
3030
}
31-
bNew[unix.Getpagesize()+1] = 84
31+
bNew[unix.Getpagesize()+1] = 84 // checks
3232

3333
if bNew[0] != 42 {
3434
t.Fatal("first element value was changed")
@@ -42,4 +42,9 @@ func TestMremap(t *testing.T) {
4242
if cap(bNew) != unix.Getpagesize()*2 {
4343
t.Fatal("new memory cap not equal to specified len")
4444
}
45+
46+
_, err = unix.Mremap(b, unix.Getpagesize(), unix.MREMAP_FIXED)
47+
if err != unix.EINVAL {
48+
t.Fatalf("unix.MREMAP_FIXED should be forbidden")
49+
}
4550
}

0 commit comments

Comments
 (0)