This bug is in the routine mp_to_vmsspec(). If it is passed a name like "/foo" where foo is a logical name, with no other directories or file names in the path, after the translation, the null terminator was always being skipped over, and what ever was previously in that memory would get concatenated to the string.

The result would usually be an unusable string.

As I fix the UNIX name handling elsewhere in the VMS specific parts of perl to remove the "/000000" that should not be there, it may make this bug more visible.

-John
[EMAIL PROTECTED]
Personal Opinion Only
--- vms/vms.c_blead     Mon Aug  1 19:37:03 2005
+++ vms/vms.c   Mon Aug  1 19:36:56 2005
@@ -3842,8 +3842,10 @@
         if (!buf && ts) Renew(rslt,strlen(path)-strlen(rslt)+trnend+4,char);
         strcpy(rslt,trndev);
         cp1 = rslt + trnend;
-        *(cp1++) = '.';
-        cp2++;
+       if (*cp2 != 0) {
+          *(cp1++) = '.';
+          cp2++;
+        }
       }
       else {
         *(cp1++) = ':';

Reply via email to