taint enforce: file access backstops
[exim.git] / src / src / transports / queuefile.c
index 652f2754ee1fed19a5371f4dffa3ab131391fcfd..4339d1fdd0773efe9bbfd2d5a4f6749d48d721f1 100644 (file)
@@ -74,14 +74,13 @@ copy_spool_file(int dst, int src)
 {
 int i, j;
 uschar buffer[16384];
-uschar * s;
 
 if (lseek(src, 0, SEEK_SET) != 0)
   return FALSE;
 
 do
   if ((j = read(src, buffer, sizeof(buffer))) > 0)
-    for (s = buffer; (i = write(dst, s, j)) != j; s += i, j -= i)
+    for (uschar * s = buffer; (i = write(dst, s, j)) != j; s += i, j -= i)
       if (i < 0)
        return FALSE;
   else if (j < 0)
@@ -135,11 +134,11 @@ else                                      /* use data copy */
     tb->name, srcpath, dstpath);
 
   if (  (s = dstpath,
-        (dstfd = openat(ddfd, CCS filename, O_RDWR|O_CREAT|O_EXCL, SPOOL_MODE))
+        (dstfd = exim_openat4(ddfd, CCS filename, O_RDWR|O_CREAT|O_EXCL, SPOOL_MODE))
         < 0
        )
      ||    is_hdr_file
-       && (s = srcpath, (srcfd = openat(sdfd, CCS filename, O_RDONLY)) < 0)
+       && (s = srcpath, (srcfd = exim_openat(sdfd, CCS filename, O_RDONLY)) < 0)
      )
     op = US"opening";
 
@@ -232,7 +231,7 @@ if (  (s = dstdir,    fstat(ddfd, &dstatbuf) < 0)
   }
 can_link = (dstatbuf.st_dev == sstatbuf.st_dev);
 
-if (dont_deliver)
+if (f.dont_deliver)
   {
   DEBUG(D_transport)
     debug_printf("*** delivery by %s transport bypassed by -N option\n",