diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 49216d6e..7c667d8b 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -250,6 +250,7 @@ patch_enable_all () enable_server_Desktop_Refcount="$1" enable_server_FileEndOfFileInformation="$1" enable_server_File_Permissions="$1" + enable_server_Fix_Invalid_Memory_Access="$1" enable_server_Inherited_ACLs="$1" enable_server_Key_State="$1" enable_server_Map_EXDEV_Error="$1" @@ -883,6 +884,9 @@ patch_enable () server-File_Permissions) enable_server_File_Permissions="$2" ;; + server-Fix_Invalid_Memory_Access) + enable_server_Fix_Invalid_Memory_Access="$2" + ;; server-Inherited_ACLs) enable_server_Inherited_ACLs="$2" ;; @@ -5242,6 +5246,18 @@ if test "$enable_server_FileEndOfFileInformation" -eq 1; then ) >> "$patchlist" fi +# Patchset server-Fix_Invalid_Memory_Access +# | +# | Modified files: +# | * server/winstation.c +# | +if test "$enable_server_Fix_Invalid_Memory_Access" -eq 1; then + patch_apply server-Fix_Invalid_Memory_Access/0001-server-Fix-invalid-memory-accesss-caused-by-destroyi.patch + ( + echo '+ { "Sebastian Lackner", "server: Fix invalid memory accesss caused by destroying winstation before desktop.", 1 },'; + ) >> "$patchlist" +fi + # Patchset server-Stored_ACLs # | # | This patchset has the following (direct or indirect) dependencies: diff --git a/patches/server-Fix_Invalid_Memory_Access/0001-server-Fix-invalid-memory-accesss-caused-by-destroyi.patch b/patches/server-Fix_Invalid_Memory_Access/0001-server-Fix-invalid-memory-accesss-caused-by-destroyi.patch new file mode 100644 index 00000000..2dcfe106 --- /dev/null +++ b/patches/server-Fix_Invalid_Memory_Access/0001-server-Fix-invalid-memory-accesss-caused-by-destroyi.patch @@ -0,0 +1,25 @@ +From d96ffdba8bf208acda52a30d969e496414b5fb30 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Wed, 20 Jan 2016 21:42:35 +0100 +Subject: server: Fix invalid memory accesss caused by destroying winstation + before desktop. + +--- + server/winstation.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/server/winstation.c b/server/winstation.c +index 7a6b9fc..ad28476f 100644 +--- a/server/winstation.c ++++ b/server/winstation.c +@@ -257,6 +257,7 @@ static void desktop_destroy( struct object *obj ) + if (desktop->global_hooks) release_object( desktop->global_hooks ); + if (desktop->close_timeout) remove_timeout_user( desktop->close_timeout ); + list_remove( &desktop->entry ); ++ unlink_named_object( obj ); + release_object( desktop->winstation ); + } + +-- +2.6.4 +