components/samba/samba/patches/talloc_dict_sigbus.patch
changeset 5222 8298df727253
parent 5221 e63c8f63ac44
child 5223 66bb65945d8f
--- 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 <[email protected]> :
-
-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);
- }
- 
- /*