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

Bugfix - Invalid call to value method with nil pointer #9

Conversation

Rican7
Copy link
Contributor

@Rican7 Rican7 commented Oct 28, 2015

I ran into an issue when using this library when I tried to encode a struct that contained a nil pointer with a custom encoding method (through the query.Encoder interface) that had a value type receiver.

Due to the way that this library was checking for and asserting the interface on a reflected value, it could end up naïvely calling the interface method on a nil pointer. The only option to circumvent the issue was to instead define the query.Encoder interface's EncodeValues method with a pointer receiver and check for a nil receiver, but then non-pointers (value types) wouldn't implement the interface and wouldn't call the custom encoding method, which is obviously very limiting.

This PR makes simply adds a fail-safe by getting an indirect reflection value of the existing value, checking it's validity, and initializing the pointed with a proper zero value before calling the EncodeValues method on it.

if so, making sure to initialize the reflected value with the type's
expected zero-value before attempting to call the interface method.

This prevents panics due to invocation through reflection, such as:
"value method query.EncodedArgs.EncodeValues called using nil *EncodedArgs pointer"
@googlebot
Copy link

Thanks for your pull request. It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

📝 Please visit https://cla.developers.google.com/ to sign.

Once you've signed, please reply here (e.g. I signed it!) and we'll verify. Thanks.


  • If you've already signed a CLA, it's possible we don't have your GitHub username or you're using a different email address. Check your existing CLA data and verify that your email is set on your git commits.
  • If you signed the CLA as a corporation, please let us know the company's name.

@Rican7
Copy link
Contributor Author

Rican7 commented Oct 28, 2015

I signed it!

@googlebot
Copy link

CLAs look good, thanks!

@willnorris
Copy link
Collaborator

looks great, thanks! Squashed commits and merged as 2a60fc2

@Rican7
Copy link
Contributor Author

Rican7 commented Oct 28, 2015

Wow! That was fast! Thanks!

@Rican7 Rican7 deleted the bugfix/invalid-call-to-value-method-with-nil-pointer branch October 28, 2015 21:12
abdulhannanali pushed a commit to abdulhannanali/go-querystring that referenced this pull request Mar 31, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants