diff mbox series

resolv: free only initialized items from gai pool

Message ID 20231030185701.639111-1-jpalus@fastmail.com
State New
Headers show
Series resolv: free only initialized items from gai pool | expand

Commit Message

Jan Palus Oct. 30, 2023, 6:57 p.m. UTC
pool_max_size denotes total allocated rows in pool but possibly not yet
initialized. it's pool_size that represents number of actually occupied
rows hence use it when freeing pool to avoid freeing random addresses.

Signed-off-by: Jan Palus <jpalus@fastmail.com>
---
 resolv/gai_misc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Florian Weimer Nov. 20, 2023, 2:04 p.m. UTC | #1
* Jan Palus:

> pool_max_size denotes total allocated rows in pool but possibly not yet
> initialized. it's pool_size that represents number of actually occupied
> rows hence use it when freeing pool to avoid freeing random addresses.
>
> Signed-off-by: Jan Palus <jpalus@fastmail.com>
> ---
>  resolv/gai_misc.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/resolv/gai_misc.c b/resolv/gai_misc.c
> index d02bd7ed23..266ed6931c 100644
> --- a/resolv/gai_misc.c
> +++ b/resolv/gai_misc.c
> @@ -1,4 +1,5 @@
>  /* Copyright (C) 2001-2023 Free Software Foundation, Inc.
> +   Copyright The GNU Toolchain Authors.
>     This file is part of the GNU C Library.
>  
>     The GNU C Library is free software; you can redistribute it and/or
> @@ -442,7 +443,7 @@ __gai_freemem (void)
>  {
>    size_t row;
>  
> -  for (row = 0; row < pool_max_size; ++row)
> +  for (row = 0; row < pool_size; ++row)
>      free (pool[row]);
>  
>    free (pool);

Thanks.

Reviewed-by: Florian Weimer <fweimer@redhat.com>

And pushed.

Florian
diff mbox series

Patch

diff --git a/resolv/gai_misc.c b/resolv/gai_misc.c
index d02bd7ed23..266ed6931c 100644
--- a/resolv/gai_misc.c
+++ b/resolv/gai_misc.c
@@ -1,4 +1,5 @@ 
 /* Copyright (C) 2001-2023 Free Software Foundation, Inc.
+   Copyright The GNU Toolchain Authors.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -442,7 +443,7 @@  __gai_freemem (void)
 {
   size_t row;
 
-  for (row = 0; row < pool_max_size; ++row)
+  for (row = 0; row < pool_size; ++row)
     free (pool[row]);
 
   free (pool);