[PATCH] lib/list_sort: do not pass bad pointers to cmp callback

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Artem Bityutskiy
Date: Saturday, August 21, 2010 - 3:06 am

From: Don Mullis <don.mullis@gmail.com>

If the original list is a POT in length, the first callback from line 73 will
pass a==b both pointing to the original list_head. This is dangerous because
the 'list_sort()' user can use 'container_of()' and accesses the "containing"
object, which does not necessary exist for the list head. So the user can
access RAM which does not belong to him. If this is a write access, we can end
up with memory corruption. This patch fixes the issue.

Signed-off-by: Don Mullis <don.mullis@gmail.com>
Tested-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Cc: stable@kernel.org
---
 lib/list_sort.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/lib/list_sort.c b/lib/list_sort.c
index 4b5cb79..a7616fa 100644
--- a/lib/list_sort.c
+++ b/lib/list_sort.c
@@ -70,7 +70,7 @@ static void merge_and_restore_back_links(void *priv,
 		 * element comparison is needed, so the client's cmp()
 		 * routine can invoke cond_resched() periodically.
 		 */
-		(*cmp)(priv, tail, tail);
+		(*cmp)(priv, tail->next, tail->next);
 
 		tail->next->prev = tail;
 		tail = tail->next;
-- 
1.7.1.1


-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/6] improve list_sort test, Artem Bityutskiy, (Sat Aug 7, 1:10 am)
[PATCH 3/6] lib/list_sort: test: use generic random32, Artem Bityutskiy, (Sat Aug 7, 1:10 am)
[PATCH 4/6] lib/list_sort: test: improve errors handling, Artem Bityutskiy, (Sat Aug 7, 1:10 am)
[PATCH 5/6] lib/list_sort: test: unify test messages, Artem Bityutskiy, (Sat Aug 7, 1:10 am)
[PATCH 6/6] lib/list_sort: test: check element addresses, Artem Bityutskiy, (Sat Aug 7, 1:10 am)
Re: [PATCH 0/6] improve list_sort test, Artem Bityutskiy, (Sun Aug 8, 3:03 am)
Re: [PATCH 0/6] improve list_sort test, Don Mullis, (Sun Aug 8, 12:31 pm)
Re: [PATCH 0/6] improve list_sort test, Don Mullis, (Sun Aug 8, 1:07 pm)
Re: [PATCH 0/6] improve list_sort test, Artem Bityutskiy, (Sun Aug 8, 10:59 pm)
Re: [PATCH 0/6] improve list_sort test, Artem Bityutskiy, (Sat Aug 21, 2:32 am)
Re: [PATCH 0/6] improve list_sort test, Artem Bityutskiy, (Sat Aug 21, 2:56 am)
Re: [PATCH 0/6] improve list_sort test, Artem Bityutskiy, (Sat Aug 21, 3:03 am)
[PATCH] lib/list_sort: do not pass bad pointers to cmp cal ..., Artem Bityutskiy, (Sat Aug 21, 3:06 am)
Re: [PATCH 0/6] improve list_sort test, Artem Bityutskiy, (Sat Aug 21, 3:22 am)
Re: [PATCH 0/6] improve list_sort test, don.mullis, (Sat Aug 21, 9:59 am)
Re: [PATCH 0/6] improve list_sort test, Artem Bityutskiy, (Sat Aug 21, 10:48 am)