debuginfod: sqlite3_sharedprefix_fn should not compare past end of string
Commit Message
gcc address sanitizer detected a read after the end of string in
sqlite3_sharedprefix_fn. Make sure to stop comparing the strings when
seeing the zero terminator.
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
debuginfod/debuginfod.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On Sat, Dec 04, 2021 at 05:54:07PM -0500, Frank Ch. Eigler wrote:
> > gcc address sanitizer detected a read after the end of string in
> > sqlite3_sharedprefix_fn. Make sure to stop comparing the strings when
> > seeing the zero terminator.
>
> Yup, OK.
Thanks, pushed.
Mark
@@ -3704,7 +3704,7 @@ static void sqlite3_sharedprefix_fn (sqlite3_context* c, int argc, sqlite3_value
const unsigned char* a = sqlite3_value_text (argv[0]);
const unsigned char* b = sqlite3_value_text (argv[1]);
int i = 0;
- while (*a++ == *b++)
+ while (*a != '\0' && *b != '\0' && *a++ == *b++)
i++;
sqlite3_result_int (c, i);
}