Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"invalid memory address or nil pointer dereference" when setting spec.tls.termination = edge #15547

Closed
tobru opened this issue Jul 30, 2017 · 4 comments

Comments

@tobru
Copy link

tobru commented Jul 30, 2017

When setting spec.tls.termination to edge on a route object Origin crashes.

Version
oc v3.6.0-rc.0+98b3d56
kubernetes v1.6.1+5115d708d7
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://myopenshift:8443
openshift v3.6.0-rc.0+98b3d56
kubernetes v1.6.1+5115d708d7
Steps To Reproduce
  1. oc edit route myroute
  2. Add spec.tls.termination = edge
  3. Save and exit
  4. Origin crashes
Current Result
E0730 12:53:39.087516   12047 runtime.go:66] Observed a panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:72
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:65
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:51
/usr/local/go/src/runtime/asm_amd64.s:479
/usr/local/go/src/runtime/panic.go:458
/usr/local/go/src/runtime/panic.go:62
/usr/local/go/src/runtime/sigpanic_unix.go:24
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/pkg/route/registry/route/strategy.go:194
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/pkg/route/registry/route/strategy.go:144
<autogenerated>:14
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/registry/rest/update.go:113
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go:456
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go:502
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go:293
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/storage/cacher.go:529
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go:471
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/endpoints/handlers/rest.go:849
/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/endpoints/handlers/rest.go:1107
/usr/local/go/src/runtime/asm_amd64.s:2086
panic: runtime error: invalid memory address or nil pointer dereference

goroutine 148434 [running]:
panic(0x4878800, 0xc420012050)
	/usr/local/go/src/runtime/panic.go:500 +0x1a1
github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/endpoints/handlers.finishRequest(0x6fc23ac00, 0xc43441aa10, 0x21, 0x0, 0x1, 0xc42047bd28)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/endpoints/handlers/rest.go:1123 +0x3aa
github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/endpoints/handlers.UpdateResource.func1(0xc428b3e750, 0xc42f0065a0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/endpoints/handlers/rest.go:852 +0xcfd
github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/endpoints/metrics.InstrumentRouteFunc.func1(0xc428b3e750, 0xc42f0065a0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go:102 +0x1f8
github.com/openshift/origin/vendor/github.com/emicklei/go-restful.(*Container).dispatch(0xc42633a870, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/github.com/emicklei/go-restful/container.go:272 +0xba0
github.com/openshift/origin/vendor/github.com/emicklei/go-restful.(*Container).(github.com/openshift/origin/vendor/github.com/emicklei/go-restful.dispatch)-fm(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/github.com/emicklei/go-restful/container.go:120 +0x48
net/http.HandlerFunc.ServeHTTP(0xc429e9ed20, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
net/http.(*ServeMux).ServeHTTP(0xc4263a5650, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:2022 +0x7f
github.com/openshift/origin/vendor/github.com/emicklei/go-restful.(*Container).ServeHTTP(0xc42633a870, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/github.com/emicklei/go-restful/container.go:287 +0x4d
github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/server.director.ServeHTTP(0x50d7131, 0xe, 0xc42633a870, 0xc4263b2620, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/server/handler.go:150 +0x466
github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/server.(*director).ServeHTTP(0xc4263d1ca0, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	<autogenerated>:58 +0x8b
github.com/openshift/origin/pkg/cmd/server/handlers.AuthorizationFilter.func1(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/pkg/cmd/server/handlers/authorization.go:64 +0x113
net/http.HandlerFunc.ServeHTTP(0xc4263da000, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
github.com/openshift/origin/pkg/cmd/server/handlers.ImpersonationFilter.func1(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/pkg/cmd/server/handlers/impersonation.go:30 +0x3142
net/http.HandlerFunc.ServeHTTP(0xc4262818b0, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
github.com/openshift/origin/pkg/cmd/server/handlers.AuthenticationHandlerFilter.func1(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/pkg/cmd/server/handlers/authentication.go:32 +0x2ba
net/http.HandlerFunc.ServeHTTP(0xc4263da040, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
github.com/openshift/origin/pkg/cmd/server/origin.namespacingFilter.func1(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/pkg/cmd/server/origin/handlers.go:97 +0xd2
net/http.HandlerFunc.ServeHTTP(0xc4263a5680, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
github.com/openshift/origin/pkg/cmd/server/origin.cacheControlFilter.func1(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/pkg/cmd/server/origin/handlers.go:65 +0xc2
net/http.HandlerFunc.ServeHTTP(0xc4263a56b0, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
github.com/openshift/origin/vendor/github.com/gorilla/context.ClearHandler.func1(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/github.com/gorilla/context/context.go:141 +0x8b
net/http.HandlerFunc.ServeHTTP(0xc426432160, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
net/http.(*ServeMux).ServeHTTP(0xc4263fea50, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:2022 +0x7f
net/http.(*ServeMux).ServeHTTP(0xc424450900, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:2022 +0x7f
github.com/openshift/origin/pkg/cmd/server/origin.WithPatternsHandler.func1(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/pkg/cmd/server/origin/master.go:422 +0xcd
net/http.HandlerFunc.ServeHTTP(0xc4237bbb00, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
github.com/openshift/origin/pkg/cmd/server/origin.WithAssetServerRedirect.func1(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/pkg/cmd/server/origin/handlers.go:211 +0x7f
net/http.HandlerFunc.ServeHTTP(0xc424451980, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/server/filters.WithCORS.func1(0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/server/filters/cors.go:75 +0x1a2
net/http.HandlerFunc.ServeHTTP(0xc4217ab4a0, 0x7f3c7c9bc548, 0xc42047bd10, 0xc4327af3b0)
	/usr/local/go/src/net/http/server.go:1726 +0x44
github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP.func1(0xc425cf68c0, 0xa3d6160, 0xc42047bd10, 0xc4327af3b0, 0xc4375dd680)
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/server/filters/timeout.go:91 +0x8d
created by github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/server/filters.(*timeoutHandler).ServeHTTP
	/openshifttmp/openshift/build-rpm-release/tito/rpmbuild-origincLpNIR/BUILD/origin-3.6.0/_output/local/go/src/github.com/openshift/origin/vendor/k8s.io/apiserver/pkg/server/filters/timeout.go:93 +0x1d1
Expected Result

Route object is updated without crashing Origin.

@tobru
Copy link
Author

tobru commented Jul 30, 2017

Can be very easily reproduced with a local oc cluster up, version v3.6.0-rc.0:

oc cluster up
oc new-app https://github.com/appuio/example-php-sti-helloworld.git --name example
oc expose svc example
oc patch route example -p '{"spec":{"tls":{"termination":"edge"}}}'

At this point Origin crashes with panic: runtime error: invalid memory address or nil pointer dereference

@smarterclayton
Copy link
Contributor

Thanks, good catch.

@smarterclayton
Copy link
Contributor

Fixes in #15550 and #15551

@tobru
Copy link
Author

tobru commented Jul 30, 2017

Thanks @smarterclayton for the fast fix! Cheers 🍺

openshift-merge-robot added a commit that referenced this issue Jul 31, 2017
Automatic merge from submit-queue

Changing from no-cert to edge encryption should not panic

A user who doesn't have permission to change from no cert to edge on an update should not be able to cause a panic. In addition, it should be possible for an unprivileged user to strip certificate info out of a previously valid route. Add better tests.

Fixes #15547

Also fixes the broken goversioninfo which prevented a 3.6.0 release build.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants