Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Aug 2007 10:46:08 +0200
From:      Roman Divacky <rdivacky@FreeBSD.org>
To:        Jesper Brix Rosenkilde <jbr@FreeBSD.org>
Cc:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   Re: PERFORCE change 125277 for review
Message-ID:  <20070818084608.GA70909@freebsd.org>
In-Reply-To: <200708172057.l7HKvMhw000824@repoman.freebsd.org>
References:  <200708172057.l7HKvMhw000824@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
>       struct image_params *imgp;
>  {
>  	int error;
> +	struct proc *p = imgp->proc; 
>  	vm_map_t map = &imgp->proc->p_vmspace->vm_map;
>  	vm_offset_t *addr = &imgp->proc->p_usrsysshm;
> -	int test = 42;
> +	struct sysshm outsysshm;
>  
>  	error = vm_map_sysshm(map, addr, 42);
>  
> -	copyout((caddr_t) &test, (caddr_t) *addr, sizeof(int)); 
> +	outsysshm.pid = p->p_pid;
> +	strncpy(outsysshm.progtitle, p->p_comm, MAXCOMLEN);
> +	strncpy(outsysshm.proctitle, "\0", 1);
> +	copyout((caddr_t) &outsysshm, (caddr_t) *addr, sizeof(struct sysshm)); 
  

the p->p_comm can be changed under your hands. you need to lock "p" and obtain
local copy and copyout the local copy.

> +struct sysshm {
> +	pid_t pid;
> +	char progtitle[20];
> +	char proctitle[2048];
> +};

please use some defines here... I think you want to use MAXCOMLEN+1



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070818084608.GA70909>