summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2019-12-23 21:02:39 -0500
committerrsiddharth <s@ricketyspace.net>2020-04-17 20:56:36 -0400
commit33159496912aa5e65314a73941f191c06fe3d581 (patch)
tree6d6efebc9d5e3e1d1dae156c6a92dcefa688f0c1
parent8c164789ee0e7cbfc745f568791cd830bdebcd89 (diff)
nserver: Update check_cmd.
* nserver/src/ncmd.c (check_cmd): Add argument err. * nserver/src/ncmd.h (check_cmd): Update function declaration. * nserver/tests/ncmd_tests.c (test_check_cmd): Update test.
-rw-r--r--nserver/src/ncmd.c19
-rw-r--r--nserver/src/ncmd.h2
-rw-r--r--nserver/tests/ncmd_tests.c26
3 files changed, 25 insertions, 22 deletions
diff --git a/nserver/src/ncmd.c b/nserver/src/ncmd.c
index ee6f9df..3a20db2 100644
--- a/nserver/src/ncmd.c
+++ b/nserver/src/ncmd.c
@@ -20,10 +20,9 @@ int sanitize(char *cmd)
return -1;
}
-char *check_cmd(char *cmd)
+int check_cmd(char *cmd, char *err)
{
- char *err = NULL;
-
+ check_mem(err);
check(cmd != NULL, "cmd is NULL");
int rc = sanitize(cmd);
@@ -31,19 +30,21 @@ char *check_cmd(char *cmd)
size_t len = strlen(cmd);
if (len >= CMD_MIN_SIZE && len <= CMD_MAX_SIZE) {
- return NULL;
+ return 0;
}
if (len == 0) {
- err = "closing connection\n";
+ strncpy(err, "closing connection\n", RSP_SIZE);
+ return -1;
} else {
- err = "command size invalid\n";
+ strncpy(err, "command size invalid\n", RSP_SIZE);
+ return -1;
}
- return err;
+ return 0;
error:
- err = "internal error\n";
- return err;
+ strncpy(err, "internal error\n", RSP_SIZE);
+ return -1;
}
diff --git a/nserver/src/ncmd.h b/nserver/src/ncmd.h
index df84b70..5f63951 100644
--- a/nserver/src/ncmd.h
+++ b/nserver/src/ncmd.h
@@ -22,7 +22,7 @@ enum FUNCTIONS {
};
int sanitize(char *cmd);
-char *check_cmd(char *cmd);
+int check_cmd(char *cmd, char *err);
struct bstrList *cmd_parts(char *cmd);
diff --git a/nserver/tests/ncmd_tests.c b/nserver/tests/ncmd_tests.c
index 14c765b..73ad46e 100644
--- a/nserver/tests/ncmd_tests.c
+++ b/nserver/tests/ncmd_tests.c
@@ -55,30 +55,31 @@ char *test_sanitize()
char *test_check_cmd()
{
- char *cmd = calloc(128, sizeof(char));
+ char *err = (char *) calloc(RSP_SIZE, sizeof(char));
+
+ char *cmd = (char *) calloc(128, sizeof(char));
mu_assert(cmd != NULL, "calloc failed");
char *bacon = "/create api/bacon";
strncpy(cmd, bacon, strlen(bacon));
mu_assert(strlen(cmd) == strlen(bacon), "strncpy failed");
- char *err = check_cmd(cmd);
- mu_assert(err == NULL, "check_cmd failed");
-
+ int rc = check_cmd(cmd, err);
+ mu_assert(rc == 0, "check_cmd failed");
+ memset(err, '\0', RSP_SIZE);
memset(cmd, '\0', 128);
-
char *c = "/c";
strncpy(cmd, c, strlen(c));
mu_assert(strlen(cmd) == strlen(c), "strncpy failed");
- err = check_cmd(cmd);
- mu_assert(err != NULL, "check_cmd failed");
+ rc = check_cmd(cmd, err);
+ mu_assert(rc < 0, "check_cmd failed");
mu_assert(strcmp(err, "command size invalid\n") == 0,
"wrong err msg");
-
+ memset(err, '\0', RSP_SIZE);
memset(cmd, '\0', 128);
@@ -86,19 +87,20 @@ char *test_check_cmd()
strncpy(cmd, empty, strlen(empty));
mu_assert(strlen(cmd) == strlen(empty), "strncpy failed");
- err = check_cmd(cmd);
- mu_assert(err != NULL, "check_cmd failed");
+ rc = check_cmd(cmd, err);
+ mu_assert(rc < 0, "check_cmd failed");
mu_assert(strcmp(err, "closing connection\n") == 0,
"wrong err msg");
- err = check_cmd(NULL);
- mu_assert(err != NULL, "check_cmd failed");
+ rc = check_cmd(NULL, err);
+ mu_assert(rc < 0, "check_cmd failed");
mu_assert(strcmp(err, "internal error\n") == 0,
"wrong err msg");
// Cleanup.
+ free(err);
free(cmd);
return NULL;