From ec8bb77de9016b9c9dfcabb6834f8032e4c7b233 Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Mon, 9 Nov 2009 00:16:17 +0100 Subject: [PATCH] 2009-11-09 Vladimir Serbinenko * normal/auth.c (grub_auth_strcmp): Fix bug which resulted in function being insecure. --- ChangeLog | 5 +++++ normal/auth.c | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d6c3b7927..c5e920966 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-11-09 Vladimir Serbinenko + + * normal/auth.c (grub_auth_strcmp): Fix bug which resulted in function + being insecure. + 2009-11-08 Robert Millan * util/i386/pc/grub-mkrescue.in: Fix miss-identification as diff --git a/normal/auth.c b/normal/auth.c index 9029ba1ce..afe65315d 100644 --- a/normal/auth.c +++ b/normal/auth.c @@ -39,12 +39,19 @@ grub_auth_strcmp (const char *user_input, const char *template) { int ok = 1; const char *ptr1, *ptr2; + + if (ptr2 == NULL) + ok = 0; + for (ptr1 = user_input, ptr2 = template; *ptr1; ptr1++) - if (*ptr1 == (ptr2 ? *ptr2 : ptr1[1]) && ok && ptr2 != NULL) + if (*ptr1 == (ptr2 ? *ptr2 : ptr1[1]) && ok) ptr2++; else ok = 0; + if (ptr2 == NULL || *ptr2 != 0) + ok = 0; + return !ok; }