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

Andrei Costin pso@cursuri.cs.pub.ro
Thu, 17 Mar 2005 06:32:42 -0800 (PST)


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

Solutii:
1.modificam iful de mai sus astfel (cu conditia ca pid_user si current_user sunt
initilizati cu
NULL):
  if (pid_user != NULL && current_user!= NULL &&  !UserAdmin() &&
!CheckUsers(current_user, pid_user))

2. pctul 1 arata stufos, mai usor modific in tema1.h:
   BOOLEAN CheckUsers(TOKEN_USER *u1,TOKEN_USER *u2)
   {
           if (!u1 || !u2)
              return FALSE;
           else
               return Rtl...();
   }

Am dreptul si motivati corecta sa modific tema1.h, sau gresesc undeva?

Andrei



		
__________________________________ 
Do you Yahoo!? 
Yahoo! Small Business - Try our new resources site!
http://smallbusiness.yahoo.com/resources/