1diff -Nur openssl-0.9.8za/src/crypto/dso/dso_dlfcn.c ./crypto/dso/dso_dlfcn.c
2--- openssl-0.9.8za/src/crypto/dso/dso_dlfcn.c	2014-06-05 01:09:08.000000000 -0700
3+++ ./crypto/dso/dso_dlfcn.c	2014-07-09 17:55:16.000000000 -0700
4@@ -354,11 +354,21 @@
5 	transform = (strstr(filename, "/") == NULL);
6 	if(transform)
7 		{
8+#if __APPLE__
9+		/* <rdar://problem/6090756> 098 Should load versioned libraries */
10+
11+		/* We will convert this to "%s.1.so" or "lib%s.1.so" */
12+		rsize += 5;	/* The length of ".1.so" */
13+		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)
14+			rsize += DSO_extlen; /* The length of "lib" */
15+		}
16+#else
17 		/* We will convert this to "%s.so" or "lib%s.so" etc */
18 		rsize += DSO_extlen;	/* The length of ".so" */
19 		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)
20 			rsize += 3; /* The length of "lib" */
21 		}
22+#endif
23 	translated = OPENSSL_malloc(rsize);
24 	if(translated == NULL)
25 		{
26@@ -368,11 +378,20 @@
27 		}
28 	if(transform)
29 		{
30+#if __APPLE__
31+		/* <rdar://problem/6090756> 098 Should load versioned libraries */
32+		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)
33+			snprintf(translated, rsize, "lib%s.1.so", filename);
34+		else
35+			snprintf(translated, rsize, "%s.1.so", filename);
36+		}
37+#else
38 		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)
39 			sprintf(translated, "lib%s" DSO_ext, filename);
40 		else
41 			sprintf(translated, "%s" DSO_ext, filename);
42 		}
43+#endif
44 	else
45 		sprintf(translated, "%s", filename);
46 	return(translated);
47