aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Jackson2006-03-14 19:02:54 -0600
committerAdam Jackson2006-03-14 19:02:54 -0600
commit14d1219442c679c754fcc4e27460610ae219951a (patch)
tree714e8de4eedbe9be270ea89224cdf10ddda39036
parentea40d3dd41cb3c562caf404fead9fdaa0b97565c (diff)
downloadexternal-libgbm-14d1219442c679c754fcc4e27460610ae219951a.tar.gz
external-libgbm-14d1219442c679c754fcc4e27460610ae219951a.tar.xz
external-libgbm-14d1219442c679c754fcc4e27460610ae219951a.zip
Avoid walking off the end of the hash table. (Coverity report #465)
-rw-r--r--libdrm/ChangeLog5
-rw-r--r--libdrm/xf86drmHash.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/libdrm/ChangeLog b/libdrm/ChangeLog
index b1faa5ef..1e740706 100644
--- a/libdrm/ChangeLog
+++ b/libdrm/ChangeLog
@@ -1,3 +1,8 @@
12006-03-14 Adam Jackson <ajax@freedesktop.org>
2
3 * xf86drmHash.c:
4 Avoid walking off the end of the hash table. (Coverity report #465)
5
12006-02-20 Adam Jackson <ajax@freedesktop.org> 62006-02-20 Adam Jackson <ajax@freedesktop.org>
2 7
3 * ChangeLog: 8 * ChangeLog:
diff --git a/libdrm/xf86drmHash.c b/libdrm/xf86drmHash.c
index 71d3d895..a1908d09 100644
--- a/libdrm/xf86drmHash.c
+++ b/libdrm/xf86drmHash.c
@@ -292,14 +292,15 @@ int drmHashNext(void *t, unsigned long *key, void **value)
292{ 292{
293 HashTablePtr table = (HashTablePtr)t; 293 HashTablePtr table = (HashTablePtr)t;
294 294
295 for (; table->p0 < HASH_SIZE; 295 while (table->p0 < HASH_SIZE) {
296 ++table->p0, table->p1 = table->buckets[table->p0]) {
297 if (table->p1) { 296 if (table->p1) {
298 *key = table->p1->key; 297 *key = table->p1->key;
299 *value = table->p1->value; 298 *value = table->p1->value;
300 table->p1 = table->p1->next; 299 table->p1 = table->p1->next;
301 return 1; 300 return 1;
302 } 301 }
302 table->p1 = table->buckets[table->p0];
303 ++table->p0;
303 } 304 }
304 return 0; 305 return 0;
305} 306}