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

Open
empijei opened this Issue Nov 12, 2018 · 1 comment

Comments

Projects
None yet
5 participants
@empijei
Contributor

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
	}
	// [...]
@odeke-em

This comment has been minimized.

Member

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