This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] getauxval: fix crash on systems without HAVE_AUX_VECTOR


On 02 Apr 2016 12:57, Samuel Thibault wrote:
> Systems without HAVE_AUX_VECTOR have GLRO(dl_auxv) == NULL, and
> getauxval would thus crash.

assuming this is for GNU/hurd

> --- a/misc/getauxval.c
> +++ b/misc/getauxval.c
> @@ -30,9 +30,10 @@ __getauxval (unsigned long int type)
>    else if (type == AT_HWCAP2)
>      return GLRO(dl_hwcap2);
>  
> -  for (p = GLRO(dl_auxv); p->a_type != AT_NULL; p++)
> -    if (p->a_type == type)
> -      return p->a_un.a_val;
> +  if (GLRO(dl_auxv) != NULL)
> +    for (p = GLRO(dl_auxv); p->a_type != AT_NULL; p++)
> +      if (p->a_type == type)
> +	return p->a_un.a_val;

should this just be under HAVE_AUX_VECTOR ?  seems like we shouldn't
even bother defining/exporting dl_auxv at all if it's disabled.  then
we wouldn't run into more latent problems like this at run time -- it
would be a build failure.

in looking at other uses of dl_auxv, why isn't _dl_sysdep_start an
issue too ?  rtld.c:_dl_start_final always calls that, and that func
always walks GLRO(dl_auxv).
-mike

Attachment: signature.asc
Description: Digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]