In vms.c, mp_do_fileify_dirspec, the char array "esa" is being filled in by a routine that does not add null terminators to strings.

It is being referenced by C library functions that assume the presence of such a null terminator before the terminator is set at the end of the string.

For some reason, this was only being exposed on my system by doing a mmk realclean on a threaded build.

-John
[EMAIL PROTECTED]
Personal Opinion Only
--- /rsync_root/perl/vms/vms.c  Wed Jun 14 23:27:42 2006
+++ vms/vms.c   Sun Jun 25 21:29:19 2006
@@ -5148,6 +5148,7 @@
           }
         }
       }
+      esa[rms_nam_esll(dirnam)] = '\0';
       if (!rms_is_nam_fnb(dirnam, (NAM$M_EXP_DEV | NAM$M_EXP_DIR))) {
         cp1 = strchr(esa,']');
         if (!cp1) cp1 = strchr(esa,'>');
@@ -5170,7 +5171,7 @@
           return NULL;
         }
       }
-      esa[rms_nam_esll(dirnam)] = '\0';
+
       if (rms_is_nam_fnb(dirnam, NAM$M_EXP_NAME)) {
         /* They provided at least the name; we added the type, if necessary, */
         if (buf) retspec = buf;                            /* in sys$parse() */

Reply via email to