Hello,

I backported the commit 253b3720fb43 from the upstream. Everything is
works fine when applied. You will find a patch for the package's
repository.

--
Jimmy
>From 86877f0895a99f266cf4fa92d391d2be072dc397 Mon Sep 17 00:00:00 2001
From: Jimmy Thrasibule <thrasibule.ji...@gmail.com>
Date: Sun, 15 Apr 2012 19:33:36 +0200
Subject: [PATCH] add patch to fix bug #660860

---
 debian/patches/fix-bug-660860 |   53 +++++++++++++++++++++++++++++++++++++++++
 debian/patches/series         |    1 +
 2 files changed, 54 insertions(+), 0 deletions(-)
 create mode 100644 debian/patches/fix-bug-660860

diff --git a/debian/patches/fix-bug-660860 b/debian/patches/fix-bug-660860
new file mode 100644
index 0000000..ed9a4cc
--- /dev/null
+++ b/debian/patches/fix-bug-660860
@@ -0,0 +1,53 @@
+Index: cfengine-debian/src/cf.defs.h
+===================================================================
+--- cfengine-debian.orig/src/cf.defs.h
++++ cfengine-debian/src/cf.defs.h
+@@ -382,6 +382,7 @@ typedef int clockid_t;
+ #define CF_EXEC_EXPIREAFTER 1
+ 
+ #define MAXIP4CHARLEN 16
++#define PACK_UPIFELAPSED_SALT "packageuplist"
+ 
+ /*******************************************************************/
+ /*  DBM                                                            */
+Index: cfengine-debian/src/promises.c
+===================================================================
+--- cfengine-debian.orig/src/promises.c
++++ cfengine-debian/src/promises.c
+@@ -776,7 +776,11 @@ md = EVP_get_digestbyname(FileHashName(t
+    
+ EVP_DigestInit(&context,md);
+ 
+-EVP_DigestUpdate(&context,pp->promiser,strlen(pp->promiser));
++// multiple packages (promisers) may share same package_list_update_ifelapsed lock
++if(!(salt && (strncmp(salt, PACK_UPIFELAPSED_SALT, sizeof(PACK_UPIFELAPSED_SALT) - 1) == 0)))
++   {
++   EVP_DigestUpdate(&context,pp->promiser,strlen(pp->promiser));
++   }
+ 
+ if (pp->ref)
+    {
+Index: cfengine-debian/src/verify_packages.c
+===================================================================
+--- cfengine-debian.orig/src/verify_packages.c
++++ cfengine-debian/src/verify_packages.c
+@@ -59,7 +59,7 @@ PromiseBanner(pp);
+ 
+ if (a.packages.package_list_update_command)
+    {
+-   snprintf(lockname,CF_BUFSIZE-1,"package-%s-%s",pp->promiser,a.packages.package_list_update_command);
++   snprintf(lockname,CF_BUFSIZE-1,"%s-%s",PACK_UPIFELAPSED_SALT,a.packages.package_list_update_command);
+ 
+    al = a;
+    
+@@ -73,9 +73,8 @@ if (a.packages.package_list_update_comma
+    if (thislock.lock != NULL)
+       {
+       ExecPackageCommand(a.packages.package_list_update_command,false,al,pp);   
++      YieldCurrentLock(thislock);
+       }
+-   
+-   YieldCurrentLock(thislock);
+    }
+ 
+ // Now verify the package itself
diff --git a/debian/patches/series b/debian/patches/series
index 6a99a2c..902d2e5 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,3 +2,4 @@ remove-man-errors
 fhs-compliance
 fix-examples-paths
 fix-error-typos
+fix-bug-660860
-- 
1.7.7.6

Reply via email to