[PATCH resend2] 8145278: Fix memory leak in splitPathList
Dmitry Samersoff
dmitry.samersoff at oracle.com
Tue Apr 12 21:12:51 UTC 2016
Alex,
The fix looks good for me.
-Dmitry
On 2016-04-12 22:28, Alex Henrie wrote:
> # HG changeset patch
> # User Alex Henrie <alexhenrie24 at gmail.com>
> # Date 1447827030 25200
> # Tue Nov 17 23:10:30 2015 -0700
> # Node ID 66c6fa3b2280afa12a2d51ea668b6a781b5744b5
> # Parent 1f8c4b1a301c989dc299cad63dbc530b1de3ed70
> 8145278: Fix memory leak in splitPathList
>
> diff --git a/src/java.instrument/share/native/libinstrument/InvocationAdapter.c b/src/java.instrument/share/native/libinstrument/InvocationAdapter.c
> --- a/src/java.instrument/share/native/libinstrument/InvocationAdapter.c
> +++ b/src/java.instrument/share/native/libinstrument/InvocationAdapter.c
> @@ -513,28 +513,32 @@ eventHandlerClassFileLoadHook( jvmtiEnv
> * The attribute value is in UTF8 but cannot contain NUL. Also non US-ASCII
> * characters must be escaped (URI syntax) so safe to iterate through the
> * value as a C string.
> */
> static void
> splitPathList(const char* str, int* pathCount, char*** paths) {
> int count = 0;
> char** segments = NULL;
> + char** new_segments;
> char* c = (char*) str;
> while (*c != '\0') {
> while (*c == ' ') c++; /* skip leading spaces */
> if (*c == '\0') {
> break;
> }
> - if (segments == NULL) {
> - segments = (char**)malloc( sizeof(char**) );
> - } else {
> - segments = (char**)realloc( segments, (count+1)*sizeof(char**) );
> + new_segments = (char**)realloc(segments, (count+1)*sizeof(char*));
> + if (new_segments == NULL) {
> + jplis_assert(0);
> + free(segments);
> + count = 0;
> + segments = NULL;
> + break;
> }
> - jplis_assert(segments != (char**)NULL);
> + segments = new_segments;
> segments[count++] = c;
> c = strchr(c, ' ');
> if (c == NULL) {
> break;
> }
> *c = '\0';
> c++;
> }
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.
More information about the serviceability-dev
mailing list