summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2019-11-28 00:27:27 -0500
committerrsiddharth <s@ricketyspace.net>2020-04-17 20:56:35 -0400
commit883bebb1b80bf3709bae9c7b46c184b0b992d7e0 (patch)
tree1611798abac6786c2668f8d4b456c9aee78af4ca
parentf0814b28079775b4fcee2e79a82b5403f3452bd8 (diff)
nserver: nserve.c: Update check_cmd_size.
* nserver/src/nserve.c (check_cmd_size): Update valid cmd size constraint. If command size is zero; send close connection message. * nserver/src/nserve.h (CMD_SIZE): Remove constant. (CMD_MIN_SIZE, CMD_MAX_SIZE): New constants.
-rw-r--r--nserver/src/nserve.c15
-rw-r--r--nserver/src/nserve.h3
2 files changed, 12 insertions, 6 deletions
diff --git a/nserver/src/nserve.c b/nserver/src/nserve.c
index 5016888..a0f9fd7 100644
--- a/nserver/src/nserve.c
+++ b/nserver/src/nserve.c
@@ -45,14 +45,19 @@ int check_cmd_size(char *cmd, int sock)
check(cmd != NULL, "cmd is NULL");
size_t len = strlen(cmd);
- if (len <= CMD_SIZE) {
+ debug("cmd size $%s$ %ld\n", cmd, len);
+ if (len >= CMD_MIN_SIZE && len <= CMD_MAX_SIZE) {
return 0;
+ } else if (len == 0) {
+ char *q = "closing connection\n";
+ size_t bytes = barfsock(q, strlen(q), sock);
+ check(bytes == strlen(q), "send sock failed");
+ } else {
+ char *err = "cmd size invalid\n";
+ size_t bytes = barfsock(err, strlen(err), sock);
+ check(bytes == strlen(err), "send sock failed");
}
- char *err = "error: command invalid: size > 120 characters\n";
- size_t bytes = barfsock(err, strlen(err), sock);
- check(bytes == strlen(err), "check_cmd_size: send failed");
-
return 1;
error:
return -1;
diff --git a/nserver/src/nserve.h b/nserver/src/nserve.h
index 14e1b02..75281ec 100644
--- a/nserver/src/nserve.h
+++ b/nserver/src/nserve.h
@@ -10,7 +10,8 @@
#include <dbg.h>
#include <ringbuffer.h>
-#define CMD_SIZE 120
+#define CMD_MIN_SIZE 5
+#define CMD_MAX_SIZE 120
void nserve(int sock);