[Pdbg] [PATCH] libpdbg: fix a bug in get_class_target_addr

Amitay Isaacs amitay at ozlabs.org
Mon Nov 5 12:06:16 AEDT 2018


Reviewed-by: Amitay Isaacs <amitay at ozlabs.org>

On Tue, 2018-10-23 at 14:35 +1100, Alistair Popple wrote:
> The root device tree node does not have a class. Therefore this
> assert
> was not useful as the strcmp() may cause a segfault comparing the
> root
> node class.
> 
> Signed-off-by: Alistair Popple <alistair at popple.id.au>
> ---
>  libpdbg/target.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/libpdbg/target.c b/libpdbg/target.c
> index 317a6c6..975ecec 100644
> --- a/libpdbg/target.c
> +++ b/libpdbg/target.c
> @@ -24,10 +24,9 @@ static struct pdbg_target
> *get_class_target_addr(struct pdbg_target *target, con
>  		*addr += dt_get_address(target, 0, NULL);
>  		target = target->parent;
>  
> -		/* The should always be a parent. If there isn't it
> -		 * means we traversed up the whole device tree and
> -		 * didn't find a parent matching the given class. */
> -		assert(target);
> +		/* The root node doesn't have an address space so it's
> +		 * an error in the device tree if we hit this. */
> +		assert(target != dt_root);
>  	}
>  
>  	return target;
> -- 
> 2.11.0
> 

Amitay.
-- 

The best God is one that gives nothing and demands nothing. That is 
the only God you can count on.  - Conan



More information about the Pdbg mailing list