# HG changeset patch # User kcr # Date 1484677599 28800 # Tue Jan 17 10:26:39 2017 -0800 # Node ID b5794934f15295e88d060c71d436696786a3736a # Parent 77e540c6135d5e49827c46df0da25254981de7a9 imported patch 8u121.patch diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -414,6 +414,7 @@ 7f0d1bb7901badf039761543065665c8aed75b0c 8u111-b03 6610739150fe19aa465492d3c2ead64fadde9321 8u111-b04 384f79ad579eb00df81bcbf8d8fa5103c36a7915 8u111-b05 +3767106c5c531fc9321eee55262849b9d1a99c63 8u121-b00 3767106c5c531fc9321eee55262849b9d1a99c63 8u111-b06 a1f3aa1600a6fb00ff67cf5c763cd7c8f6fc2151 8u112-b06 b47ade41b48c2da9b24dedd55a4354a43ea7c62f 8u111-b07 @@ -429,6 +430,7 @@ 9ee07f5dd9180d18d97efb67bdf8600f71f109a3 8u111-b12 aab3792be1a6f19c70c9b6424c3d6dc8e59df244 8u112-b12 7c6213d0a944b12c4388b72b2a38d5769c6d1aa3 8u112-b13 +45dce7b92b5009214dd0218b0d15b8e773a8c91a 8u121-b01 cfba20552be3951a8ff59606a1c6d13031c87cb6 8u111-b13 6bb489cd29f48f6dbd82efa06caf1e14f7faca67 8u111-b14 76477a1436ba451006ffa94652030e9cd702e896 8u112-b14 @@ -437,3 +439,15 @@ f7aa09aaff901d7464f2d91f3b000f54db3b68e0 8u122-b04 5151b4f818aff65afe8effd15a81ce1d52cf28dc 8u132-b00 4412a03e297b3f926df002328a18253f51d9c266 8u152-b00 +62dce21be0687dcc8afb393b204bd8d60b6060f1 8u121-b02 +665b7c1d1a028da9175a40f373427c0d6926dacc 8u121-b03 +fb9497596481489db67141055828b3645efb9709 8u121-b04 +ce0b6eb2bac188d57fcb5d2b17d7ef1d3a8bca74 8u121-b05 +8d72770b92f56dbde8623ff7dd723e32e25fc1b1 8u121-b06 +7b5317587fb1f0947efea6173528cbe423825292 8u121-b07 +9bf1f9b3ce97149d07b901f98c5bc6281f287a51 8u121-b08 +61ec484e932dafe492d7d5ca1a72ef79a4ad5075 8u121-b09 +364568b7dd4c3794443590c21e84c2c11de0e4a8 8u121-b10 +364568b7dd4c3794443590c21e84c2c11de0e4a8 8u121-b11 +6ed4c95ee5c55f7d1896aac5ea87830acb9ea721 8u121-b12 +69c9b18177f4be4276ef079cc7733543c45344a3 8u121-b13 diff --git a/buildSrc/win.gradle b/buildSrc/win.gradle --- a/buildSrc/win.gradle +++ b/buildSrc/win.gradle @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 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 @@ -112,7 +112,8 @@ "/I$JDK_HOME/include", "/I$JDK_HOME/include/win32", ccDebugFlags].flatten(); -def linkFlags = ["/nologo", "/dll", "/manifest", "/opt:REF", "/incremental:no"]; +def linkFlags = ["/nologo", "/dll", "/manifest", "/opt:REF", "/incremental:no", "/dynamicbase", "/nxcompat"]; +if (!IS_64) linkFlags.add("/safeseh"); if (IS_DEBUG_NATIVE) linkFlags.add("/debug"); // Remove C++ static linking if not on VS2010 diff --git a/modules/graphics/src/main/java/com/sun/pisces/JavaSurface.java b/modules/graphics/src/main/java/com/sun/pisces/JavaSurface.java --- a/modules/graphics/src/main/java/com/sun/pisces/JavaSurface.java +++ b/modules/graphics/src/main/java/com/sun/pisces/JavaSurface.java @@ -35,6 +35,10 @@ public JavaSurface(int[] dataInt, int dataType, int width, int height) { super(width, height); + if (dataInt.length / width < height) { + throw new IllegalArgumentException("width(=" + width + ") * height(=" + + height + ") is greater than dataInt.length(=" + dataInt.length + ")"); + } this.dataInt = dataInt; this.dataBuffer = IntBuffer.wrap(this.dataInt); diff --git a/modules/graphics/src/main/native-prism-sw/JJavaSurface.c b/modules/graphics/src/main/native-prism-sw/JJavaSurface.c --- a/modules/graphics/src/main/native-prism-sw/JJavaSurface.c +++ b/modules/graphics/src/main/native-prism-sw/JJavaSurface.c @@ -125,17 +125,36 @@ static void surface_acquire(AbstractSurface* surface, JNIEnv* env, jobject surfaceHandle) { + jint width = 0; + jint height = 0; + jint dataArrayLength = 0; + ((JavaSurface *) surface)->dataHandle = (*env)->GetObjectField(env, surfaceHandle, ((JavaSurface *) surface)->javaArrayFieldID); + + dataArrayLength = (*env)->GetArrayLength(env, ((JavaSurface *) surface)->dataHandle); + + width = surface->super.width; + height = surface->super.height; + if (width < 0 || height < 0 || dataArrayLength / width < height) { + // Set data to NULL indicating invalid width and height + surface->super.data = NULL; + ((JavaSurface *) surface)->dataHandle = NULL; + JNI_ThrowNew(env, "java/lang/IllegalArgumentException", "Out of range access of buffer"); + return; + } + surface->super.data = (void *)(*env)->GetPrimitiveArrayCritical(env, ((JavaSurface *) surface)->dataHandle, NULL); if (surface->super.data == NULL) { + ((JavaSurface *) surface)->dataHandle = NULL; setMemErrorFlag(); } } static void surface_release(AbstractSurface* surface, JNIEnv* env, jobject surfaceHandle) { + if (surface->super.data == NULL) return; (*env)->ReleasePrimitiveArrayCritical(env, ((JavaSurface *) surface)->dataHandle, surface->super.data, 0); ((JavaSurface *) surface)->dataHandle = NULL; } diff --git a/modules/graphics/src/main/native-prism-sw/PiscesSurface.inl b/modules/graphics/src/main/native-prism-sw/PiscesSurface.inl --- a/modules/graphics/src/main/native-prism-sw/PiscesSurface.inl +++ b/modules/graphics/src/main/native-prism-sw/PiscesSurface.inl @@ -49,6 +49,7 @@ static INLINE void surface_setRGB(Surface* dstSurface, jint x, jint y, jint width, jint height, jint* data, jint scanLength) { + if (dstSurface->data == NULL) return; setRGB((jint*)dstSurface->data + y * dstSurface->width + x, dstSurface->width, data, scanLength, width, height); } diff --git a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/garray.c b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/garray.c --- a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/garray.c +++ b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/garray.c @@ -862,6 +862,10 @@ GRealPtrArray* rarray = (GRealPtrArray*) array; g_return_if_fail (array); +#ifdef GSTREAMER_LITE + if (array == NULL) + return; +#endif // GSTREAMER_LITE rarray->element_free_func = element_free_func; } diff --git a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gmain.c b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gmain.c --- a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gmain.c +++ b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gmain.c @@ -1138,6 +1138,11 @@ g_return_if_fail (fd != NULL); g_return_if_fail (!SOURCE_DESTROYED (source)); +#ifdef GSTREAMER_LITE + if (source == NULL) + return; +#endif // GSTREAMER_LITE + context = source->context; if (context) @@ -1171,6 +1176,11 @@ g_return_if_fail (fd != NULL); g_return_if_fail (!SOURCE_DESTROYED (source)); +#ifdef GSTREAMER_LITE + if (source == NULL) + return; +#endif // GSTREAMER_LITE + context = source->context; if (context) @@ -1389,6 +1399,10 @@ GSourceCallback *new_callback; g_return_if_fail (source != NULL); +#ifdef GSTREAMER_LITE + if (source == NULL) + return; +#endif // GSTREAMER_LITE new_callback = g_new (GSourceCallback, 1); @@ -1480,6 +1494,11 @@ { GMainContext *context; +#ifdef GSTREAMER_LITE + if (source == NULL || source->priv == NULL || source->priv->parent_source == NULL) + return; +#endif // GSTREAMER_LITE + g_return_if_fail (source != NULL); context = source->context; @@ -1741,6 +1760,10 @@ g_source_unref (GSource *source) { g_return_if_fail (source != NULL); +#ifdef GSTREAMER_LITE + if (source == NULL) + return; +#endif // GSTREAMER_LITE g_source_unref_internal (source, source->context, FALSE); } @@ -3931,6 +3954,10 @@ g_timeout_source_new (guint interval) { GSource *source = g_source_new (&g_timeout_funcs, sizeof (GTimeoutSource)); +#ifdef GSTREAMER_LITE + if (source == NULL) + return NULL; +#endif // GSTREAMER_LITE GTimeoutSource *timeout_source = (GTimeoutSource *)source; timeout_source->interval = interval; @@ -3939,6 +3966,7 @@ return source; } +#ifndef GSTREAMER_LITE /** * g_timeout_source_new_seconds: * @interval: the timeout interval in seconds @@ -3969,7 +3997,7 @@ return source; } - +#endif // GSTREAMER_LITE /** * g_timeout_add_full: @@ -4013,6 +4041,10 @@ g_return_val_if_fail (function != NULL, 0); source = g_timeout_source_new (interval); +#ifdef GSTREAMER_LITE + if (source == NULL) + return 0; +#endif // GSTREAMER_LITE if (priority != G_PRIORITY_DEFAULT) g_source_set_priority (source, priority); @@ -4063,6 +4095,7 @@ interval, function, data, NULL); } +#ifndef GSTREAMER_LITE /** * g_timeout_add_seconds_full: * @priority: the priority of the timeout source. Typically this will be in @@ -4164,6 +4197,7 @@ return g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, interval, function, data, NULL); } +#endif // GSTREAMER_LITE /* Child watch functions */ @@ -4431,6 +4465,11 @@ GSource *source = g_source_new (&g_child_watch_funcs, sizeof (GChildWatchSource)); GChildWatchSource *child_watch_source = (GChildWatchSource *)source; +#ifdef GSTREAMER_LITE + if (source == NULL) + return NULL; +#endif // GSTREAMER_LITE + #ifdef G_OS_WIN32 child_watch_source->poll.fd = (gintptr) pid; child_watch_source->poll.events = G_IO_IN; diff --git a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gutils.c b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gutils.c --- a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gutils.c +++ b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gutils.c @@ -1590,6 +1590,10 @@ return g_strdup ("C:\\"); p = (char *) g_path_skip_root (windowsdir); +#ifdef GSTREAMER_LITE + if (p == NULL) + return g_strdup ("C:\\"); +#endif // GSTREAMER_LITE if (G_IS_DIR_SEPARATOR (p[-1]) && p[-2] != ':') p--; *p = '\0'; diff --git a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gvariant.c b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gvariant.c --- a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gvariant.c +++ b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gvariant.c @@ -2605,6 +2605,7 @@ return GVSI(iter)->n; } +#ifndef GSTREAMER_LITE /** * g_variant_iter_copy: * @iter: a #GVariantIter @@ -2641,6 +2642,7 @@ return copy; } +#endif // GSTREAMER_LITE /** * g_variant_iter_n_children: diff --git a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gvariant.h b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gvariant.h --- a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gvariant.h +++ b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/glib/gvariant.h @@ -179,7 +179,9 @@ GVariantIter * g_variant_iter_new (GVariant *value); gsize g_variant_iter_init (GVariantIter *iter, GVariant *value); +#ifndef GSTREAMER_LITE GVariantIter * g_variant_iter_copy (GVariantIter *iter); +#endif // GSTREAMER_LITE gsize g_variant_iter_n_children (GVariantIter *iter); void g_variant_iter_free (GVariantIter *iter); GVariant * g_variant_iter_next_value (GVariantIter *iter); diff --git a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gclosure.c b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gclosure.c --- a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gclosure.c +++ b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gclosure.c @@ -827,6 +827,10 @@ g_return_val_if_fail (callback_func != NULL, NULL); closure = g_closure_new_simple (sizeof (GCClosure), user_data); +#ifdef GSTREAMER_LITE + if (closure == NULL) + return NULL; +#endif // GSTREAMER_LITE if (destroy_data) g_closure_add_finalize_notifier (closure, user_data, destroy_data); ((GCClosure*) closure)->callback = (gpointer) callback_func; @@ -855,6 +859,10 @@ g_return_val_if_fail (callback_func != NULL, NULL); closure = g_closure_new_simple (sizeof (GCClosure), user_data); +#ifdef GSTREAMER_LITE + if (closure == NULL) + return NULL; +#endif // GSTREAMER_LITE if (destroy_data) g_closure_add_finalize_notifier (closure, user_data, destroy_data); ((GCClosure*) closure)->callback = (gpointer) callback_func; diff --git a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gsignal.c b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gsignal.c --- a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gsignal.c +++ b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gsignal.c @@ -1361,6 +1361,12 @@ SIGNAL_LOCK (); node = LOOKUP_SIGNAL_NODE (signal_id); +#ifdef GSTREAMER_LITE + if (node == NULL) { + SIGNAL_UNLOCK (); + return 0; + } +#endif // GSTREAMER_LITE node->test_class_offset = class_offset; SIGNAL_UNLOCK (); } diff --git a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gtype.c b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gtype.c --- a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gtype.c +++ b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gtype.c @@ -1998,6 +1998,11 @@ g_assert (iface->data && entry && entry->vtable == NULL && iholder && iholder->info); +#ifdef GSTREAMER_LITE + if (entry == NULL) + return FALSE; +#endif // GSTREAMER_LITE + entry->init_state = IFACE_INIT; pnode = lookup_type_node_I (NODE_PARENT_TYPE (node)); @@ -2042,6 +2047,11 @@ g_assert (iface->data && entry && iholder && iholder->info); g_assert (entry->init_state == IFACE_INIT); /* assert prior base_init() */ +#ifdef GSTREAMER_LITE + if (entry == NULL) + return; +#endif // GSTREAMER_LITE + entry->init_state = INITIALIZED; vtable = entry->vtable; diff --git a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gtypemodule.c b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gtypemodule.c --- a/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gtypemodule.c +++ b/modules/media/src/main/native/gstreamer/3rd_party/glib/glib-2.28.8/gobject/gtypemodule.c @@ -336,6 +336,11 @@ GTypeModule *module = G_TYPE_MODULE (plugin); ModuleTypeInfo *module_type_info = g_type_module_find_type_info (module, g_type); +#ifdef GSTREAMER_LITE + if (module_type_info == NULL) + return; +#endif // GSTREAMER_LITE + *info = module_type_info->info; if (module_type_info->info.value_table) diff --git a/modules/media/src/main/native/gstreamer/gstreamer-lite/gstreamer/gst/gstvalue.c b/modules/media/src/main/native/gstreamer/gstreamer-lite/gstreamer/gst/gstvalue.c --- a/modules/media/src/main/native/gstreamer/gstreamer-lite/gstreamer/gst/gstvalue.c +++ b/modules/media/src/main/native/gstreamer/gstreamer-lite/gstreamer/gst/gstvalue.c @@ -3269,6 +3269,10 @@ g_return_val_if_fail (min1 != NULL && max1 != NULL, FALSE); g_return_val_if_fail (min2 != NULL && max2 != NULL, FALSE); +#ifdef GSTREAMER_LITE + if (min1 == NULL || max1 == NULL || min2 == NULL || max2 == NULL) + return FALSE; +#endif // GSTREAMER_LITE compare = gst_value_get_compare_func (min1); g_return_val_if_fail (compare, FALSE); @@ -3857,6 +3861,10 @@ { g_return_if_fail (G_IS_VALUE (src)); g_return_if_fail (dest != NULL); +#ifdef GSTREAMER_LITE + if (src == NULL || !G_IS_VALUE (src) || dest == NULL) + return; +#endif // GSTREAMER_LITE g_value_init (dest, G_VALUE_TYPE (src)); g_value_copy (src, dest); diff --git a/modules/media/src/main/native/gstreamer/projects/win/fxplugins/Makefile b/modules/media/src/main/native/gstreamer/projects/win/fxplugins/Makefile --- a/modules/media/src/main/native/gstreamer/projects/win/fxplugins/Makefile +++ b/modules/media/src/main/native/gstreamer/projects/win/fxplugins/Makefile @@ -109,7 +109,7 @@ endif ifeq ($(ARCH), x32) - LDFLAGS += -MACHINE:x86 + LDFLAGS += -safeseh -MACHINE:x86 else CFLAGS += -D_WIN64 LDFLAGS += -MACHINE:x64 diff --git a/modules/media/src/main/native/gstreamer/projects/win/glib-lite/Makefile b/modules/media/src/main/native/gstreamer/projects/win/glib-lite/Makefile --- a/modules/media/src/main/native/gstreamer/projects/win/glib-lite/Makefile +++ b/modules/media/src/main/native/gstreamer/projects/win/glib-lite/Makefile @@ -39,7 +39,7 @@ endif ifeq ($(ARCH), x32) - LDFLAGS += -MACHINE:x86 + LDFLAGS += -safeseh -MACHINE:x86 else LDFLAGS += -MACHINE:x64 endif diff --git a/modules/media/src/main/native/gstreamer/projects/win/gstreamer-lite/Makefile b/modules/media/src/main/native/gstreamer/projects/win/gstreamer-lite/Makefile --- a/modules/media/src/main/native/gstreamer/projects/win/gstreamer-lite/Makefile +++ b/modules/media/src/main/native/gstreamer/projects/win/gstreamer-lite/Makefile @@ -41,7 +41,7 @@ endif ifeq ($(ARCH), x32) - LDFLAGS += -MACHINE:x86 + LDFLAGS += -safeseh -MACHINE:x86 else LDFLAGS += -MACHINE:x64 endif diff --git a/modules/media/src/main/native/jfxmedia/projects/win/Makefile b/modules/media/src/main/native/jfxmedia/projects/win/Makefile --- a/modules/media/src/main/native/jfxmedia/projects/win/Makefile +++ b/modules/media/src/main/native/jfxmedia/projects/win/Makefile @@ -74,7 +74,7 @@ LDFLAGS = -dll -out:$(shell cygpath -ma $(TARGET)) -incremental:no -nologo -libpath:$(shell cygpath -ma $(BUILD_DIR)) $(LIBS) \ -manifest -manifestfile:$(MANIFEST) -manifestuac:"level='asInvoker' uiAccess='false'" \ - -subsystem:windows -dynamicbase -errorreport:queue + -subsystem:windows -dynamicbase -nxcompat -errorreport:queue ifeq ($(BUILD_TYPE), Release) CFLAGS += -DNDEBUG -O2 -MD @@ -86,7 +86,7 @@ ifeq ($(ARCH), x32) CFLAGS += -Oy- - LDFLAGS += -MACHINE:x86 + LDFLAGS += -safeseh -MACHINE:x86 else CFLAGS += -D_WIN64 LDFLAGS += -MACHINE:x64