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

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

Open
empijei opened this Issue Nov 12, 2018 · 5 comments

Comments

Projects
None yet
5 participants
@empijei
Copy link
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.

Copy link
Member

odeke-em commented Nov 12, 2018

Thank you for this change request @empijei!

I'll kindly page @FiloSottile @rsc

@odeke-em

This comment has been minimized.

Copy link
Member

odeke-em commented Mar 11, 2019

@empijei would you like to send a CL and a test for this? I could have sent a CL but you've already proposed the fix so please go for it. Thank you.

@empijei

This comment has been minimized.

Copy link
Contributor Author

empijei commented Mar 12, 2019

Thanks, I will asap, but I'm currently stuck on #30776. Will probably submit a fix for this in the next days.

@odeke-em

This comment has been minimized.

Copy link
Member

odeke-em commented Mar 12, 2019

Thanks, I will asap, but I'm currently stuck on #30776. Will probably submit a fix for this in the next days.

Cool, no rush. However, I don't think you need to be blocked by ./all.bash. If your fix just involves the nil comparisons and also has some tests, you can submit that but also you can run the tests just in crypto/x509.

@gopherbot

This comment has been minimized.

Copy link

gopherbot commented Mar 12, 2019

Change https://golang.org/cl/167118 mentions this issue: crypto/x509: make (*Certificate).Equal not panic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.