ref: 23aaf92ee4cc8844a5390e3048a23b39c917730c
parent: a650163aca0079b9166adadf0360967d8d152060
author: sirjofri <sirjofri@sirjofri.de>
date: Thu Apr 15 04:05:35 EDT 2021
fixes edge cases and error message output
--- a/fingerd.c
+++ b/fingerd.c
@@ -46,8 +46,8 @@
splitpath(char *req)
{
char *file;
- file = strrchr(req, '/');
- if (file == nil || strlen(file) == 0)
+ file = strchr(req, '/');
+ if (file == nil || strlen(file) <= 1)
return "finger";
file[0] = 0;
return file+1;
@@ -129,6 +129,10 @@
default: /* user request */
file = splitpath(req);
user = req;
+ if (strlen(user) <= 0) {
+ print("bad request.\n");
+ break;
+ }
path = smprint("/usr/%s/finger/finger", user);
if (!vaccess(path)){
printnouser(user);
@@ -137,7 +141,7 @@
free(path);
path = smprint("/usr/%s/finger/%s", user, file);
if (!cat(path, OREAD))
- printnofile(path);
+ printnofile(file);
free(path);
}
}