diff options
| author | djm <> | 2008-09-06 12:20:16 +0000 |
|---|---|---|
| committer | djm <> | 2008-09-06 12:20:16 +0000 |
| commit | 1cc2a70b2a8b91d243c2e4ac4e779efd950db5a2 (patch) | |
| tree | 8bad2049c8c0044c7964fd985794ad61777e7163 /src/lib/libcrypto/dso | |
| parent | 6b62d1fdd8a4fd35acfcc0c4bb1bf8b757fa8cda (diff) | |
| download | openbsd-1cc2a70b2a8b91d243c2e4ac4e779efd950db5a2.tar.gz openbsd-1cc2a70b2a8b91d243c2e4ac4e779efd950db5a2.tar.bz2 openbsd-1cc2a70b2a8b91d243c2e4ac4e779efd950db5a2.zip | |
remerge local tweaks, update per-arch configuration headers, update
Makefiles, crank shlib_version
Diffstat (limited to 'src/lib/libcrypto/dso')
| -rw-r--r-- | src/lib/libcrypto/dso/dso_dlfcn.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/lib/libcrypto/dso/dso_dlfcn.c b/src/lib/libcrypto/dso/dso_dlfcn.c index f734c1c6b7..656cd496f8 100644 --- a/src/lib/libcrypto/dso/dso_dlfcn.c +++ b/src/lib/libcrypto/dso/dso_dlfcn.c | |||
| @@ -269,6 +269,7 @@ static char *dlfcn_merger(DSO *dso, const char *filespec1, | |||
| 269 | const char *filespec2) | 269 | const char *filespec2) |
| 270 | { | 270 | { |
| 271 | char *merged; | 271 | char *merged; |
| 272 | size_t len; | ||
| 272 | 273 | ||
| 273 | if(!filespec1 && !filespec2) | 274 | if(!filespec1 && !filespec2) |
| 274 | { | 275 | { |
| @@ -280,18 +281,20 @@ static char *dlfcn_merger(DSO *dso, const char *filespec1, | |||
| 280 | same goes if the second file specification is missing. */ | 281 | same goes if the second file specification is missing. */ |
| 281 | if (!filespec2 || filespec1[0] == '/') | 282 | if (!filespec2 || filespec1[0] == '/') |
| 282 | { | 283 | { |
| 283 | merged = OPENSSL_malloc(strlen(filespec1) + 1); | 284 | len = strlen(filespec1) + 1; |
| 285 | merged = OPENSSL_malloc(len); | ||
| 284 | if(!merged) | 286 | if(!merged) |
| 285 | { | 287 | { |
| 286 | DSOerr(DSO_F_DLFCN_MERGER, | 288 | DSOerr(DSO_F_DLFCN_MERGER, |
| 287 | ERR_R_MALLOC_FAILURE); | 289 | ERR_R_MALLOC_FAILURE); |
| 288 | return(NULL); | 290 | return(NULL); |
| 289 | } | 291 | } |
| 290 | strcpy(merged, filespec1); | 292 | strlcpy(merged, filespec1, len); |
| 291 | } | 293 | } |
| 292 | /* If the first file specification is missing, the second one rules. */ | 294 | /* If the first file specification is missing, the second one rules. */ |
| 293 | else if (!filespec1) | 295 | else if (!filespec1) |
| 294 | { | 296 | { |
| 297 | len = strlen(filespec2) + 1; | ||
| 295 | merged = OPENSSL_malloc(strlen(filespec2) + 1); | 298 | merged = OPENSSL_malloc(strlen(filespec2) + 1); |
| 296 | if(!merged) | 299 | if(!merged) |
| 297 | { | 300 | { |
| @@ -299,7 +302,7 @@ static char *dlfcn_merger(DSO *dso, const char *filespec1, | |||
| 299 | ERR_R_MALLOC_FAILURE); | 302 | ERR_R_MALLOC_FAILURE); |
| 300 | return(NULL); | 303 | return(NULL); |
| 301 | } | 304 | } |
| 302 | strcpy(merged, filespec2); | 305 | strlcpy(merged, filespec2, len); |
| 303 | } | 306 | } |
| 304 | else | 307 | else |
| 305 | /* This part isn't as trivial as it looks. It assumes that | 308 | /* This part isn't as trivial as it looks. It assumes that |
| @@ -325,9 +328,9 @@ static char *dlfcn_merger(DSO *dso, const char *filespec1, | |||
| 325 | ERR_R_MALLOC_FAILURE); | 328 | ERR_R_MALLOC_FAILURE); |
| 326 | return(NULL); | 329 | return(NULL); |
| 327 | } | 330 | } |
| 328 | strcpy(merged, filespec2); | 331 | strlcpy(merged, filespec2, len + 2); |
| 329 | merged[spec2len] = '/'; | 332 | merged[spec2len] = '/'; |
| 330 | strcpy(&merged[spec2len + 1], filespec1); | 333 | strlcpy(&merged[spec2len + 1], filespec1, len + 1 - spec2len); |
| 331 | } | 334 | } |
| 332 | return(merged); | 335 | return(merged); |
| 333 | } | 336 | } |
