X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fstatd%2Fsimu.c;h=7df04d9080abaf406c393a79f6dee7128e6c4b1a;hp=25e8badad160246f2efb600a51659deed8fb4d9e;hb=9ccfe0fa5a43dfc4453b09e328565a6c8f999fe4;hpb=18c6c616e07ec4fcd27108d87b6f02280d9687d6 diff --git a/utils/statd/simu.c b/utils/statd/simu.c index 25e8bad..7df04d9 100644 --- a/utils/statd/simu.c +++ b/utils/statd/simu.c @@ -7,8 +7,10 @@ #ifdef HAVE_CONFIG_H #include #endif + #include +#include "rpcmisc.h" #include "statd.h" #include "notlist.h" @@ -21,22 +23,30 @@ extern void my_svc_exit (void); void * sm_simu_crash_1_svc (void *argp, struct svc_req *rqstp) { + struct sockaddr_in *sin = nfs_getrpccaller_in(rqstp->rq_xprt); static char *result = NULL; struct in_addr caller; - caller = svc_getcaller(rqstp->rq_xprt)->sin_addr; + xlog(D_CALL, "Received SM_SIMU_CRASH"); + + if (sin->sin_family != AF_INET) { + xlog_warn("Call to statd from non-AF_INET address"); + goto failure; + } + + caller = sin->sin_addr; if (caller.s_addr != htonl(INADDR_LOOPBACK)) { - note(N_WARNING, "Call to statd from non-local host %s", + xlog_warn("Call to statd from non-local host %s", inet_ntoa(caller)); goto failure; } - if (ntohs(svc_getcaller(rqstp->rq_xprt)->sin_port) >= 1024) { - note(N_WARNING, "Call to statd-simu-crash from unprivileged port"); + if (ntohs(sin->sin_port) >= 1024) { + xlog_warn("Call to statd-simu-crash from unprivileged port"); goto failure; } - note (N_WARNING, "*** SIMULATING CRASH! ***"); + xlog_warn("*** SIMULATING CRASH! ***"); my_svc_exit (); if (rtnl)