Skip to content

Commit

Permalink
Merge branch 'SagerNet:dev' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
shij authored Jun 28, 2023
2 parents 8d24297 + d852e9c commit 4feb168
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 6 deletions.
4 changes: 2 additions & 2 deletions common/buf/ptr.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//go:build !disable_unsafe
//go:build !disable_unsafe && go1.21

package buf

Expand All @@ -23,7 +23,7 @@ func init() {
if !common.UnsafeBuffer {
return
}
debugVars := *(*[]dbgVar)(unsafe.Pointer(&dbgvars))
debugVars := *(*[]*dbgVar)(unsafe.Pointer(&dbgvars))
for _, v := range debugVars {
if v.name == "invalidptr" {
*v.value = 0
Expand Down
34 changes: 34 additions & 0 deletions common/buf/ptr_go120.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//go:build !disable_unsafe && !go1.21

package buf

import (
"unsafe"

"github.com/sagernet/sing/common"
)

type dbgVar struct {
name string
value *int32
}

//go:linkname dbgvars runtime.dbgvars
var dbgvars any

// go.info.runtime.dbgvars: relocation target go.info.[]github.com/sagernet/sing/common/buf.dbgVar not defined
// var dbgvars []dbgVar

func init() {
if !common.UnsafeBuffer {
return
}
debugVars := *(*[]dbgVar)(unsafe.Pointer(&dbgvars))
for _, v := range debugVars {
if v.name == "invalidptr" {
*v.value = 0
return
}
}
panic("can't disable invalidptr")
}
11 changes: 7 additions & 4 deletions protocol/socks/packet.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,18 @@ func (c *AssociatePacketConn) Write(b []byte) (n int, err error) {
return c.WriteTo(b, c.remoteAddr)
}

func (c *AssociatePacketConn) ReadPacket(buffer *buf.Buffer) (M.Socksaddr, error) {
destination, err := c.NetPacketConn.ReadPacket(buffer)
func (c *AssociatePacketConn) ReadPacket(buffer *buf.Buffer) (destination M.Socksaddr, err error) {
destination, err = c.NetPacketConn.ReadPacket(buffer)
if err != nil {
return M.Socksaddr{}, err
}
c.remoteAddr = destination
buffer.Advance(3)
dest, err := M.SocksaddrSerializer.ReadAddrPort(buffer)
return dest, err
destination, err = M.SocksaddrSerializer.ReadAddrPort(buffer)
if err != nil {
return
}
return destination.Unwrap(), nil
}

func (c *AssociatePacketConn) WritePacket(buffer *buf.Buffer, destination M.Socksaddr) error {
Expand Down

0 comments on commit 4feb168

Please sign in to comment.