ROOTPLOIT
Server: LiteSpeed
System: Linux in-mum-web1878.main-hosting.eu 5.14.0-570.21.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 11 07:22:35 EDT 2025 x86_64
User: u435929562 (435929562)
PHP: 7.4.33
Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/golang/1.22.0/src/cmd/go/testdata/script/mod_get_replaced.txt
cp go.mod go.mod.orig

env oldGOPROXY=$GOPROXY

# If a wildcard replacement exists for an otherwise-nonexistent module,
# 'go get' should resolve it to the minimum valid pseudo-version.

go mod edit -replace=example.com/x=./x
go get example.com/x

go list -m example.com/x
stdout '^example.com/x v0.0.0-00010101000000-000000000000 '

# If specific-version replacements exist, the highest matching version should be used.
go mod edit -replace=example.com/[email protected]=./x
go mod edit -replace=example.com/[email protected]=./x

go get example.com/x
go list -m example.com/x
stdout '^example.com/x v0.2.0 '

go get example.com/x@<v0.2.0
go list -m example.com/x
stdout '^example.com/x v0.1.0 '


# The same should work with GOPROXY=off.

env GOPROXY=off
cp go.mod.orig go.mod

go mod edit -replace=example.com/x=./x
go get example.com/x

go list -m example.com/x
stdout '^example.com/x v0.0.0-00010101000000-000000000000 '

# If specific-version replacements exist, the highest matching version should be used.
go mod edit -replace=example.com/[email protected]=./x
go mod edit -replace=example.com/[email protected]=./x

go get example.com/x
go list -m example.com/x
stdout '^example.com/x v0.2.0 '

go get example.com/x@<v0.2.0
go list -m example.com/x
stdout '^example.com/x v0.1.0 '


# Replacements should also be listed as known versions, and 'go get' should sort
# them in with ordinary versions.

env GOPROXY=$oldGOPROXY

cp go.mod.orig go.mod
go list -versions -m rsc.io/quote
stdout 'v1.3.0 v1.4.0'

go get rsc.io/[email protected]
go list -m rsc.io/quote
stdout '^rsc.io/quote v1.3.0'

go mod edit -replace rsc.io/[email protected]=rsc.io/[email protected]

go list -versions -m rsc.io/quote
stdout 'v1.3.0 v1.3.1 v1.4.0'

go get rsc.io/[email protected]
go list -m rsc.io/quote
stdout '^rsc.io/quote v1.3.1 '

go get rsc.io/quote@>v1.3.1
go list -m rsc.io/quote
stdout '^rsc.io/quote v1.4.0'


# Replacements should allow 'go get' to work even with dotless module paths.

cp go.mod.orig go.mod

! go list example
stderr '^package example is not in std \(.*\)$'
! go get example
stderr '^go: malformed module path "example": missing dot in first path element$'

go mod edit -replace [email protected]=./example

! go list example
stderr '^module example provides package example and is replaced but not required; to add it:\n\tgo get [email protected]$'

go get example
go list -m example
stdout '^example v0.1.0 '


-- go.mod --
module example.com

go 1.16
-- x/go.mod --
module example.com/x

go 1.16
-- x/x.go --
package x
-- example/go.mod --
module example
go 1.16
-- example/example.go --
package example