OpenJDK / amber / amber
changeset 58146:3a5f417e68a1
8231445: check ZALLOC return values in awt coding
Reviewed-by: clanger, prr
author | mbaesken |
---|---|
date | Wed, 25 Sep 2019 09:15:43 +0200 |
parents | d322bf161e31 |
children | 146bb7afdcf4 |
files | src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c |
diffstat | 1 files changed, 50 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c Thu Sep 26 09:16:08 2019 +0200 +++ b/src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c Wed Sep 25 09:15:43 2019 +0200 @@ -166,6 +166,10 @@ int id = -1; VisualID defaultVisual = XVisualIDFromVisual(DefaultVisual(awt_display, vinfo->screen)); defaultConfig = ZALLOC(_AwtGraphicsConfigData); + if (defaultConfig == NULL) { + XFree(visualList); + return NULL; + } for (i = 0; i < visualsMatched; i++) { memcpy(&defaultConfig->awt_visInfo, &visualList[i], sizeof(XVisualInfo)); defaultConfig->awt_depth = visualList[i].depth; @@ -447,8 +451,12 @@ } else { ind = nConfig++; } - graphicsConfigs [ind] = ZALLOC (_AwtGraphicsConfigData); - graphicsConfigs [ind]->awt_depth = pVITrue [i].depth; + graphicsConfigs[ind] = ZALLOC (_AwtGraphicsConfigData); + if (graphicsConfigs[ind] == NULL) { + JNU_ThrowOutOfMemoryError(env, "allocation in getAllConfigs failed"); + goto cleanup; + } + graphicsConfigs[ind]->awt_depth = pVITrue [i].depth; memcpy (&graphicsConfigs [ind]->awt_visInfo, &pVITrue [i], sizeof (XVisualInfo)); if (xrenderFindVisualFormat != NULL) { @@ -482,8 +490,12 @@ } else { ind = nConfig++; } - graphicsConfigs [ind] = ZALLOC (_AwtGraphicsConfigData); - graphicsConfigs [ind]->awt_depth = pVI8p [i].depth; + graphicsConfigs[ind] = ZALLOC (_AwtGraphicsConfigData); + if (graphicsConfigs[ind] == NULL) { + JNU_ThrowOutOfMemoryError(env, "allocation in getAllConfigs failed"); + goto cleanup; + } + graphicsConfigs[ind]->awt_depth = pVI8p [i].depth; memcpy (&graphicsConfigs [ind]->awt_visInfo, &pVI8p [i], sizeof (XVisualInfo)); } @@ -495,8 +507,12 @@ } else { ind = nConfig++; } - graphicsConfigs [ind] = ZALLOC (_AwtGraphicsConfigData); - graphicsConfigs [ind]->awt_depth = pVI12p [i].depth; + graphicsConfigs[ind] = ZALLOC (_AwtGraphicsConfigData); + if (graphicsConfigs[ind] == NULL) { + JNU_ThrowOutOfMemoryError(env, "allocation in getAllConfigs failed"); + goto cleanup; + } + graphicsConfigs[ind]->awt_depth = pVI12p [i].depth; memcpy (&graphicsConfigs [ind]->awt_visInfo, &pVI12p [i], sizeof (XVisualInfo)); } @@ -508,8 +524,12 @@ } else { ind = nConfig++; } - graphicsConfigs [ind] = ZALLOC (_AwtGraphicsConfigData); - graphicsConfigs [ind]->awt_depth = pVI8s [i].depth; + graphicsConfigs[ind] = ZALLOC (_AwtGraphicsConfigData); + if (graphicsConfigs[ind] == NULL) { + JNU_ThrowOutOfMemoryError(env, "allocation in getAllConfigs failed"); + goto cleanup; + } + graphicsConfigs[ind]->awt_depth = pVI8s [i].depth; memcpy (&graphicsConfigs [ind]->awt_visInfo, &pVI8s [i], sizeof (XVisualInfo)); } @@ -521,8 +541,12 @@ } else { ind = nConfig++; } - graphicsConfigs [ind] = ZALLOC (_AwtGraphicsConfigData); - graphicsConfigs [ind]->awt_depth = pVI8gs [i].depth; + graphicsConfigs[ind] = ZALLOC (_AwtGraphicsConfigData); + if (graphicsConfigs[ind] == NULL) { + JNU_ThrowOutOfMemoryError(env, "allocation in getAllConfigs failed"); + goto cleanup; + } + graphicsConfigs[ind]->awt_depth = pVI8gs [i].depth; memcpy (&graphicsConfigs [ind]->awt_visInfo, &pVI8gs [i], sizeof (XVisualInfo)); } @@ -534,8 +558,12 @@ } else { ind = nConfig++; } - graphicsConfigs [ind] = ZALLOC (_AwtGraphicsConfigData); - graphicsConfigs [ind]->awt_depth = pVI8sg [i].depth; + graphicsConfigs[ind] = ZALLOC (_AwtGraphicsConfigData); + if (graphicsConfigs[ind] == NULL) { + JNU_ThrowOutOfMemoryError(env, "allocation in getAllConfigs failed"); + goto cleanup; + } + graphicsConfigs[ind]->awt_depth = pVI8sg [i].depth; memcpy (&graphicsConfigs [ind]->awt_visInfo, &pVI8sg [i], sizeof (XVisualInfo)); } @@ -547,12 +575,20 @@ } else { ind = nConfig++; } - graphicsConfigs [ind] = ZALLOC (_AwtGraphicsConfigData); - graphicsConfigs [ind]->awt_depth = pVI1sg [i].depth; + graphicsConfigs[ind] = ZALLOC (_AwtGraphicsConfigData); + if (graphicsConfigs[ind] == NULL) { + JNU_ThrowOutOfMemoryError(env, "allocation in getAllConfigs failed"); + goto cleanup; + } + graphicsConfigs[ind]->awt_depth = pVI1sg [i].depth; memcpy (&graphicsConfigs [ind]->awt_visInfo, &pVI1sg [i], sizeof (XVisualInfo)); } + screenDataPtr->numConfigs = nConfig; + screenDataPtr->configs = graphicsConfigs; + +cleanup: if (n8p != 0) XFree (pVI8p); if (n12p != 0) @@ -566,9 +602,6 @@ if (n1sg != 0) XFree (pVI1sg); - screenDataPtr->numConfigs = nConfig; - screenDataPtr->configs = graphicsConfigs; - AWT_UNLOCK (); }