X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nonroot.c;h=249bff71e2c6a959f251e39699b31ddb106a67c0;hb=85c74b6283f53e8deeab46354a4d3971039b6d56;hp=6280557c4647fcba52cb84aed966d63490f3317b;hpb=4b83f8e50792b459dfd8a6ffe470c2fccb524e7b;p=betaftpd diff --git a/nonroot.c b/nonroot.c index 6280557..249bff7 100644 --- a/nonroot.c +++ b/nonroot.c @@ -43,10 +43,6 @@ #include #endif -#if HAVE_CONFIG_H -#include -#endif - #if HAVE_UNISTD_H #include #endif @@ -167,26 +163,25 @@ int nr_intperm(const uid_t uid, const char * const rightfile, fscanf(rights, "%s %s %d %d\n", this_entry, these_rights, &this_uid, &this_gid); - /* - * a bit (a BIT?) ugly, perhaps (PERHAPS?) - * note: no typo, it's supposed to be a single `=' sign - */ - if ((strcmp(this_entry, entry) == 0 && (rights_assigned = 1)) || - (strcmp(this_entry, ".default") == 0 && - strcmp(this_entry, ".rights") != 0 && - rights_assigned == 0)) { + if (strcmp(this_entry, entry) == 0) rights_assigned = 1; + if (strcmp(this_entry, ".default") == 0) rights_assigned = 2; + + if (rights_assigned != 0) { if (ret_rights != NULL) strcpy(ret_rights, these_rights); - strcpy(check_rights, these_rights); - check_uid = this_uid; - check_gid = this_gid; + strcpy(check_rights, these_rights); + check_uid = this_uid; + check_gid = this_gid; + + /* if we found a `real' (non-default) match, break right away */ if (rights_assigned == 1) break; - rights_assigned = 1; } } - if (rights_assigned == 0) puts("no entry! denying...\n"); - if (rights_assigned == 0) return -1; /* no entry, no access */ + if (rights_assigned == 0) { + puts("no entry! denying...\n"); + return -1; /* no entry, no access */ + } /* if we're only looking for at entry, return OK now */ if (perm == 0) {