Mercurial > p > roundup > code
diff roundup/backends/back_anydbm.py @ 4480:1613754d2646
Fix first part of Password handling security issue2550688
(thanks Joseph Myers for reporting and Eli Collins for fixing)
Small change against original patch: We still accept plaintext passwords
(in known_schemes) when parsing encrypted password (e.g. from database).
This way existing databases with plaintext passwords continue to work (I
don't know of any, this would need patching on the users side) and all
regression tests pass.
| author | Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net> |
|---|---|
| date | Thu, 14 Apr 2011 12:24:59 +0000 |
| parents | f1fe6fd0aa61 |
| children | 22bc0426e348 |
line wrap: on
line diff
--- a/roundup/backends/back_anydbm.py Thu Apr 14 09:21:23 2011 +0000 +++ b/roundup/backends/back_anydbm.py Thu Apr 14 12:24:59 2011 +0000 @@ -504,9 +504,7 @@ elif isinstance(prop, hyperdb.Interval) and v is not None: d[k] = date.Interval(v) elif isinstance(prop, hyperdb.Password) and v is not None: - p = password.Password() - p.unpack(v) - d[k] = p + d[k] = password.Password(encrypted=v) else: d[k] = v return d @@ -1744,7 +1742,7 @@ l.append((OTHER, k, [float(val) for val in v])) filterspec = l - + # now, find all the nodes that are active and pass filtering matches = [] cldb = self.db.getclassdb(cn) @@ -2028,9 +2026,7 @@ elif isinstance(prop, hyperdb.Interval): value = date.Interval(value) elif isinstance(prop, hyperdb.Password): - pwd = password.Password() - pwd.unpack(value) - value = pwd + value = password.Password(encrypted=value) d[propname] = value # get a new id if necessary
