[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 &lt;tavi@cs.pub.ro&gt;</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>&gt; Buna<BR>&gt;<BR>&gt; Am o problema (cel putin am avut inainte de a modifica putin tema1.h)<BR>&gt; - functia CheckUsers(TOKEN_USER *u1,TOKEN_USER *u2) duce la BSOD in<BR>&gt; cazul in care unul din parametrii u1 sau<BR>&gt; u2 este NULL.<BR>&gt;<BR>&gt; Cum poate sa se intample? In "my_syscall()" sa zicem ca fac la<BR>&gt; inceput (inainte sa tratez argumentul<BR>&gt; cmd):<BR>&gt; GetCurrentUser(¤t_user);<BR>&gt; GetUserOf(pid, &amp;pid_user);<BR>&gt;<BR>&gt; iar in STOP si START monitor am testul care suna literal<BR>&gt; "utilizatorii NEadmini pot opri monitorizarea doar a pid-urilor care<BR>&gt; le apartin" care s-a traduce aproximativ asa:<BR>&gt;<BR>&gt; if (!UserAdmin() &amp;&amp; !CheckUsers(current_user, pid_user))<BR>&gt; return STATUS_ACCESS_DENIED;<BR>&gt;<BR>&gt; Totul suna si pare ok - problema e ca ptr pid=0, GetUserOf()<BR>&gt; returneaza status diferit de STATUS_SUCCESS si nu completeaza<BR>&gt;
 pid_user =&gt; 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--