Copy the return value using g_value_copy in goMarshal to avoid double free and invalid memory reads #9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a PR that attempt to fix a double free and invalid memory access when registering a signal that returns a GValue. The Go signal marshaller currently does a shallow copy of the GValue (
g
) created from the native Go type into the returned GValue (retValue
). If the GValue backs a type that requires deallocation (such as a string), this inner value payload will be deallocated twice, once wheng
gets deallocated, and once whenretValue
does. The PR suggests callingg_value_copy
to do a deep copy of the GValue instead.