Diff for /libaitrpc/src/srv.c between versions 1.3.2.9 and 1.3.2.10

version 1.3.2.9, 2011/08/19 12:51:50 version 1.3.2.10, 2011/08/19 14:24:54
Line 80  rpc_srv_dispatchCall(void *arg) Line 80  rpc_srv_dispatchCall(void *arg)
                         ret = -2;                          ret = -2;
                         break;                          break;
                 }                  }
                memset(buf, 0, BUFSIZ);                memset(buf, 0, sizeof buf);
                ret = recv(c->cli_sock, buf, BUFSIZ, 0);                ret = recv(c->cli_sock, buf, sizeof buf, 0);
                 if (ret == -1) {                  if (ret == -1) {
                         LOGERR;                          LOGERR;
                         ret = -3;                          ret = -3;
Line 108  rpc_srv_dispatchCall(void *arg) Line 108  rpc_srv_dispatchCall(void *arg)
                 if (rpc->call_argc) {                  if (rpc->call_argc) {
                         v = (rpc_val_t*) (buf + Limit);                          v = (rpc_val_t*) (buf + Limit);
                         // check RPC packet length                          // check RPC packet length
                        if (rpc->call_argc * sizeof(rpc_val_t) > BUFSIZ - Limit) {                        if (rpc->call_argc * sizeof(rpc_val_t) > sizeof buf - Limit) {
                                 rpc_SetErr(EMSGSIZE, "Error:: Too big RPC packet ...\n");                                  rpc_SetErr(EMSGSIZE, "Error:: Too big RPC packet ...\n");
                                 ret = -5;                                  ret = -5;
                                 goto makeReply;                                  goto makeReply;
Line 119  rpc_srv_dispatchCall(void *arg) Line 119  rpc_srv_dispatchCall(void *arg)
                         for (i = 0; i < rpc->call_argc; i++) {                          for (i = 0; i < rpc->call_argc; i++) {
                                 switch (v[i].val_type) {                                  switch (v[i].val_type) {
                                         case buffer:                                          case buffer:
                                                if (v[i].val_len > BUFSIZ - Limit) {                                                if (v[i].val_len > sizeof buf - Limit) {
                                                         rpc_SetErr(EMSGSIZE, "Error:: Too big RPC packet ...\n");                                                          rpc_SetErr(EMSGSIZE, "Error:: Too big RPC packet ...\n");
                                                         ret = -5;                                                          ret = -5;
                                                         goto makeReply;                                                          goto makeReply;
Line 130  rpc_srv_dispatchCall(void *arg) Line 130  rpc_srv_dispatchCall(void *arg)
                                                 data += v[i].val_len;                                                  data += v[i].val_len;
                                                 break;                                                  break;
                                         case string:                                          case string:
                                                if (v[i].val_len > BUFSIZ - Limit) {                                                if (v[i].val_len > sizeof buf - Limit) {
                                                         rpc_SetErr(EMSGSIZE, "Error:: Too big RPC packet ...\n");                                                          rpc_SetErr(EMSGSIZE, "Error:: Too big RPC packet ...\n");
                                                         ret = -5;                                                          ret = -5;
                                                         goto makeReply;                                                          goto makeReply;
Line 169  rpc_srv_dispatchCall(void *arg) Line 169  rpc_srv_dispatchCall(void *arg)
                         else                          else
                                 argc = rpc_srv_getVars(f, &vals);                                  argc = rpc_srv_getVars(f, &vals);
 makeReply:  makeReply:
                memset(buf, 0, BUFSIZ);                memset(buf, 0, sizeof buf);
                 rrpc = (struct tagRPCRet*) buf;                  rrpc = (struct tagRPCRet*) buf;
                 Limit = sizeof(struct tagRPCRet);                  Limit = sizeof(struct tagRPCRet);
   
Line 182  makeReply: Line 182  makeReply:
   
                 if (argc && vals) {                  if (argc && vals) {
                         v = (rpc_val_t*) (buf + Limit);                          v = (rpc_val_t*) (buf + Limit);
                        if (argc * sizeof(rpc_val_t) > BUFSIZ - Limit) {                        if (argc * sizeof(rpc_val_t) > sizeof buf - Limit) {
                                 for (i = 0; i < argc; i++)                                  for (i = 0; i < argc; i++)
                                         RPC_FREE_VAL(&vals[i]);                                          RPC_FREE_VAL(&vals[i]);
                                 rpc_srv_freeVars(f);                                  rpc_srv_freeVars(f);
Line 198  makeReply: Line 198  makeReply:
                         for (ret = i = 0; i < argc; i++) {                          for (ret = i = 0; i < argc; i++) {
                                 switch (vals[i].val_type) {                                  switch (vals[i].val_type) {
                                         case buffer:                                          case buffer:
                                                if (ret || Limit + vals[i].val_len > BUFSIZ) {                                                if (ret || Limit + vals[i].val_len > sizeof buf) {
                                                         rpc_SetErr(EMSGSIZE, "Error:: in prepare RPC packet (-7) ...\n");                                                          rpc_SetErr(EMSGSIZE, "Error:: in prepare RPC packet (-7) ...\n");
                                                         rrpc->ret_retcode = ret = -7;                                                          rrpc->ret_retcode = ret = -7;
                                                         rrpc->ret_argc = 0;                                                          rrpc->ret_argc = 0;
Line 210  makeReply: Line 210  makeReply:
                                                 Limit += vals[i].val_len;                                                  Limit += vals[i].val_len;
                                                 break;                                                  break;
                                         case string:                                          case string:
                                                if (ret || Limit + vals[i].val_len > BUFSIZ) {                                                if (ret || Limit + vals[i].val_len > sizeof buf) {
                                                         rpc_SetErr(EMSGSIZE, "Error:: in prepare RPC packet (-7) ...\n");                                                          rpc_SetErr(EMSGSIZE, "Error:: in prepare RPC packet (-7) ...\n");
                                                         rrpc->ret_retcode = ret = -7;                                                          rrpc->ret_retcode = ret = -7;
                                                         rrpc->ret_argc = 0;                                                          rrpc->ret_argc = 0;

Removed from v.1.3.2.9  
changed lines
  Added in v.1.3.2.10


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>