From 06880048df2202b1828e5367b1697aee305a2358 Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Sat, 9 Jan 2016 12:37:26 -0500 Subject: finish refactor into userdb --- src/client.c | 20 ++++++++++++++++---- src/server_reqs.c | 25 +++++++++++++++++++++---- 2 files changed, 37 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/client.c b/src/client.c index 3eb77d4..330187d 100644 --- a/src/client.c +++ b/src/client.c @@ -233,10 +233,22 @@ void sig_rt_0_handler(int s, siginfo_t *info, void *v) } struct userdata_t *user = &returned_reqdata.userdata; - read_string_max(from_parent, user->username, sizeof(user->username)); - read_string_max(from_parent, user->salt, sizeof(user->salt)); - read_string_max(from_parent, user->passhash, sizeof(user->passhash)); - read(from_parent, &user->priv, sizeof(user->priv)); + if(read(from_parent, user, sizeof(*user)) != sizeof(*user)) + error("user data too short"); + break; + } + case REQ_DELUSERDATA: + { + reqdata_type = TYPE_BOOLEAN; + if(read(from_parent, &returned_reqdata.boolean, sizeof(bool)) != sizeof(bool)) + error("error reading bool"); + break; + } + case REQ_ADDUSERDATA: + { + reqdata_type = TYPE_BOOLEAN; + if(read(from_parent, &returned_reqdata.boolean, sizeof(bool)) != sizeof(bool)) + error("error reading bool"); break; } case REQ_NOP: diff --git a/src/server_reqs.c b/src/server_reqs.c index 1501434..ac53396 100644 --- a/src/server_reqs.c +++ b/src/server_reqs.c @@ -184,10 +184,7 @@ static void req_send_user(unsigned char *data, size_t datalen, struct child_data { bool confirm = true; write(sender->outpipe[1], &confirm, sizeof(confirm)); - send_string(sender->outpipe[1], user->username); - send_string(sender->outpipe[1], user->salt); - send_string(sender->outpipe[1], user->passhash); - write(sender->outpipe[1], &user->priv, sizeof(user->priv)); + write(sender->outpipe[1], user, sizeof(*user)); return; } @@ -200,6 +197,26 @@ static void req_send_user(unsigned char *data, size_t datalen, struct child_data write(sender->outpipe[1], &fail, sizeof(fail)); } +static void req_del_user(unsigned char *data, size_t datalen, struct child_data *sender) +{ + bool success = false; + if(datalen) + { + success = userdb_remove((char*)data); + } + write(sender->outpipe[1], &success, sizeof(success)); +} + +static void req_add_user(unsigned char *data, size_t datalen, struct child_data *sender) +{ + bool success = false; + if(datalen == sizeof(struct userdata_t)) + { + success = userdb_add((struct userdata_t*)data); + } + write(sender->outpipe[1], &success, sizeof(success)); +} + static const struct child_request { unsigned char code; -- cgit v1.1