[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