Package: sendmail / 8.18.1-6~bpo12+1

hard-code-lockf.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
--- a/mail.local/mail.local.c
+++ b/mail.local/mail.local.c
@@ -98,22 +98,6 @@ SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.
 #define REALLOC(ptr, size)	(((ptr) == NULL) ? malloc(size) : realloc(ptr, size))
 
 /*
-**  If you don't have flock, you could try using lockf instead.
-*/
-
-#ifdef LDA_USE_LOCKF
-# define flock(a, b)	lockf(a, b, 0)
-# ifdef LOCK_EX
-#  undef LOCK_EX
-# endif
-# define LOCK_EX	F_LOCK
-#endif /* LDA_USE_LOCKF */
-
-#ifndef LOCK_EX
-# include <sys/file.h>
-#endif
-
-/*
 **  If you don't have setreuid, and you have saved uids, and you have
 **  a seteuid() call that doesn't try to emulate using setuid(), then
 **  you can try defining LDA_USE_SETEUID.
@@ -1118,9 +1102,6 @@ deliver(fd, name)
 	**  can't unlink it.  Historically, binmail set the owner/group at
 	**  each mail delivery.  We no longer do this, assuming that if the
 	**  ownership or permissions were changed there was a reason.
-	**
-	**  XXX
-	**  open(2) should support flock'ing the file.
 	*/
 
 tryagain:
@@ -1292,7 +1273,7 @@ tryagain:
 #endif /* 0 */
 
 	/* Wait until we can get a lock on the file. */
-	if (flock(mbfd, LOCK_EX) < 0)
+	if (lockf(mbfd, F_LOCK, 0) < 0)
 	{
 		mailerr("450 4.2.0", "Lock %s: %s", path, sm_errstring(errno));
 		goto err1;
@@ -1409,7 +1390,7 @@ err0:
 		mbfd = open(path, O_WRONLY, 0);
 		if (mbfd < 0 ||
 		    cursize == 0
-		    || flock(mbfd, LOCK_EX) < 0 ||
+		    || lockf(mbfd, F_LOCK, 0) < 0 ||
 		    fstat(mbfd, &sb) < 0 ||
 		    sb.st_size != cursize ||
 		    sb.st_nlink != 1 ||