In vms.c, routine rmsexpand, if you pass it a UNIX string, the code was incorrectly using a copy of the string that was not null terminated, and also potentially shortened so that it could not be converted back to UNIX.

The attached patch fixes this.

-John
[EMAIL PROTECTED]
Personal Opinion Only
--- /rsync_root/perl/vms/vms.c  Tue Jul 31 22:26:48 2007
+++ vms/vms.c   Tue Jul 31 23:11:04 2007
@@ -5077,7 +5077,7 @@
 
   if (!rms_nam_rsll(mynam)) {
     if (isunix) {
-      if (do_tounixspec(esa,outbuf,0,fs_utf8) == NULL) {
+      if (do_tounixspec(tbuf, outbuf ,0 , fs_utf8) == NULL) {
        if (out) Safefree(out);
        if (esal != NULL)
            PerlMem_free(esal);
@@ -5087,7 +5087,7 @@
        return NULL;
       }
     }
-    else strcpy(outbuf,esa);
+    else strcpy(outbuf, tbuf);
   }
   else if (isunix) {
     tmpfspec = PerlMem_malloc(VMS_MAXRSS);

Reply via email to