From 7eea86a4cc74d58a1c97fa890ed06da0612806ed Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Sat, 17 Aug 1996 23:17:23 +0000 Subject: [PATCH] now works with new sudo --- testsudoers.c | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/testsudoers.c b/testsudoers.c index 184c4879b..c957661fd 100644 --- a/testsudoers.c +++ b/testsudoers.c @@ -150,15 +150,28 @@ int addr_matches(n) char *n; { int i; - struct in_addr addr; - - addr.s_addr = inet_addr(n); + char *m; + struct in_addr addr, mask; + + /* If there's an explicate netmask, use it. */ + if ((m = strchr(n, '/'))) { + *m++ = '\0'; + mask.s_addr = inet_addr(m); + addr.s_addr = inet_addr(n); + *(m - 1) = '/'; + + for (i = 0; i < num_interfaces; i++) + if ((interfaces[i].addr.s_addr & mask.s_addr) == addr.s_addr) + return(TRUE); + } else { + addr.s_addr = inet_addr(n); - for (i = 0; i < num_interfaces; i++) - if (interfaces[i].addr.s_addr == addr.s_addr || - (interfaces[i].addr.s_addr & interfaces[i].netmask.s_addr) - == addr.s_addr) - return(TRUE); + for (i = 0; i < num_interfaces; i++) + if (interfaces[i].addr.s_addr == addr.s_addr || + (interfaces[i].addr.s_addr & interfaces[i].netmask.s_addr) + == addr.s_addr) + return(TRUE); + } return(FALSE); } @@ -239,7 +252,7 @@ void set_perms(i) } -main(argc, argv) +int main(argc, argv) int argc; char **argv; { @@ -312,6 +325,9 @@ main(argc, argv) /* load ip addr/mask for each interface */ load_interfaces(); + /* allocate space for data structures in the parser */ + init_parser(); + if (yyparse() || parse_error) { (void) printf("doesn't parse.\n"); } else { @@ -333,6 +349,8 @@ main(argc, argv) /* dump aliases */ (void) printf("Matching Aliases --\n"); dumpaliases(); + + exit(0); } -- 2.40.0