mirror of
https://github.com/golang/go
synced 2024-11-19 05:34:40 -07:00
syscall: point to x/sys in DLL loading docs, update syscall generator
Updates the syscall generator for patchset 4 of https://golang.org/cl/21388. Updates #14959 Change-Id: Icbd6df489887d3dcc076dfc73d4feb1376abaf8b Reviewed-on: https://go-review.googlesource.com/21428 Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
This commit is contained in:
parent
75a22d0d10
commit
6a0bb87bd0
@ -37,6 +37,13 @@ type DLL struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LoadDLL loads the named DLL file into memory.
|
// LoadDLL loads the named DLL file into memory.
|
||||||
|
//
|
||||||
|
// If name is not an absolute path and is not a known system DLL used by
|
||||||
|
// Go, Windows will search for the named DLL in many locations, causing
|
||||||
|
// potential DLL preloading attacks.
|
||||||
|
//
|
||||||
|
// Use LazyDLL in golang.org/x/sys/windows for a secure way to
|
||||||
|
// load system DLLs.
|
||||||
func LoadDLL(name string) (*DLL, error) {
|
func LoadDLL(name string) (*DLL, error) {
|
||||||
namep, err := UTF16PtrFromString(name)
|
namep, err := UTF16PtrFromString(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -174,6 +181,12 @@ func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
|
|||||||
// It will delay the load of the DLL until the first
|
// It will delay the load of the DLL until the first
|
||||||
// call to its Handle method or to one of its
|
// call to its Handle method or to one of its
|
||||||
// LazyProc's Addr method.
|
// LazyProc's Addr method.
|
||||||
|
//
|
||||||
|
// LazyDLL is subject to the same DLL preloading attacks as documented
|
||||||
|
// on LoadDLL.
|
||||||
|
//
|
||||||
|
// Use LazyDLL in golang.org/x/sys/windows for a secure way to
|
||||||
|
// load system DLLs.
|
||||||
type LazyDLL struct {
|
type LazyDLL struct {
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
dll *DLL // non nil once DLL is loaded
|
dll *DLL // non nil once DLL is loaded
|
||||||
|
@ -707,9 +707,9 @@ func (src *Source) Generate(w io.Writer) error {
|
|||||||
}
|
}
|
||||||
if *sysRepo {
|
if *sysRepo {
|
||||||
if packageName == "windows" {
|
if packageName == "windows" {
|
||||||
return "&LazyDLL{Name: " + arg + ", Flags: LoadLibrarySearchSystem32}"
|
return "&LazyDLL{Name: " + arg + ", System: true}"
|
||||||
} else {
|
} else {
|
||||||
return "&windows.LazyDLL{Name: " + arg + ", Flags: windows.LoadLibrarySearchSystem32}"
|
return "&windows.LazyDLL{Name: " + arg + ", System: true}"
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return syscalldot() + "NewLazyDLL(" + arg + ")"
|
return syscalldot() + "NewLazyDLL(" + arg + ")"
|
||||||
|
Loading…
Reference in New Issue
Block a user