fixes file name extraction on download; fixes wrong user name case

This commit is contained in:
2026-03-19 16:04:04 +02:00
parent 9ae0c23f71
commit 0b1eb69490
4 changed files with 17 additions and 5 deletions
+6
View File
@@ -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)) if (PQresultStatus(res) != PGRES_TUPLES_OK && !PQntuples(res))
return exit_query(1); 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); const char *pass = PQgetvalue(res, 0, 2);
string_to_SHA256(c->pass, passHashed); string_to_SHA256(c->pass, passHashed);
if (pass == NULL) { if (pass == NULL) {
+7 -4
View File
@@ -92,8 +92,8 @@ void file_list(session *sess, server_data_t *s_d, i_file_list_t *f_args) {
!fl_current->permissions) { !fl_current->permissions) {
continue; continue;
} }
int h_len = sprintf(item_h, "%s %zu %s", fl_current->name, fl_current->size, int h_len = sprintf(item_h, "[%s] %zu %s", fl_current->name,
fl_current->owner); fl_current->size, fl_current->owner);
int d_len = strlen(fl_current->description); int d_len = strlen(fl_current->description);
for (int i = h_len; i < d_len; i++) { 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]; char err_mes[256];
uint32_t mlen; 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); sess->file = db_get_file(&args);
if (sess->file == NULL) 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; int sd = sess->sd;
size_t fsize = 0; size_t fsize = 0;
int perm; int perm;
/* TODO: */
char *name_begin = strchr(line, '"') + 1; char *name_begin = strchr(line, '"') + 1;
char *name_end = strrchr(line, '"'); char *name_end = strrchr(line, '"');
int name_len = name_end - name_begin; int name_len = name_end - name_begin;
+3
View File
@@ -4,6 +4,7 @@
#include "main.h" #include "main.h"
#include "server.h" #include "server.h"
#include "db.h" #include "db.h"
#include <stdio.h>
/* *** MAIN *** */ /* *** MAIN *** */
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
@@ -12,6 +13,8 @@ int main(int argc, char *argv[]) {
server_data.welcome_message = get_welcome_mes(); server_data.welcome_message = get_welcome_mes();
init_db_connection(); init_db_connection();
server_data.ls = start_server(); server_data.ls = start_server();
/* TODO: display server port */
printf("Server is started!\n");
server_main_loop(&server_data); server_main_loop(&server_data);
return 0; return 0;
} }
+1 -1
View File
@@ -17,7 +17,7 @@ int32_t create_user(session *sess, char *line) {
res = db_user_create(&p); res = db_user_create(&p);
if (res > 0) { if (res > 0) {
sess->state = OP_WAIT; sess->state = OP_WAIT;
sess->uname = malloc(strlen(p.uname)); sess->uname = malloc(strlen(p.uname)+1);
strcpy(sess->uname, p.uname); strcpy(sess->uname, p.uname);
sess->uid = res; sess->uid = res;
sess->privileges = 1; /* by default */ sess->privileges = 1; /* by default */