Re: [PATCH 7/7] hurd: Fix FS_RETRY_MAGICAL "machtype" handling

2023-04-29 Thread Samuel Thibault
Applied, thanks!

Sergey Bugaev, le sam. 29 avril 2023 16:13:54 +0300, a ecrit:
> We need to set file_name, not update retryname. This is what the other
> branches do.
> 
> Before this change, any attempt to access such a file would segfault due
> to file_name being unset:
> 
> $ settrans -ac /tmp/my-machtype /hurd/magic machtype
> $ cat /tmp/my-machtype
> Segmentation fault
> 
> Checked on i686-gnu.
> 
> Signed-off-by: Sergey Bugaev 
> ---
>  hurd/lookup-retry.c | 11 ---
>  1 file changed, 4 insertions(+), 7 deletions(-)
> 
> diff --git a/hurd/lookup-retry.c b/hurd/lookup-retry.c
> index 99c98104..62f94bbc 100644
> --- a/hurd/lookup-retry.c
> +++ b/hurd/lookup-retry.c
> @@ -277,7 +277,6 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
> error_t err;
> struct host_basic_info hostinfo;
> mach_msg_type_number_t hostinfocnt = HOST_BASIC_INFO_COUNT;
> -   char *p;
> /* XXX want client's host */
> if (err = __host_info (__mach_host_self (), HOST_BASIC_INFO,
>(integer_t *) ,
> @@ -288,13 +287,11 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
> err = EGRATUITOUS;
> goto out;
>   }
> -   p = _itoa (hostinfo.cpu_subtype, [8], 10, 0);
> -   *--p = '/';
> -   p = _itoa (hostinfo.cpu_type, [8], 10, 0);
> -   if (p < retryname)
> +   file_name = _itoa (hostinfo.cpu_subtype, [8], 10, 
> 0);
> +   *--file_name = '/';
> +   file_name = _itoa (hostinfo.cpu_type, file_name, 10, 0);
> +   if (file_name < retryname)
>   abort ();   /* XXX write this right if this ever happens */
> -   if (p > retryname)
> - memmove (retryname, p, strlen(p) + 1);
> startdir = *result;
>   }
> else
> -- 
> 2.40.1
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.



[PATCH 7/7] hurd: Fix FS_RETRY_MAGICAL "machtype" handling

2023-04-29 Thread Sergey Bugaev
We need to set file_name, not update retryname. This is what the other
branches do.

Before this change, any attempt to access such a file would segfault due
to file_name being unset:

$ settrans -ac /tmp/my-machtype /hurd/magic machtype
$ cat /tmp/my-machtype
Segmentation fault

Checked on i686-gnu.

Signed-off-by: Sergey Bugaev 
---
 hurd/lookup-retry.c | 11 ---
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/hurd/lookup-retry.c b/hurd/lookup-retry.c
index 99c98104..62f94bbc 100644
--- a/hurd/lookup-retry.c
+++ b/hurd/lookup-retry.c
@@ -277,7 +277,6 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
  error_t err;
  struct host_basic_info hostinfo;
  mach_msg_type_number_t hostinfocnt = HOST_BASIC_INFO_COUNT;
- char *p;
  /* XXX want client's host */
  if (err = __host_info (__mach_host_self (), HOST_BASIC_INFO,
 (integer_t *) ,
@@ -288,13 +287,11 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
  err = EGRATUITOUS;
  goto out;
}
- p = _itoa (hostinfo.cpu_subtype, [8], 10, 0);
- *--p = '/';
- p = _itoa (hostinfo.cpu_type, [8], 10, 0);
- if (p < retryname)
+ file_name = _itoa (hostinfo.cpu_subtype, [8], 10, 
0);
+ *--file_name = '/';
+ file_name = _itoa (hostinfo.cpu_type, file_name, 10, 0);
+ if (file_name < retryname)
abort ();   /* XXX write this right if this ever happens */
- if (p > retryname)
-   memmove (retryname, p, strlen(p) + 1);
  startdir = *result;
}
  else
-- 
2.40.1