diff --git a/src/db.c b/src/db.c index 5890aa1..31a0bf2 100644 --- a/src/db.c +++ b/src/db.c @@ -129,6 +129,12 @@ int32_t db_user_auth(i_auth_t *c, o_auth_t *r) { if (PQresultStatus(res) != PGRES_TUPLES_OK && !PQntuples(res)) return exit_query(1); + const int tup_len = PQntuples(res); + + if (tup_len == 0) { + return exit_query(4); + } + const char *pass = PQgetvalue(res, 0, 2); string_to_SHA256(c->pass, passHashed); if (pass == NULL) { diff --git a/src/file_p.c b/src/file_p.c index c92ef9f..5abf9fb 100644 --- a/src/file_p.c +++ b/src/file_p.c @@ -92,8 +92,8 @@ void file_list(session *sess, server_data_t *s_d, i_file_list_t *f_args) { !fl_current->permissions) { continue; } - int h_len = sprintf(item_h, "%s %zu %s", fl_current->name, fl_current->size, - fl_current->owner); + int h_len = sprintf(item_h, "[%s] %zu %s", fl_current->name, + fl_current->size, fl_current->owner); int d_len = strlen(fl_current->description); for (int i = h_len; i < d_len; i++) { @@ -143,7 +143,11 @@ int32_t file_send_prepare(session *sess, char *line, server_data_t *s_d) { char err_mes[256]; uint32_t mlen; - sscanf(line, "%*s %*s %s", args.name); + char *name_begin = strchr(line, '[') + 1; + char *name_end = strrchr(line, ']'); + int name_len = name_end - name_begin; + strncpy(args.name, name_begin, name_len); + args.name[name_len] = 0; sess->file = db_get_file(&args); if (sess->file == NULL) @@ -183,7 +187,6 @@ int file_receive_prepare(session *sess, char *line, server_data_t *s_d) { int sd = sess->sd; size_t fsize = 0; int perm; - /* TODO: */ char *name_begin = strchr(line, '"') + 1; char *name_end = strrchr(line, '"'); int name_len = name_end - name_begin; diff --git a/src/main.c b/src/main.c index ef1a2c2..93df41d 100644 --- a/src/main.c +++ b/src/main.c @@ -4,6 +4,7 @@ #include "main.h" #include "server.h" #include "db.h" +#include /* *** MAIN *** */ int main(int argc, char *argv[]) { @@ -12,6 +13,8 @@ int main(int argc, char *argv[]) { server_data.welcome_message = get_welcome_mes(); init_db_connection(); server_data.ls = start_server(); + /* TODO: display server port */ + printf("Server is started!\n"); server_main_loop(&server_data); return 0; } \ No newline at end of file diff --git a/src/user.c b/src/user.c index 809b218..844631f 100644 --- a/src/user.c +++ b/src/user.c @@ -17,7 +17,7 @@ int32_t create_user(session *sess, char *line) { res = db_user_create(&p); if (res > 0) { sess->state = OP_WAIT; - sess->uname = malloc(strlen(p.uname)); + sess->uname = malloc(strlen(p.uname)+1); strcpy(sess->uname, p.uname); sess->uid = res; sess->privileges = 1; /* by default */