* svc_auth_gss.c (gssrpc__svcauth_gss): Add some debug messages
authorTom Yu <tlyu@mit.edu>
Tue, 17 Aug 2004 01:14:58 +0000 (01:14 +0000)
committerTom Yu <tlyu@mit.edu>
Tue, 17 Aug 2004 01:14:58 +0000 (01:14 +0000)
* svc.c (svc_getreqset): Don't allocate either raw or cooked
credentials on the stack using the cred_area char array; use
mem_alloc() instead.  This avoids alignment problems.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16668 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/rpc/ChangeLog
src/lib/rpc/svc.c
src/lib/rpc/svc_auth_gss.c

index a2f0371375d3d8515798c7340e167bb127e41aff..f58e800985c11a898514fc1dddbaa051a934b5b2 100644 (file)
@@ -1,3 +1,11 @@
+2004-08-16  Tom Yu  <tlyu@mit.edu>
+
+       * svc_auth_gss.c (gssrpc__svcauth_gss): Add some debug messages.
+
+       * svc.c (svc_getreqset): Don't allocate either raw or cooked
+       credentials on the stack using the cred_area char array; use
+       mem_alloc() instead.  This avoids alignment problems.
+
 2004-06-28  Tom Yu  <tlyu@mit.edu>
 
        * auth_gss.c (g_OID_equal): Fix signedness.
index e35c80c0332ebea63f61eb734e0ffa8541bd91cf..e7f3243cfa4f02ed60d16fdf0cd2ae6752a02f0a 100644 (file)
@@ -421,10 +421,9 @@ svc_getreqset(readfds)
        register int sock;
         bool_t no_dispatch;
 
-       char cred_area[2*MAX_AUTH_BYTES + RQCRED_SIZE];
-       msg.rm_call.cb_cred.oa_base = cred_area;
-       msg.rm_call.cb_verf.oa_base = &(cred_area[MAX_AUTH_BYTES]);
-       r.rq_clntcred = &(cred_area[2*MAX_AUTH_BYTES]);
+       msg.rm_call.cb_cred.oa_base = mem_alloc(MAX_AUTH_BYTES);
+       msg.rm_call.cb_verf.oa_base = mem_alloc(MAX_AUTH_BYTES);
+       r.rq_clntcred = mem_alloc(RQCRED_SIZE);
 
 #ifdef FD_SETSIZE
        for (sock = 0; sock <= max_xport; sock++) {
@@ -498,4 +497,7 @@ svc_getreqset(readfds)
                } while (stat == XPRT_MOREREQS);
            }
        }
+       mem_free(msg.rm_call.cb_cred.oa_base, MAX_AUTH_BYTES);
+       mem_free(msg.rm_call.cb_verf.oa_base, MAX_AUTH_BYTES);
+       mem_free(r.rq_clntcred, RQCRED_SIZE);
 }
index 8751251953bc45a607dd79f32b049ac19206647f..4479513cfb85ef41745885c5a52cf5aaa3ab65c9 100644 (file)
@@ -465,11 +465,16 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
        
        gc = (struct rpc_gss_cred *)rqst->rq_clntcred;
        memset(gc, 0, sizeof(*gc));
-       
+
+       log_debug("calling xdrmem_create()");
+       log_debug("oa_base=%p, oa_length=%u", rqst->rq_cred.oa_base,
+                 rqst->rq_cred.oa_length);
        xdrmem_create(&xdrs, rqst->rq_cred.oa_base,
                      rqst->rq_cred.oa_length, XDR_DECODE);
+       log_debug("xdrmem_create() returned");
        
        if (!xdr_rpc_gss_cred(&xdrs, gc)) {
+               log_debug("xdr_rpc_gss_cred() failed");
                XDR_DESTROY(&xdrs);
                return (AUTH_BADCRED);
        }
@@ -589,6 +594,7 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
        retstat = AUTH_OK;
 freegc:
        xdr_free(xdr_rpc_gss_cred, gc);
+       log_debug("returning %d from svcauth_gss()", retstat);
        return (retstat);
 }