aboutsummaryrefslogtreecommitdiffstats
path: root/service
diff options
context:
space:
mode:
Diffstat (limited to 'service')
-rw-r--r--service/src/main.c28
-rw-r--r--service/src/util.c4
-rw-r--r--service/tests/test.sh2
3 files changed, 24 insertions, 10 deletions
diff --git a/service/src/main.c b/service/src/main.c
index e880ba3..de2bd48 100644
--- a/service/src/main.c
+++ b/service/src/main.c
@@ -190,8 +190,6 @@ search_cmd(const char *arg)
if (!(d = opendir(resultdir))) return;
- printf("%s %s\n", resultdir, hash);
-
dirstart = telldir(d);
for (i = 0; (de = readdir(d));) {
name = de->d_name;
@@ -266,8 +264,11 @@ cleanup:
void
list_cmd(const char *arg)
{
- DIR *d;
struct dirent *de;
+ struct parseinfo info;
+ char *path;
+ FILE *f;
+ DIR *d;
if (!loggedin) {
fprintf(stderr, "Not logged in!\n");
@@ -278,7 +279,16 @@ list_cmd(const char *arg)
while ((de = readdir(d))) {
if (*de->d_name == '.' && !strchr(".", de->d_name[1])) {
- printf("%s\n", de->d_name);
+ printf(">> %s\n", de->d_name);
+ path = aprintf("%s/%s/info", resultdir, de->d_name);
+ if ((f = fopen(path, "r"))) {
+ if (load_info(&info, f) != OK)
+ fprintf(stderr, "Failed to read saved file info!\n");
+ else
+ print_info(&info);
+ fclose(f);
+ }
+ free(path);
}
}
}
@@ -288,6 +298,7 @@ auth_cmd(const char *arg)
{
const char *hash;
char *ndir;
+ int ret;
if (loggedin) {
fprintf(stderr, "Already logged in!\n");
@@ -296,13 +307,16 @@ auth_cmd(const char *arg)
hash = mhash(arg ? arg : ask("Enter a password: "), -1);
ndir = aprintf("%s/.%s", resultdir, hash);
- if (mkdir(ndir, S_IRWXU | S_IRWXG | S_IRWXO) && errno != EEXIST) {
+ ret = mkdir(ndir, S_IRWXU | S_IRWXG | S_IRWXO);
+ if (!ret) {
+ printf("Success!\n");
+ } else if (ret && errno == EEXIST) {
+ printf("Success!\nWelcome back!\n");
+ } else {
fprintf(stderr, "Auth failed!\n");
return;
}
- printf("Success!\n");
-
free(resultdir);
resultdir = ndir;
loggedin = 1;
diff --git a/service/src/util.c b/service/src/util.c
index 9270fd9..ce22c4e 100644
--- a/service/src/util.c
+++ b/service/src/util.c
@@ -52,11 +52,11 @@ mhash(const char *str, int len)
/* VULN #2: BUFFER OVERFLOW */
/* see documentation/README.md for more details */
- if (len == -1) len = strlen(str) + 1;
+ if (len == -1) len = strlen(str);
for (v = 0, i = 0; i < len; i++) v += str[i];
- srand(v);
+ srand(v);
for (bp = buf, i = 0; i < MHASHLEN / 2; i++)
bp += sprintf(bp, "%02x", str[i % len] ^ (rand() % 256));
diff --git a/service/tests/test.sh b/service/tests/test.sh
index a4b1884..4835024 100644
--- a/service/tests/test.sh
+++ b/service/tests/test.sh
@@ -43,7 +43,7 @@ checkleaks() {
connect() {
if [ "$RUNTYPE" == "remote" ]; then
- nc localhost 9000
+ nc localhost 9090
elif [ "$RUNTYPE" == "debug" ]; then
checkleaks
else