Skip to content

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

New issue

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

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

Already on GitHub? # to your account

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
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants