The generation number is ';nnn' at the end of the file name fetched
with readdir(). Because rehash checks for specific extensions and
doesn't expect an additional generation number, the easiest is to
massage the received file name early by simply removing the generation
number.
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2717)
return *path == '/';
}
+static int massage_filename(char *name)
+{
+# ifdef __VMS
+ char *p = strchr(name, ';');
+ char *q = p;
+
+ if (q != NULL) {
+ for (q++; *q != '\0'; q++) {
+ if (!isdigit(*q))
+ return 1;
+ }
+ }
+
+ *p = '\0';
+# endif
+ return 1;
+}
+
/*
* Process a directory; return number of errors found.
*/
}
while ((filename = OPENSSL_DIR_read(&d, dirname)) != NULL) {
if ((copy = strdup(filename)) == NULL
+ || !massage_filename(copy)
|| sk_OPENSSL_STRING_push(files, copy) == 0) {
BIO_puts(bio_err, "out of memory\n");
exit(1);