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

crypto/x509: (*Certificate).Equals panics for nil values #28743

empijei opened this Issue Nov 12, 2018 · 1 comment


None yet
5 participants

empijei commented Nov 12, 2018

Most methods in Go do not work on nil values, and that is perfectly fine, but I feel like (*T).Equal(*T) should behave more or less like the == operator.

I'm proposing a change that looks like this:

// Current implementation
func (c *Certificate) Equal(other *Certificate) bool {
	return bytes.Equal(c.Raw, other.Raw)

// New implementation
func (c *Certificate) Equal(other *Certificate) bool {
	if c == nil || other == nil {
		return c == other
	return bytes.Equal(c.Raw, other.Raw)

This is analogous to how the regex package does it:

func (x *Regexp) Equal(y *Regexp) bool {
	if x == nil || y == nil {
		return x == y
	// [...]

This comment has been minimized.


odeke-em commented Nov 12, 2018

Thank you for this change request @empijei!

I'll kindly page @FiloSottile @rsc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment