Package: task
Version: 1.9.0-1
Severity: normal
Tags: upstream patch
Task uses uuids to identify tasks. However these uuids are not
conforming to rfc4122.
Steps to reproduce:
Create a task and look at .task/pending.data.
With probability around 98% the generated uuid is invalid.
There are basically two methods to solve this problem:
1) Link against libuuid. Task has support for this, however the Debian
package does not do this.
2) Fix tasks own implementation for generating uuids. A patch for this
is attached.
The upstream bugreport can be found at
http://taskwarrior.org/issues/show/394.
As a maintainer reading this, could you link this bug report to the
upstream bug report?
Thanks
Helmut
From 54495557addff37ff52df7edc3ff4d30e1182571 Mon Sep 17 00:00:00 2001
From: Helmut Grohne hel...@subdivi.de
Date: Mon, 8 Mar 2010 17:37:20 +0100
Subject: [PATCH] emit rfc4122 (version 4) conforming uuids
This only applies when not linking against libuuid.
---
src/util.cpp |9 -
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/src/util.cpp b/src/util.cpp
index a10e928..9012ae6 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -313,12 +313,19 @@ const std::string uuid ()
id[11] = randomHexDigit ();
id[12] = randomHexDigit ();
id[13] = '-';
- id[14] = randomHexDigit ();
+ id[14] = '4';
id[15] = randomHexDigit ();
id[16] = randomHexDigit ();
id[17] = randomHexDigit ();
id[18] = '-';
id[19] = randomHexDigit ();
+ switch(id[19])
+ {
+case '0': case '4': case '8': case 'c': id[19] = '8'; break;
+case '1': case '5': case '9': case 'd': id[19] = '9'; break;
+case '2': case '6': case 'a': case 'e': id[19] = 'a'; break;
+case '3': case '7': case 'b': case 'f': id[19] = 'b'; break;
+ }
id[20] = randomHexDigit ();
id[21] = randomHexDigit ();
id[22] = randomHexDigit ();
--
1.6.6.1