diff options
| author | djm <> | 2006-06-27 05:05:40 +0000 |
|---|---|---|
| committer | djm <> | 2006-06-27 05:05:40 +0000 |
| commit | 4f828b924f54507141fb95ebe49dfcd261945e85 (patch) | |
| tree | f6b05913ca6b34db73a343a7bb36d57ff4105356 /src/lib/libcrypto/dso | |
| parent | 588543a0946f1dbf0f1dd5135f8f6447486dc183 (diff) | |
| download | openbsd-4f828b924f54507141fb95ebe49dfcd261945e85.tar.gz openbsd-4f828b924f54507141fb95ebe49dfcd261945e85.tar.bz2 openbsd-4f828b924f54507141fb95ebe49dfcd261945e85.zip | |
import of openssl-0.9.7j
Diffstat (limited to 'src/lib/libcrypto/dso')
| -rw-r--r-- | src/lib/libcrypto/dso/Makefile | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/dso/dso_dl.c | 35 | ||||
| -rw-r--r-- | src/lib/libcrypto/dso/dso_win32.c | 21 |
3 files changed, 55 insertions, 3 deletions
diff --git a/src/lib/libcrypto/dso/Makefile b/src/lib/libcrypto/dso/Makefile index 168951bc3e..c16278c3ff 100644 --- a/src/lib/libcrypto/dso/Makefile +++ b/src/lib/libcrypto/dso/Makefile | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | # | 1 | # |
| 2 | # SSLeay/crypto/dso/Makefile | 2 | # OpenSSL/crypto/dso/Makefile |
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | DIR= dso | 5 | DIR= dso |
diff --git a/src/lib/libcrypto/dso/dso_dl.c b/src/lib/libcrypto/dso/dso_dl.c index 79d2cb4d8c..f7b4dfc0c3 100644 --- a/src/lib/libcrypto/dso/dso_dl.c +++ b/src/lib/libcrypto/dso/dso_dl.c | |||
| @@ -126,7 +126,8 @@ static int dl_load(DSO *dso) | |||
| 126 | DSOerr(DSO_F_DL_LOAD,DSO_R_NO_FILENAME); | 126 | DSOerr(DSO_F_DL_LOAD,DSO_R_NO_FILENAME); |
| 127 | goto err; | 127 | goto err; |
| 128 | } | 128 | } |
| 129 | ptr = shl_load(filename, BIND_IMMEDIATE|DYNAMIC_PATH, 0L); | 129 | ptr = shl_load(filename, BIND_IMMEDIATE | |
| 130 | (dso->flags&DSO_FLAG_NO_NAME_TRANSLATION?0:DYNAMIC_PATH), 0L); | ||
| 130 | if(ptr == NULL) | 131 | if(ptr == NULL) |
| 131 | { | 132 | { |
| 132 | DSOerr(DSO_F_DL_LOAD,DSO_R_LOAD_FAILED); | 133 | DSOerr(DSO_F_DL_LOAD,DSO_R_LOAD_FAILED); |
| @@ -281,4 +282,36 @@ static char *dl_name_converter(DSO *dso, const char *filename) | |||
| 281 | return(translated); | 282 | return(translated); |
| 282 | } | 283 | } |
| 283 | 284 | ||
| 285 | #ifdef OPENSSL_FIPS | ||
| 286 | static void dl_ref_point(){} | ||
| 287 | |||
| 288 | int DSO_pathbyaddr(void *addr,char *path,int sz) | ||
| 289 | { | ||
| 290 | struct shl_descriptor inf; | ||
| 291 | int i,len; | ||
| 292 | |||
| 293 | if (addr == NULL) | ||
| 294 | { | ||
| 295 | union { void(*f)(); void *p; } t = { dl_ref_point }; | ||
| 296 | addr = t.p; | ||
| 297 | } | ||
| 298 | |||
| 299 | for (i=-1;shl_get_r(i,&inf)==0;i++) | ||
| 300 | { | ||
| 301 | if (((size_t)addr >= inf.tstart && (size_t)addr < inf.tend) || | ||
| 302 | ((size_t)addr >= inf.dstart && (size_t)addr < inf.dend)) | ||
| 303 | { | ||
| 304 | len = (int)strlen(inf.filename); | ||
| 305 | if (sz <= 0) return len+1; | ||
| 306 | if (len >= sz) len=sz-1; | ||
| 307 | memcpy(path,inf.filename,len); | ||
| 308 | path[len++] = 0; | ||
| 309 | return len; | ||
| 310 | } | ||
| 311 | } | ||
| 312 | |||
| 313 | return -1; | ||
| 314 | } | ||
| 315 | #endif | ||
| 316 | |||
| 284 | #endif /* DSO_DL */ | 317 | #endif /* DSO_DL */ |
diff --git a/src/lib/libcrypto/dso/dso_win32.c b/src/lib/libcrypto/dso/dso_win32.c index 3fa90eb27c..cc4ac68696 100644 --- a/src/lib/libcrypto/dso/dso_win32.c +++ b/src/lib/libcrypto/dso/dso_win32.c | |||
| @@ -68,6 +68,25 @@ DSO_METHOD *DSO_METHOD_win32(void) | |||
| 68 | } | 68 | } |
| 69 | #else | 69 | #else |
| 70 | 70 | ||
| 71 | #ifdef _WIN32_WCE | ||
| 72 | # if _WIN32_WCE < 300 | ||
| 73 | static FARPROC GetProcAddressA(HMODULE hModule,LPCSTR lpProcName) | ||
| 74 | { | ||
| 75 | WCHAR lpProcNameW[64]; | ||
| 76 | int i; | ||
| 77 | |||
| 78 | for (i=0;lpProcName[i] && i<64;i++) | ||
| 79 | lpProcNameW[i] = (WCHAR)lpProcName[i]; | ||
| 80 | if (i==64) return NULL; | ||
| 81 | lpProcNameW[i] = 0; | ||
| 82 | |||
| 83 | return GetProcAddressW(hModule,lpProcNameW); | ||
| 84 | } | ||
| 85 | # endif | ||
| 86 | # undef GetProcAddress | ||
| 87 | # define GetProcAddress GetProcAddressA | ||
| 88 | #endif | ||
| 89 | |||
| 71 | /* Part of the hack in "win32_load" ... */ | 90 | /* Part of the hack in "win32_load" ... */ |
| 72 | #define DSO_MAX_TRANSLATED_SIZE 256 | 91 | #define DSO_MAX_TRANSLATED_SIZE 256 |
| 73 | 92 | ||
| @@ -122,7 +141,7 @@ static int win32_load(DSO *dso) | |||
| 122 | DSOerr(DSO_F_WIN32_LOAD,DSO_R_NO_FILENAME); | 141 | DSOerr(DSO_F_WIN32_LOAD,DSO_R_NO_FILENAME); |
| 123 | goto err; | 142 | goto err; |
| 124 | } | 143 | } |
| 125 | h = LoadLibrary(filename); | 144 | h = LoadLibraryA(filename); |
| 126 | if(h == NULL) | 145 | if(h == NULL) |
| 127 | { | 146 | { |
| 128 | DSOerr(DSO_F_WIN32_LOAD,DSO_R_LOAD_FAILED); | 147 | DSOerr(DSO_F_WIN32_LOAD,DSO_R_LOAD_FAILED); |
