Hi,

On Sun, Feb 13, 2005 at 11:42:04PM -0500, Adam R. Skutt wrote:
> start-stop-daemon doesn't set the HOME environment variable when run 
> with the --chuid option.  This can cause breakages in applications that 
> depend on this value matching the actual home directory of the user the 
> daemon is being run as.

> --- start-stop-daemon.c.orig  2005-02-13 22:42:32.521610976 -0500
> +++ start-stop-daemon.c       2005-02-13 23:17:25.409443664 -0500
> @@ -115,6 +115,7 @@
>  static const char *schedule_str = NULL;
>  static const char *progname = "";
>  static int nicelevel = 0;
> +static const char *home_env_name = "HOME=";
>  
>  static struct stat exec_stat;
>  #if defined(OSHURD)
> @@ -1184,6 +1185,18 @@
>                       changegroup = ""; /* just empty */
>                       runas_gid = pw->pw_gid;
>               }
> +             
> +             if  (0 == access(pw->pw_dir, F_OK)) {
> +                     size_t home_dir_len = 
> sizeof(home_env_name)+strlen(pw->pw_dir);
> +                     char *home_dir;
> +                     
> +                     home_dir = xmalloc(home_dir_len);
> +                     strncpy(home_dir, home_env_name, sizeof(home_env_name));
> +                     strncat(home_dir, pw->pw_dir, 
> home_dir_len-sizeof(home_env_name));

Those sizeof are wrong, they'll get the size of the pointer, and not
the lenght of the string.

> +                     putenv(home_dir);

I've commited a much simpler patch using setenv.

thanks,
guillem


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to