[kdeplasma-addons/f19: 12/14] Revert "drop the patch, it's included in 4.10.5"

Rex Dieter rdieter at fedoraproject.org
Thu Sep 5 20:29:24 UTC 2013


commit fbd51de5c763f5e318985ac8fd1e41e4a8b44d64
Author: Rex Dieter <rdieter at math.unl.edu>
Date:   Thu Sep 5 15:28:41 2013 -0500

    Revert "drop the patch, it's included in 4.10.5"
    
    This reverts commit fa3a8c56b6a67eb77baa2ece6387e811d174cb2e.

 0001-use-KRandom-avoid-modulo-bias.patch |   81 ++++++++++++++++++++++++++++++
 kdeplasma-addons.spec                    |    7 ++-
 2 files changed, 86 insertions(+), 2 deletions(-)
---
diff --git a/0001-use-KRandom-avoid-modulo-bias.patch b/0001-use-KRandom-avoid-modulo-bias.patch
new file mode 100644
index 0000000..4c35d01
--- /dev/null
+++ b/0001-use-KRandom-avoid-modulo-bias.patch
@@ -0,0 +1,81 @@
+From 36a1fe49cb70f717c4a6e9eeee2c9186503a8dce Mon Sep 17 00:00:00 2001
+From: Aaron Seigo <aseigo at kde.org>
+Date: Mon, 3 Jun 2013 19:16:32 +0200
+Subject: use KRandom, avoid modulo bias
+
+---
+ applets/paste/pastemacroexpander.cpp | 29 ++++++++++++++++++++++-------
+ 1 file changed, 22 insertions(+), 7 deletions(-)
+
+diff --git a/applets/paste/pastemacroexpander.cpp b/applets/paste/pastemacroexpander.cpp
+index ea6163f..d0a8b49 100644
+--- a/applets/paste/pastemacroexpander.cpp
++++ b/applets/paste/pastemacroexpander.cpp
+@@ -27,6 +27,7 @@
+ #include <KDebug>
+ #include <KLocale>
+ #include <KMessageBox>
++#include <KRandom>
+ 
+ class PasteMacroExpanderSingleton
+ {
+@@ -142,35 +143,49 @@ QString PasteMacroExpander::password(const QString& args)
+             << "01234567890"
+             << "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
+ 
+-    int charCount;
++    int charCount = 8;
+     QString chars;
+     QString result;
+ 
+     if (a.count() > 0) {
+-        charCount = qMax(a[0].trimmed().toInt(), 1);
+-    } else {
+-        charCount = 8;
++        charCount = qMax(a[0].trimmed().toInt(), 8);
+     }
++
+     if (a.count() < 2) {
+         chars = characterSets.join("");
+     }
++
+     if (a.count() > 1) {
+         chars += (a[1].trimmed() == "true") ? characterSets[0] : "";
+     }
++
+     if (a.count() > 2) {
+         chars += (a[2].trimmed() == "true") ? characterSets[1] : "";
+     }
++
+     if (a.count() > 3) {
+         chars += (a[3].trimmed() == "true") ? characterSets[2] : "";
+     }
++
+     if (a.count() > 4) {
+         chars += (a[4].trimmed() == "true") ? characterSets[3] : "";
+     }
+ 
+-    QDateTime now = QDateTime::currentDateTime();
+-    qsrand(now.toTime_t() / now.time().msec());
++    const int setSize = chars.count();
++    const int top = (RAND_MAX / setSize) * setSize;
++    kDebug() << "topping out at " << setSize << RAND_MAX << top;
+     for (int i = 0; i < charCount; ++i) {
+-        result += chars[qrand() % chars.count()];
++        // to prevent modulo bias, discard random numbers at the
++        // 'top end' of INT_MAX
++        int rand = -1;
++        do {
++            if (rand > 0) {
++                kDebug() << "Ha!" << rand;
++            }
++            rand = KRandom::random();
++        } while (rand >= top);
++
++        result += chars[rand % setSize];
+     }
+     //kDebug() << result;
+     return result;
+-- 
+1.8.2.1
+
diff --git a/kdeplasma-addons.spec b/kdeplasma-addons.spec
index a8f8383..b7f58b5 100644
--- a/kdeplasma-addons.spec
+++ b/kdeplasma-addons.spec
@@ -13,9 +13,10 @@ URL:     http://www.kde.org/
 %endif
 Source0: http://download.kde.org/%{stable}/%{version}/src/%{name}-%{version}.tar.xz
 
-# upstreamable patches
+## upstreamable patches
 
-# upstream patches
+## upstream patches
+Patch101: 0001-use-KRandom-avoid-modulo-bias.patch
 
 # rhel patches
 Patch300: kdeplasma-addons-4.10.3-rhel.patch
@@ -97,6 +98,8 @@ Requires: marble%{?_kde4_version: >= 1:%{_kde4_version}}
 %prep
 %setup -q -n kdeplasma-addons-%{version}%{?alphatag}
 
+%patch101 -p1 -b .0001
+
 %if 0%{?rhel}
 %patch300 -p1 -b .rhel
 %endif


More information about the scm-commits mailing list