Skip to content

Commit b692a98

Browse files
committed
Check that hash exists before getting its value. Fixes #211
1 parent a78d055 commit b692a98

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

cybox/common/hashes.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,47 +133,47 @@ def _fix_value(self, value):
133133

134134
@property
135135
def md5(self):
136-
return self._hash_lookup(Hash.TYPE_MD5).value
136+
return self._get_hash_value(Hash.TYPE_MD5)
137137

138138
@md5.setter
139139
def md5(self, value):
140140
self._set_hash(Hash.TYPE_MD5, value)
141141

142142
@property
143143
def sha1(self):
144-
return self._hash_lookup(Hash.TYPE_SHA1).value
144+
return self._get_hash_value(Hash.TYPE_SHA1)
145145

146146
@sha1.setter
147147
def sha1(self, value):
148148
self._set_hash(Hash.TYPE_SHA1, value)
149149

150150
@property
151151
def sha224(self):
152-
return self._hash_lookup(Hash.TYPE_SHA224).value
152+
return self._get_hash_value(Hash.TYPE_SHA224)
153153

154154
@sha224.setter
155155
def sha224(self, value):
156156
self._set_hash(Hash.TYPE_SHA224, value)
157157

158158
@property
159159
def sha256(self):
160-
return self._hash_lookup(Hash.TYPE_SHA256).value
160+
return self._get_hash_value(Hash.TYPE_SHA256)
161161

162162
@sha256.setter
163163
def sha256(self, value):
164164
self._set_hash(Hash.TYPE_SHA256, value)
165165

166166
@property
167167
def sha384(self):
168-
return self._hash_lookup(Hash.TYPE_SHA384).value
168+
return self._get_hash_value(Hash.TYPE_SHA384)
169169

170170
@sha384.setter
171171
def sha384(self, value):
172172
self._set_hash(Hash.TYPE_SHA384, value)
173173

174174
@property
175175
def sha512(self):
176-
return self._hash_lookup(Hash.TYPE_SHA512).value
176+
return self._get_hash_value(Hash.TYPE_SHA512)
177177

178178
@sha512.setter
179179
def sha512(self, value):
@@ -191,3 +191,10 @@ def _set_hash(self, type_, value):
191191
h.simple_hash_value = value
192192
else:
193193
self.append(Hash(value, type_))
194+
195+
def _get_hash_value(self, type_):
196+
"""Return the hash with a given type_, or None"""
197+
h = self._hash_lookup(type_)
198+
if h:
199+
return h.value
200+
return None

cybox/test/common/hash_test.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,15 @@ def test_round_trip(self):
154154
hashlist_list2 = HashList.list_from_object(hashlist_obj)
155155
self.assertEqual(hashlist_list, hashlist_list2)
156156

157+
def test_hash_lookup(self):
158+
h = HashList()
159+
self.assertEqual(None, h.md5)
160+
self.assertEqual(None, h.sha1)
161+
self.assertEqual(None, h.sha224)
162+
self.assertEqual(None, h.sha256)
163+
self.assertEqual(None, h.sha384)
164+
self.assertEqual(None, h.sha512)
165+
157166
def test_namespace_count(self):
158167
h = HashList()
159168
h.append(EMPTY_MD5)

0 commit comments

Comments
 (0)