On Mon, 25 Aug 2025 13:26:10 GMT, Artem Semenov <aseme...@openjdk.org> wrote:
>> The defect has been detected and confirmed in the function >> OGLBlitToSurfaceViaTexture() located in the file >> src/java.desktop/share/native/common/java2d/opengl/OGLBlitLoops.c with >> static code analysis. This defect can potentially lead to a null pointer >> dereference. >> >> The pointer pf is dereferenced in line 324 without checking for nullptr, >> although earlier in line 274 the same pointer is checked for nullptr, which >> indicates that it can be null. >> >> In the same file, line 551 calls OGLBlitToSurfaceViaTexture() from line 263, >> where NULL is passed in place of pf. >> All other calls are fine. >> >> Also, another function with a similar issue from the same file, >> OGLBlitSwToTexture() from line 396. >> >> In src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c gtk3_load() >> The pointer fp_glib_check_version can be null, but it is dereferenced >> without any check. Although in the same file, for example, line 280 contains >> a check, this check does not lead to termination of execution. >> >> >> In src/java.desktop/share/native/libsplashscreen/splashscreen_gif.c >> SplashDecodeGif() >> The pointer colorMap is dereferenced after it has been checked against >> nullptr in lines 151 and 206. Moreover, between these checks and the >> mentioned location (line 282), the pointer is not modified in any way. >> >> According to >> [this](https://github.com/openjdk/jdk/pull/26002#issuecomment-3023050372) >> comment, this PR contains fixes for similar cases in other places. > > Artem Semenov has updated the pull request incrementally with two additional > commits since the last revision: > > - Updated fix fore > src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c gtk3_load() > - Revert "The same issue is present in > src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c gtk3_load()" > > This reverts commit a369e3af3abb11eb1163c1ea461e1558b8838551. src/java.desktop/share/native/common/java2d/opengl/OGLBlitLoops.c line 325: > 323: sy, srcInfo->scanStride); > 324: if (pf != NULL) { > 325: if > (slowPath) { The current indentation does seem to be off. GLvoid *pSrc = PtrCoord(srcInfo->rasBase, sx, srcInfo->pixelStride, sy, srcInfo->scanStride); if (pf) { if (slowPath) { jint tmph = sh; while (tmph > 0) { ... The same applies to the other added if statement. src/java.desktop/share/native/libsplashscreen/splashscreen_gif.c line 283: > 281: > 282: if (((colorMap != NULL) && (colorMap->Colors != NULL)) && > 283: (transparentColor < 0)) { Suggestion: if (colorMap != NULL && colorMap->Colors != NULL && transparentColor < 0) { or even Suggestion: if (colorMap && colorMap->Colors && transparentColor < 0) { ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26799#discussion_r2307305381 PR Review Comment: https://git.openjdk.org/jdk/pull/26799#discussion_r2307278440