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_patchmod.txt
# example.net/[email protected] refers to a package.
go get example.net/[email protected]

go list example.net/pkgremoved
stdout '^example.net/pkgremoved'

cp go.mod go.mod.orig


# When we resolve a new dependency on example.net/other,
# it will change the meaning of the path "example.net/pkgremoved"
# from a package (at v0.1.0) to only a module (at v0.2.0).
#
# If we simultaneously 'get' that module at the query "patch", the module should
# be constrained to the latest patch of its originally-selected version (v0.1.0),
# not upgraded to the latest patch of the new transitive dependency.

! go get example.net/pkgremoved@patch example.net/[email protected]
stderr '^go: example.net/[email protected] requires example.net/[email protected], not example.net/pkgremoved@patch \(v0.1.1\)$'
cmp go.mod.orig go.mod


# However, we should be able to patch from a package to a module and vice-versa.

# Package to module ...

go get example.net/[email protected]
go list example.net/pkgremoved
stdout 'example.net/pkgremoved'

go get example.net/pkgremoved@patch
! go list example.net/pkgremoved

# ... and module to package.

go get example.net/[email protected]
! go list example.net/pkgremoved

go get example.net/pkgremoved@patch
go list example.net/pkgremoved
stdout 'example.net/pkgremoved'


-- go.mod --
module example

go 1.16

replace (
	example.net/other v0.1.0 => ./other

	example.net/pkgremoved v0.1.0 => ./prpkg
	example.net/pkgremoved v0.1.1 => ./prpkg

	example.net/pkgremoved v0.2.0 => ./prmod
	example.net/pkgremoved v0.2.1 => ./prmod

	example.net/pkgremoved v0.3.0 => ./prpkg
	example.net/pkgremoved v0.3.1 => ./prmod

	example.net/pkgremoved v0.4.0 => ./prmod
	example.net/pkgremoved v0.4.1 => ./prpkg
)
-- other/go.mod --
module example.net/other

go 1.16

require example.net/pkgremoved v0.2.0
-- other/other.go --
package other
-- prpkg/go.mod --
module example.net/pkgremoved

go 1.16
-- prpkg/pkgremoved.go --
package pkgremoved
-- prmod/go.mod --
module example.net/pkgremoved
-- prmod/README.txt --
Package pkgremoved was removed in v0.2.0 and v0.3.1,
and added in v0.1.0 and v0.4.1.