Skip to content

Add null pointer test to String destructor #435

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

Merged
merged 1 commit into from
Sep 16, 2019

Conversation

jrowberg
Copy link
Contributor

A rare but possible null pointer dereference occurs when a String object is destroyed after either a failed initialization or intentional invalidation. Adding a simple if (buffer) test before freeing it avoids this failure case.

@matthijskooijman
Copy link
Collaborator

I do not think this is needed, libc defines free(null) as a noop. From the free(3) manpage:

   The free() function frees the memory space pointed to by ptr, which must have been returned by a previous call to malloc(), calloc(), or realloc().  Otherwise, or if  free(ptr)  has  already  been
   called before, undefined behavior occurs.  If ptr is NULL, no operation is performed.

I see this PR was already reverted by @lxrobotics, possibly for this reason?

@aentinger
Copy link
Contributor

@matthijskooijman you're right, according to spec free does nothing if the provided argument is 0.

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.

3 participants