Fri, 03 Aug 2012 20:11:53 +0200
Neutralize buggy code causing OpenPKG to have 'fatal problems' in
spite of correct installation, configuration, and operation. An
administrator suffering from this failure is even unable to
uninstall the flawed software.
1 Index: mutex/mut_fcntl.c
2 --- mutex/mut_fcntl.c.orig 2008-01-08 21:58:43 +0100
3 +++ mutex/mut_fcntl.c 2008-05-26 22:36:45 +0200
4 @@ -84,7 +84,7 @@
6 /* Acquire an exclusive kernel lock. */
7 k_lock.l_type = F_WRLCK;
8 - if (fcntl(env->lockfhp->fd, F_SETLKW, &k_lock))
9 + if (fcntl(env->lockfhp->fd, F_SETLKW, &k_lock) == -1)
10 goto err;
12 /* If the resource is still available, it's ours. */
13 @@ -97,7 +97,7 @@
15 /* Release the kernel lock. */
16 k_lock.l_type = F_UNLCK;
17 - if (fcntl(env->lockfhp->fd, F_SETLK, &k_lock))
18 + if (fcntl(env->lockfhp->fd, F_SETLK, &k_lock) == -1)
19 goto err;
21 /*
22 Index: os/os_open.c
23 --- os/os_open.c.orig 2008-03-26 05:11:35 +0100
24 +++ os/os_open.c 2008-05-26 22:36:05 +0200
25 @@ -67,7 +67,7 @@
26 if (LF_ISSET(DB_OSO_EXCL))
27 oflags |= O_EXCL;
29 -#ifdef HAVE_O_DIRECT
30 +#if defined(HAVE_O_DIRECT) && defined(__FreeBSD__)
31 if (LF_ISSET(DB_OSO_DIRECT))
32 oflags |= O_DIRECT;
33 #endif