# HG changeset patch # User goetz # Date 1480510301 -3600 # Node ID 1c5ecaf916c027274309dc4e074d1556e8ec2cf7 # Parent ff45c582ca8a3747ce24f0137029e4dcb05f863f 8170525: Fix minor issues in awt coding diff --git a/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c b/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c --- a/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c +++ b/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c @@ -72,6 +72,7 @@ unsigned char *pixelPtr; SurfaceDataRasInfo lockInfo; SurfaceDataOps *ops; + lockInfo.resBase = NULL; ops = SurfaceData_GetOps(env, sd); JNU_CHECK_EXCEPTION_RETURN(env, -1); diff --git a/src/java.desktop/unix/native/common/awt/fontpath.c b/src/java.desktop/unix/native/common/awt/fontpath.c --- a/src/java.desktop/unix/native/common/awt/fontpath.c +++ b/src/java.desktop/unix/native/common/awt/fontpath.c @@ -243,8 +243,9 @@ appendDirList[index] = 0; if ( doNotAppend == 0 ) { - strcpy ( fontDirPath, fDirP->name[index] ); - strcat ( fontDirPath, "/fonts.dir" ); + strncpy(fontDirPath, fDirP->name[index], sizeof(fontDirPath)); + fontDirPath[sizeof(fontDirPath)-1] = '\0'; + strncat(fontDirPath, "/fonts.dir", sizeof(fontDirPath) - strlen(fontDirPath)); dirFile = open ( fontDirPath, O_RDONLY, 0 ); if ( dirFile == -1 ) { doNotAppend = 1; diff --git a/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c b/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c --- a/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c +++ b/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c @@ -1235,12 +1235,14 @@ if (status_draw->type == XIMTextType){ XIMText *text = (status_draw->data).text; if (text != NULL){ - if (text->string.multi_byte != NULL){ - strcpy(statusWindow->status, text->string.multi_byte); + if (text->string.multi_byte != NULL) { + strncpy(statusWindow->status, text->string.multi_byte, MAX_STATUS_LEN); + statusWindow->status[MAX_STATUS_LEN-1] = '\0'; } - else{ + else { char *mbstr = wcstombsdmp(text->string.wide_char, text->length); - strcpy(statusWindow->status, mbstr); + strncpy(statusWindow->status, mbstr, MAX_STATUS_LEN); + statusWindow->status[MAX_STATUS_LEN-1] = '\0'; } statusWindow->on = True; onoffStatusWindow(pX11IMData, statusWindow->parent, True); diff --git a/src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c b/src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c --- a/src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c +++ b/src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c @@ -2014,9 +2014,7 @@ static guint8 recode_color(gdouble channel) { guint16 result = (guint16)(channel * 65535); - if (result < 0) { - result = 0; - } else if (result > 65535) { + if (result > 65535) { result = 65535; } return (guint8)( result >> 8); @@ -2218,6 +2216,7 @@ static GdkRGBA gtk3_get_color_for_flags(GtkStyleContext* context, GtkStateFlags flags, ColorType color_type) { GdkRGBA c, color; + color.alpha = 0; switch (color_type) { diff --git a/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c b/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c --- a/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c +++ b/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c @@ -567,7 +567,7 @@ */ static uint32_t get_poll_timeout(jlong nextTaskTime) { - uint32_t ret_timeout; + uint32_t ret_timeout = 0; uint32_t timeout; uint32_t taskTimeout; uint32_t flushTimeout; diff --git a/src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c b/src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c --- a/src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c +++ b/src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c @@ -863,10 +863,10 @@ } static void dumpKeysymArray(XEvent *event) { - printf(" 0x%X\n",keycodeToKeysym(event->xkey.display, event->xkey.keycode, 0)); - printf(" 0x%X\n",keycodeToKeysym(event->xkey.display, event->xkey.keycode, 1)); - printf(" 0x%X\n",keycodeToKeysym(event->xkey.display, event->xkey.keycode, 2)); - printf(" 0x%X\n",keycodeToKeysym(event->xkey.display, event->xkey.keycode, 3)); + printf(" 0x%lX\n", (unsigned long)keycodeToKeysym(event->xkey.display, event->xkey.keycode, 0)); + printf(" 0x%lX\n", (unsigned long)keycodeToKeysym(event->xkey.display, event->xkey.keycode, 1)); + printf(" 0x%lX\n", (unsigned long)keycodeToKeysym(event->xkey.display, event->xkey.keycode, 2)); + printf(" 0x%lX\n", (unsigned long)keycodeToKeysym(event->xkey.display, event->xkey.keycode, 3)); } /* * In a next redesign, get rid of this code altogether. diff --git a/src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c b/src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c --- a/src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c +++ b/src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c @@ -809,7 +809,7 @@ #ifndef __linux__ return JNI_FALSE; #endif - *scaleFactor = getNativeScaleFactor(NULL); + *scaleFactor = (float)getNativeScaleFactor(NULL); return GetScaledImageName(fileName, scaledImgName, scaleFactor, scaledImageNameLength); } diff --git a/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c b/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c --- a/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c +++ b/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c @@ -258,6 +258,7 @@ #if EC_DEBUG printf("ec_NewKey called\n"); #endif + k.dp = (mp_digit)0; if (!ecParams || !privKey || !privKeyBytes || (privKeyLen < 0)) { PORT_SetError(SEC_ERROR_INVALID_ARGS); diff --git a/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c b/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c --- a/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c +++ b/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c @@ -119,6 +119,9 @@ params->name = name; curveParams = ecCurve_map[params->name]; CHECK_OK(curveParams); + if ((strlen(curveParams->genx) + strlen(curveParams->geny)) > 2 * 2 * MAX_ECKEY_LEN) { + goto cleanup; + } params->fieldID.size = curveParams->size; params->fieldID.type = field_type; if (field_type == ec_field_GFp) { diff --git a/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c b/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c --- a/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c +++ b/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c @@ -72,6 +72,7 @@ if (group->base_point_mul) { MP_CHECKOK(group->base_point_mul(&kt, rx, ry, group)); } else { + kt.flag = (mp_sign)0; MP_CHECKOK(group-> point_mul(&kt, &group->genx, &group->geny, rx, ry, group)); @@ -82,6 +83,7 @@ MP_CHECKOK(group->meth->field_enc(py, ry, group->meth)); MP_CHECKOK(group->point_mul(&kt, rx, ry, rx, ry, group)); } else { + kt.flag = (mp_sign)0; MP_CHECKOK(group->point_mul(&kt, px, py, rx, ry, group)); } } diff --git a/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c b/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c --- a/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c +++ b/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c @@ -659,6 +659,7 @@ goto CLEANUP; } + s.flag = (mp_flag)0; s_mp_exch(&s, c); CLEANUP: @@ -1609,6 +1610,7 @@ goto CLEANUP; } + s.flag = (mp_flag)0; s_mp_exch(&s, c); CLEANUP: @@ -4183,6 +4185,7 @@ { mp_err res; mp_int tmp; + tmp.flag = (mp_flag)0; if((res = mp_init_size(&tmp, 2 * USED(a), FLAG(a))) != MP_OKAY) return res; @@ -4220,6 +4223,8 @@ mp_digit div_msd; int ix; + t.dp = (mp_digit)0; + if(mp_cmp_z(div) == 0) return MP_RANGE;