X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fplugins%2Fradius%2Fradrealms.c;h=ab923cc114a7114cb79928454719c04431e31e2f;hb=HEAD;hp=7a30370121bdbca99fab7ac7b7479b74933d3d6b;hpb=f8c05f21cc743132fb7c4b996568c09a374725b9;p=ppp.git diff --git a/pppd/plugins/radius/radrealms.c b/pppd/plugins/radius/radrealms.c index 7a30370..ab923cc 100644 --- a/pppd/plugins/radius/radrealms.c +++ b/pppd/plugins/radius/radrealms.c @@ -17,13 +17,20 @@ static char const RCSID[] = "$Id: radrealms.c,v 1.2 2004/11/14 07:26:26 paulus Exp $"; -#include "pppd.h" -#include "radiusclient.h" #include #include #include +#include +#include +#include +#include +#include + +#include + +#include "radiusclient.h" -char pppd_version[] = VERSION; +char pppd_version[] = PPPD_VERSION; char radrealms_config[MAXPATHLEN] = "/etc/radiusclient/realms"; @@ -67,11 +74,13 @@ lookup_realm(char const *user, } if ((fd = fopen(radrealms_config, "r")) == NULL) { - option_error("cannot open %s", radrealms_config); + ppp_option_error("cannot open %s", radrealms_config); + free(auths); + free(accts); return; - } + } info("Reading %s", radrealms_config); - + while ((fgets(buffer, sizeof(buffer), fd) != NULL)) { line++; @@ -85,8 +94,10 @@ lookup_realm(char const *user, if (p == NULL || (strcmp(p, "authserver") !=0 && strcmp(p, "acctserver"))) { fclose(fd); - option_error("%s: invalid line %d: %s", radrealms_config, + ppp_option_error("%s: invalid line %d: %s", radrealms_config, line, buffer); + free(auths); + free(accts); return; } info("Parsing '%s' entry:", p); @@ -99,8 +110,10 @@ lookup_realm(char const *user, if ((p = strtok(NULL, "\t ")) == NULL) { fclose(fd); - option_error("%s: realm name missing on line %d: %s", + ppp_option_error("%s: realm name missing on line %d: %s", radrealms_config, line, buffer); + free(auths); + free(accts); return; } @@ -109,16 +122,20 @@ lookup_realm(char const *user, info(" - Matched realm %s", p); if ((p = strtok(NULL, ":")) == NULL) { fclose(fd); - option_error("%s: server address missing on line %d: %s", + ppp_option_error("%s: server address missing on line %d: %s", radrealms_config, line, buffer); + free(auths); + free(accts); return; } s->name[s->max] = strdup(p); info(" - Address is '%s'",p); if ((p = strtok(NULL, "\t ")) == NULL) { fclose(fd); - option_error("%s: server port missing on line %d: %s", + ppp_option_error("%s: server port missing on line %d: %s", radrealms_config, line, buffer); + free(auths); + free(accts); return; } s->port[s->max] = atoi(p); @@ -131,9 +148,13 @@ lookup_realm(char const *user, if (accts->max) *acctserver = accts; + else + free(accts); if (auths->max) *authserver = auths; + else + free(auths); return; } @@ -143,6 +164,6 @@ plugin_init(void) { radius_pre_auth_hook = lookup_realm; - add_options(Options); + ppp_add_options(Options); info("RADIUS Realms plugin initialized."); }