|
|
| 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; |