summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2015-01-30 04:44:17 +0100
committerRichard Levitte <levitte@openssl.org>2015-01-30 05:03:14 +0100
commit81ce20e6ac1d3298bfff8bd059007968f05115e0 (patch)
treec01c4aaf4e066137df81d4fd094aa3a7da686e5c
parent324a9774928c362083ab581cbc9052ac0b787283 (diff)
downloadopenssl-new-81ce20e6ac1d3298bfff8bd059007968f05115e0.tar.gz
dso_vms needs to add the .EXE extension if there is none already
Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit be7b1097e28ff6d49f0d4b7ab8b036d6da87ebc6)
-rw-r--r--crypto/dso/dso_vms.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/crypto/dso/dso_vms.c b/crypto/dso/dso_vms.c
index 14d885df15..8793f7e0ff 100644
--- a/crypto/dso/dso_vms.c
+++ b/crypto/dso/dso_vms.c
@@ -172,6 +172,7 @@ static int vms_load(DSO *dso)
# endif /* __INITIAL_POINTER_SIZE == 64 */
const char *sp1, *sp2; /* Search result */
+ const char *ext = NULL; /* possible extension to add */
if (filename == NULL) {
DSOerr(DSO_F_VMS_LOAD, DSO_R_NO_FILENAME);
@@ -214,11 +215,19 @@ static int vms_load(DSO *dso)
/* Now, let's see if there's a type, and save the position in sp2 */
sp2 = strchr(sp1, '.');
/*
+ * If there is a period and the next character is a semi-colon,
+ * we need to add an extension
+ */
+ if (sp2 != NULL && sp2[1] == ';')
+ ext = ".EXE";
+ /*
* If we found it, that's where we'll cut. Otherwise, look for a version
* number and save the position in sp2
*/
- if (sp2 == NULL)
+ if (sp2 == NULL) {
sp2 = strchr(sp1, ';');
+ ext = ".EXE";
+ }
/*
* If there was still nothing to find, set sp2 to point at the end of the
* string
@@ -244,6 +253,11 @@ static int vms_load(DSO *dso)
strncpy(p->imagename, filename, sp1 - filename);
p->imagename[sp1 - filename] = '\0';
+ if (ext) {
+ strcat(p->imagename, ext);
+ if (*sp2 == '.')
+ sp2++;
+ }
strcat(p->imagename, sp2);
p->filename_dsc.dsc$w_length = strlen(p->filename);