X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/9acf7ea2c5f9e428d3791f224b54f2e757ace36b..39a9d9d85d0f2289d8c1257251311b7cf959c700:/uip/aliasbr.c diff --git a/uip/aliasbr.c b/uip/aliasbr.c index 03934416..f523fbc5 100644 --- a/uip/aliasbr.c +++ b/uip/aliasbr.c @@ -112,7 +112,9 @@ akval (struct aka *ak, char *s) for (; ak; ak = ak->ak_next) { if (aleq (s, ak->ak_name)) { return akresult (ak); - } else if (strchr (s, ':')) { + } + + if (strchr (s, ':')) { /* The first address in a blind list will contain the alias name, so try to match, but just with just the address (not including the list name). If there's a @@ -130,6 +132,8 @@ akval (struct aka *ak, char *s) if (mp && mp->m_ingrp) { char *gname = add (mp->m_gname, NULL); + /* FIXME: gname must be true; add() never returns NULL. + * Is some other test required? */ if (gname && aleq (name, ak->ak_name)) { /* Will leak cp. */ cp = concat (gname, akresult (ak), NULL); @@ -158,14 +162,13 @@ aleq (char *string, char *aliasent) { char c; - while ((c = *string++)) + while ((c = *string++)) { if (*aliasent == '*') return 1; - else - if ((c | 040) != (*aliasent | 040)) - return 0; - else - aliasent++; + if (tolower((unsigned char)c) != tolower((unsigned char)*aliasent)) + return 0; + aliasent++; + } return (*aliasent == 0 || *aliasent == '*'); } @@ -181,7 +184,7 @@ alias (char *file) FILE *fp; if (*file != '/' - && (strncmp (file, "./", 2) && strncmp (file, "../", 3))) + && !has_prefix(file, "./") && !has_prefix(file, "../")) file = etcpath (file); if ((fp = fopen (file, "r")) == NULL) { akerrst = file; @@ -201,7 +204,7 @@ alias (char *file) fclose (fp); return i; } - + /* FALLTHRU */ case ':': /* comment */ case ';': case '#':