diff mbox series

[1/2] selftests/vDSO: prevent SIGFPE if vdso_info.nbucket is zero

Message ID 20200404203704.69412-1-svens@linux.ibm.com (mailing list archive)
State New
Headers show
Series [1/2] selftests/vDSO: prevent SIGFPE if vdso_info.nbucket is zero | expand

Commit Message

Sven Schnelle April 4, 2020, 8:37 p.m. UTC
If vdso_info can't be parsed correctly, vdso_info.nbucket might
contain zero. Add a check and return NULL which will fail the
symbol lookup.

Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
---
 tools/testing/selftests/vDSO/parse_vdso.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Sven Schnelle April 28, 2020, 6:20 a.m. UTC | #1
On Sat, Apr 04, 2020 at 10:37:03PM +0200, Sven Schnelle wrote:
> If vdso_info can't be parsed correctly, vdso_info.nbucket might
> contain zero. Add a check and return NULL which will fail the
> symbol lookup.

Ping?

> 
> Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
> ---
>  tools/testing/selftests/vDSO/parse_vdso.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/tools/testing/selftests/vDSO/parse_vdso.c b/tools/testing/selftests/vDSO/parse_vdso.c
> index 1dbb4b87268f..8e5a70a24d9a 100644
> --- a/tools/testing/selftests/vDSO/parse_vdso.c
> +++ b/tools/testing/selftests/vDSO/parse_vdso.c
> @@ -226,6 +226,9 @@ void *vdso_sym(const char *version, const char *name)
>  		return 0;
>  
>  	ver_hash = elf_hash(version);
> +	if (!vdso_info.nbucket)
> +		return NULL;
> +
>  	ELF(Word) chain = vdso_info.bucket[elf_hash(name) % vdso_info.nbucket];
>  
>  	for (; chain != STN_UNDEF; chain = vdso_info.chain[chain]) {
> -- 
> 2.17.1
>
diff mbox series

Patch

diff --git a/tools/testing/selftests/vDSO/parse_vdso.c b/tools/testing/selftests/vDSO/parse_vdso.c
index 1dbb4b87268f..8e5a70a24d9a 100644
--- a/tools/testing/selftests/vDSO/parse_vdso.c
+++ b/tools/testing/selftests/vDSO/parse_vdso.c
@@ -226,6 +226,9 @@  void *vdso_sym(const char *version, const char *name)
 		return 0;
 
 	ver_hash = elf_hash(version);
+	if (!vdso_info.nbucket)
+		return NULL;
+
 	ELF(Word) chain = vdso_info.bucket[elf_hash(name) % vdso_info.nbucket];
 
 	for (; chain != STN_UNDEF; chain = vdso_info.chain[chain]) {