[pso] [tema1] [win] CheckUsers() in tema1.h
Andrei Costin
pso@cursuri.cs.pub.ro
Fri, 18 Mar 2005 00:26:31 -0800 (PST)
--0-831814892-1111134391=:23933
Content-Type: text/plain; charset=us-ascii
Octavian Purdila <tavi@cs.pub.ro> wrote:
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(¤t_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.
Ok, ce status de eroare este cel mai potrivit pentru aceasta - sau cel mai bine e chiar statusul intors de GetUsefOf()?
Andrei
---------------------------------
Do you Yahoo!?
Yahoo! Small Business - Try our new resources site!
--0-831814892-1111134391=:23933
Content-Type: text/html; charset=us-ascii
<DIV><BR><BR><B><I>Octavian Purdila <tavi@cs.pub.ro></I></B> wrote:
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">
<P>On Thursday 17 March 2005 09:32 am, Andrei Costin wrote:<BR>> Buna<BR>><BR>> Am o problema (cel putin am avut inainte de a modifica putin tema1.h)<BR>> - functia CheckUsers(TOKEN_USER *u1,TOKEN_USER *u2) duce la BSOD in<BR>> cazul in care unul din parametrii u1 sau<BR>> u2 este NULL.<BR>><BR>> Cum poate sa se intample? In "my_syscall()" sa zicem ca fac la<BR>> inceput (inainte sa tratez argumentul<BR>> cmd):<BR>> GetCurrentUser(¤t_user);<BR>> GetUserOf(pid, &pid_user);<BR>><BR>> iar in STOP si START monitor am testul care suna literal<BR>> "utilizatorii NEadmini pot opri monitorizarea doar a pid-urilor care<BR>> le apartin" care s-a traduce aproximativ asa:<BR>><BR>> if (!UserAdmin() && !CheckUsers(current_user, pid_user))<BR>> return STATUS_ACCESS_DENIED;<BR>><BR>> Totul suna si pare ok - problema e ca ptr pid=0, GetUserOf()<BR>> returneaza status diferit de STATUS_SUCCESS si nu completeaza<BR>>
pid_user => CheckUsers(current_user, pid_user) duce la BSOD<BR><BR>Abordarea corecta aici este sa verificati ce intoarce GetUserOf() si <BR>daca nu este STATUS_SUCCESS sa intoarceti eroare.<BR><BR>Ok, ce status de eroare este cel mai potrivit pentru aceasta - sau cel mai bine e chiar statusul intors de GetUsefOf()?</P>
<P>Andrei</P></BLOCKQUOTE></DIV><p>
<hr size=1>Do you Yahoo!?<br>
Yahoo! Small Business - <a href="http://us.rd.yahoo.com/evt=31637/*http://smallbusiness.yahoo.com/resources/">Try our new resources site!</a>
--0-831814892-1111134391=:23933--