[pso] [tema1] [win] CheckUsers() in tema1.h

Octavian Purdila pso@cursuri.cs.pub.ro
Fri, 18 Mar 2005 10:19:27 -0500


On Thursday 17 March 2005 09:32 am, Andrei Costin wrote:
> Buna
>
> Am o problema (cel putin am avut inainte de a modifica putin tema1.h)
> - functia CheckUsers(TOKEN_USER *u1,TOKEN_USER *u2) duce la BSOD in
> cazul in care unul din parametrii u1 sau
> u2 este NULL.
>
> Cum poate sa se intample? In "my_syscall()" sa zicem ca fac la
> inceput (inainte sa tratez argumentul
> cmd):
>  GetCurrentUser(&current_user);
>  GetUserOf(pid, &pid_user);
>
> iar in STOP si START monitor am testul care suna literal
> "utilizatorii NEadmini pot opri monitorizarea doar a pid-urilor care
> le apartin" care s-a traduce aproximativ asa:
>
> if (!UserAdmin() && !CheckUsers(current_user, pid_user))
>    return STATUS_ACCESS_DENIED;
>
> Totul suna si pare ok - problema e ca ptr pid=0, GetUserOf()
> returneaza status diferit de STATUS_SUCCESS si nu completeaza
> pid_user => CheckUsers(current_user, pid_user) duce la BSOD

Abordarea corecta aici este sa verificati ce intoarce GetUserOf() si 
daca nu este STATUS_SUCCESS sa intoarceti eroare.


tavi