From 8183ce5de23cc7895a3f3422c47b304959e760e7 Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Sun, 26 Apr 2015 01:16:00 +0200
Subject: [PATCH] Fixing critical bug in community cache - Wrong values indexed
 - Circular reference

---
 src/cutecoin/core/community.py |  4 ++--
 src/cutecoin/core/person.py    | 17 +++++++++--------
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/cutecoin/core/community.py b/src/cutecoin/core/community.py
index 77809aa8..da9fd989 100644
--- a/src/cutecoin/core/community.py
+++ b/src/cutecoin/core/community.py
@@ -80,9 +80,9 @@ class Cache():
         '''
         cache_key = (str(request),
                      str(tuple(frozenset(sorted(req_args.keys())))),
-                     str(tuple(frozenset(sorted(req_args.items())))),
+                     str(tuple(frozenset(sorted(req_args.values())))),
                      str(tuple(frozenset(sorted(get_args.keys())))),
-                     str(tuple(frozenset(sorted(get_args.items())))))
+                     str(tuple(frozenset(sorted(get_args.values())))))
 
         if cache_key not in self.data.keys():
             result = self.community.request(request, req_args, get_args,
diff --git a/src/cutecoin/core/person.py b/src/cutecoin/core/person.py
index 310b24c7..60ce2d8f 100644
--- a/src/cutecoin/core/person.py
+++ b/src/cutecoin/core/person.py
@@ -117,12 +117,13 @@ class Person(object):
             for result in data['results']:
                 if result["pubkey"] == pubkey:
                     uids = result['uids']
-                    for uid in uids:
-                        if uid["meta"]["timestamp"] > timestamp:
-                            timestamp = uid["meta"]["timestamp"]
-                            uid = uid["uid"]
+                    person_uid = ""
+                    for uid_data in uids:
+                        if uid_data["meta"]["timestamp"] > timestamp:
+                            timestamp = uid_data["meta"]["timestamp"]
+                            person_uid = uid_data["uid"]
 
-                        person = cls(uid, pubkey, {})
+                        person = cls(person_uid, pubkey, {})
                         Person._instances[pubkey] = person
                         logging.debug("{0}".format(Person._instances.keys()))
                         return person
@@ -299,10 +300,10 @@ class Person(object):
 
             for result in data['results']:
                 if result["pubkey"] == self.pubkey:
-                    for uid in result['uids']:
-                        for certifier in uid['others']:
+                    for uid_data in result['uids']:
+                        for certifier in uid_data['others']:
                             # add a certifier
-                            certifier['uid'] = uid
+                            certifier['uid'] = uid_data['uid']
                             certifier['cert_time'] = dict()
                             certifier['cert_time']['medianTime'] = community.get_block(certifier['meta']['block_number']).mediantime
                             certifiers.append(certifier)
-- 
GitLab