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