diff -r e63c8f63ac44 -r 8298df727253 components/samba/samba/patches/talloc_dict_sigbus.patch --- a/components/samba/samba/patches/talloc_dict_sigbus.patch Mon Dec 21 18:48:54 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -Based on patch sent me by Ralph Boehme : - -https://lists.samba.org/archive/samba-technical/2015-November/110889.html - -...patch is assumed to be released in community. - ---- a/source3/lib/talloc_dict.c 2013-06-13 02:21:02.000000000 -0700 -+++ b/source3/lib/talloc_dict.c 2015-11-27 15:11:39.212179014 -0800 -@@ -72,7 +72,11 @@ - TALLOC_FREE(rec); - return false; - } -+#if defined(__SUNPRO_C) && (defined(__sparcv9) && defined(_LP64)) -+ memcpy(&old_data, value.dptr, sizeof(old_data)); -+#else /* Do not chase memcpy on archs where unaligned address do not throw SIGBUS */ - old_data = *(void **)(value.dptr); -+#endif - TALLOC_FREE(old_data); - if (data == NULL) { - status = dbwrap_record_delete(rec); -@@ -138,6 +142,7 @@ - TDB_DATA value; - struct talloc_dict_traverse_state *state = - (struct talloc_dict_traverse_state *)private_data; -+ void *p; - - key = dbwrap_record_get_key(rec); - value = dbwrap_record_get_value(rec); -@@ -145,8 +150,14 @@ - if (value.dsize != sizeof(void *)) { - return -1; - } -+ -+#if defined(__SUNPRO_C) && (defined(__sparcv9) && defined(_LP64)) -+ memcpy(&p, value.dptr, sizeof(p)); -+#else /* Do not chase memcpy on archs where unaligned address do not throw SIGBUS */ -+ p = *(void **)(value.dptr); -+#endif - return state->fn(data_blob_const(key.dptr, key.dsize), -- *(void **)value.dptr, state->private_data); -+ p, state->private_data); - } - - /*