On Feb 19, 11:35pm, al...@yandex.ru (Alexander Nasonov) wrote:
-- Subject: Re: CVS commit: src/sys/dist/pf/net

| Christos Zoulas wrote:
| > On Feb 19, 10:55pm, al...@yandex.ru (Alexander Nasonov) wrote:
| > -- Subject: Re: CVS commit: src/sys/dist/pf/net
| > 
| > | I think it's perfectly normal for an incoming packet to have no
| > | cred. For instance, if that packet is about to be accepted.
| > 
| > Yes, that is what I was thinking.
| > 
| > | pd->lookup.uid and pd->lookup.gid are set to UID_MAX and GID_MAX
| > | at the beginning of the function. They can be probably changed only
| > | if so_cred is set:
| > | 
| > |         if (so == NULL)                                                   
                                                                               
return -1;                                                                      
                                                 if (so->so_cred != NULL) {     
                                                                                
                                  pd->lookup.uid = 
kauth_cred_geteuid(so->so_cred);                                                
                                        pd->lookup.gid = 
kauth_cred_getegid(so->so_cred);                                                
                                }         
| > 
| > Or should return -1 there too without printing anything...
| > I have not looked if -1 is handled differently.
| > 
| 
| What does return -1 do? Skip a packet? Reject?
| 
| I think it reasonable to set uid to something that can't belong to
| a real user and pass control to pf matching engine. I don't know
| about pf internals to confirm whether this can work as expected.
| 
| So, I'm running the new kernel with my change to pf_socket_lookup
| and without your change in ipc_socket2.c. I see randomly rejected
| packets in pflog but otherwise it runs fine.
| 
| I'll try your change tomorrow.

I changed it to return -1 and did not change the uipc_socket2.c code to
add the credentials. Returning -1 means that there is no info to do the
matching there, so it is ok (looking at the lookup.done variable).

christos

Reply via email to