8170525: Fix minor issues in AWT/ECC/PKCS11 coding
authorgoetz
Wed, 30 Nov 2016 13:51:41 +0100
changeset 42455 a66ed8458668
parent 42454 eadc463e16db
child 42456 c328a7d6688e
8170525: Fix minor issues in AWT/ECC/PKCS11 coding Reviewed-by: vinnie, clanger, prr, ssadetsky
jdk/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c
jdk/src/java.desktop/unix/native/common/awt/fontpath.c
jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c
jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c
jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c
jdk/src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c
jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c
jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c
jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c
jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c
jdk/src/jdk.crypto.pkcs11/share/native/libj2pkcs11/p11_mutex.c
--- a/jdk/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c	Wed Nov 30 13:51:41 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -72,6 +72,7 @@
     unsigned char *pixelPtr;
     SurfaceDataRasInfo lockInfo;
     SurfaceDataOps *ops;
+    lockInfo.rasBase = NULL;
 
     ops = SurfaceData_GetOps(env, sd);
     JNU_CHECK_EXCEPTION_RETURN(env, -1);
@@ -113,7 +114,7 @@
     SurfaceDataRasInfo lockInfo;
     SurfaceDataOps *ops;
     unsigned char *pixelPtr;
-
+    lockInfo.rasBase = NULL;
 
     ops = SurfaceData_GetOps(env, sd);
     JNU_CHECK_EXCEPTION(env);
--- a/jdk/src/java.desktop/unix/native/common/awt/fontpath.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/java.desktop/unix/native/common/awt/fontpath.c	Wed Nov 30 13:51:41 2016 +0100
@@ -243,8 +243,8 @@
 
         appendDirList[index] = 0;
         if ( doNotAppend == 0 ) {
-            strcpy ( fontDirPath, fDirP->name[index] );
-            strcat ( fontDirPath, "/fonts.dir" );
+            snprintf(fontDirPath, sizeof(fontDirPath), "%s/fonts.dir", fDirP->name[index]);
+            fontDirPath[sizeof(fontDirPath) - 1] = '\0';
             dirFile = open ( fontDirPath, O_RDONLY, 0 );
             if ( dirFile == -1 ) {
                 doNotAppend = 1;
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c	Wed Nov 30 13:51:41 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -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);
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c	Wed Nov 30 13:51:41 2016 +0100
@@ -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 = 1;
 
     switch (color_type)
     {
@@ -2266,7 +2265,6 @@
 {
 
     gint result = 0;
-    GdkRGBA color;
 
     GtkStateFlags flags = gtk3_get_state_flags(state_type);
 
@@ -2285,7 +2283,7 @@
                   | GTK_STATE_FLAG_INSENSITIVE | GTK_STATE_FLAG_FOCUSED;
     }
 
-    color = gtk3_get_color_for_flags(context, flags, color_type);
+    GdkRGBA color = gtk3_get_color_for_flags(context, flags, color_type);
 
     if (recode_color(color.alpha) == 0) {
         color = gtk3_get_color_for_flags(
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c	Wed Nov 30 13:51:41 2016 +0100
@@ -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;
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c	Wed Nov 30 13:51:41 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -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.
--- a/jdk/src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c	Wed Nov 30 13:51:41 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -809,7 +809,7 @@
 #ifndef __linux__
     return JNI_FALSE;
 #endif
-    *scaleFactor = getNativeScaleFactor(NULL);
+    *scaleFactor = (float)getNativeScaleFactor(NULL);
     return GetScaledImageName(fileName, scaledImgName, scaleFactor, scaledImageNameLength);
 }
 
--- a/jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c	Wed Nov 30 13:51:41 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
  * This library is free software; you can redistribute it and/or
@@ -34,7 +34,7 @@
  *   Dr Vipul Gupta <vipul.gupta@sun.com> and
  *   Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
  *
- * Last Modified Date from the Original Code: April 2015
+ * Last Modified Date from the Original Code: Nov 2016
  *********************************************************************** */
 
 #include "mplogic.h"
@@ -258,6 +258,7 @@
 #if EC_DEBUG
     printf("ec_NewKey called\n");
 #endif
+    k.dp = (mp_digit*)NULL;
 
     if (!ecParams || !privKey || !privKeyBytes || (privKeyLen < 0)) {
         PORT_SetError(SEC_ERROR_INVALID_ARGS);
--- a/jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c	Wed Nov 30 13:51:41 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
  * This library is free software; you can redistribute it and/or
@@ -34,7 +34,7 @@
  *   Dr Vipul Gupta <vipul.gupta@sun.com> and
  *   Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
  *
- * Last Modified Date from the Original Code: March 2012
+ * Last Modified Date from the Original Code: Nov 2016
  *********************************************************************** */
 
 #include <sys/types.h>
@@ -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) {
--- a/jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c	Wed Nov 30 13:51:41 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
  * This library is free software; you can redistribute it and/or
@@ -33,6 +33,7 @@
  * Contributor(s):
  *   Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
  *
+ * Last Modified Date from the Original Code: Nov 2016
  *********************************************************************** */
 
 #include "mpi.h"
@@ -72,6 +73,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 +84,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));
                 }
         }
--- a/jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c	Wed Nov 30 13:51:41 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
  * This library is free software; you can redistribute it and/or
@@ -34,7 +34,7 @@
  *   Netscape Communications Corporation
  *   Douglas Stebila <douglas@stebila.ca> of Sun Laboratories.
  *
- * Last Modified Date from the Original Code: June 2014
+ * Last Modified Date from the Original Code: Nov 2016
  *********************************************************************** */
 
 /*  Arbitrary precision integer arithmetic library */
@@ -659,6 +659,7 @@
       goto CLEANUP;
   }
 
+  s.flag = (mp_sign)0;
   s_mp_exch(&s, c);
 
 CLEANUP:
@@ -1609,6 +1610,7 @@
       goto CLEANUP;
   }
 
+  s.flag = (mp_sign)0;
   s_mp_exch(&s, c);
 
 CLEANUP:
@@ -4183,6 +4185,7 @@
 {
   mp_err   res;
   mp_int   tmp;
+  tmp.flag = (mp_sign)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 *)NULL;
+
   if(mp_cmp_z(div) == 0)
     return MP_RANGE;
 
--- a/jdk/src/jdk.crypto.pkcs11/share/native/libj2pkcs11/p11_mutex.c	Thu Dec 08 07:21:50 2016 -0800
+++ b/jdk/src/jdk.crypto.pkcs11/share/native/libj2pkcs11/p11_mutex.c	Wed Nov 30 13:51:41 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  */
 
 /* Copyright  (c) 2002 Graz University of Technology. All rights reserved.
@@ -95,6 +95,8 @@
         throwOutOfMemoryError(env, 0);
         return NULL_PTR;
     }
+    ckpInitArgs->flags = (CK_FLAGS)0;
+    ckpInitArgs->pReserved = (CK_VOID_PTR)NULL;
 
     /* Set the mutex functions that will call the Java mutex functions, but
      * only set it, if the field is not null.