+/*
+ * Copyright (C) 1996-2014 The Squid Software Foundation and contributors
+ *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
+ */
+
/*
* -----------------------------------------------------------------------------
*
*
* -----------------------------------------------------------------------------
*/
-/*
- * Hosted at http://sourceforge.net/projects/squidkerbauth
- */
+
#include "squid.h"
#include "helpers/defines.h"
-#include "util.h"
#include "rfc1738.h"
+#include "util.h"
-#ifdef HAVE_LDAP
+#if HAVE_LDAP
#include "support.h"
-#ifdef HAVE_CTYPE_H
-#include <ctype.h>
-#endif
+#include <cctype>
void
init_args(struct main_args *margs)
void clean_gd(struct gdstruct *gdsp);
void clean_nd(struct ndstruct *ndsp);
-void clean_ls(struct ndstruct *lssp);
+void clean_ls(struct lsstruct *lssp);
void
clean_gd(struct gdstruct *gdsp)
pp = p;
p = p->next;
}
- if (p->group) {
- xfree(p->group);
- p->group = NULL;
- }
- if (p->domain) {
- xfree(p->domain);
- p->domain = NULL;
- }
- if (pp && pp->next) {
- xfree(pp->next);
- pp->next = NULL;
- }
- if (p == gdsp) {
- xfree(gdsp);
- gdsp = NULL;
- }
+ safe_free(p->group);
+ safe_free(p->domain);
+ if (pp)
+ safe_free(pp->next);
+ if (p == gdsp)
+ safe_free(gdsp);
p = gdsp;
}
}
pp = p;
p = p->next;
}
- if (p->netbios) {
- xfree(p->netbios);
- p->netbios = NULL;
- }
- if (p->domain) {
- xfree(p->domain);
- p->domain = NULL;
- }
- if (pp && pp->next) {
- xfree(pp->next);
- pp->next = NULL;
- }
- if (p == ndsp) {
- xfree(ndsp);
- ndsp = NULL;
- }
+ safe_free(p->netbios);
+ safe_free(p->domain);
+ if (pp)
+ safe_free(pp->next);
+ if (p == ndsp)
+ safe_free(ndsp);
p = ndsp;
}
}
pp = p;
p = p->next;
}
- if (p->lserver) {
- xfree(p->lserver);
- p->lserver = NULL;
- }
- if (p->domain) {
- xfree(p->domain);
- p->domain = NULL;
- }
- if (pp && pp->next) {
- xfree(pp->next);
- pp->next = NULL;
- }
- if (p == lssp) {
- xfree(lssp);
- lssp = NULL;
- }
+ safe_free(p->lserver);
+ safe_free(p->domain);
+ if (pp)
+ safe_free(pp->next);
+ if (p == lssp)
+ safe_free(lssp);
p = lssp;
}
}
void
clean_args(struct main_args *margs)
{
- if (margs->glist) {
- xfree(margs->glist);
- margs->glist = NULL;
- }
- if (margs->ulist) {
- xfree(margs->ulist);
- margs->ulist = NULL;
- }
- if (margs->tlist) {
- xfree(margs->tlist);
- margs->tlist = NULL;
- }
- if (margs->nlist) {
- xfree(margs->nlist);
- margs->nlist = NULL;
- }
- if (margs->llist) {
- xfree(margs->llist);
- margs->llist = NULL;
- }
- if (margs->luser) {
- xfree(margs->luser);
- margs->luser = NULL;
- }
- if (margs->lpass) {
- xfree(margs->lpass);
- margs->lpass = NULL;
- }
- if (margs->lbind) {
- xfree(margs->lbind);
- margs->lbind = NULL;
- }
- if (margs->lurl) {
- xfree(margs->lurl);
- margs->lurl = NULL;
- }
- if (margs->ssl) {
- xfree(margs->ssl);
- margs->ssl = NULL;
- }
- if (margs->ddomain) {
- xfree(margs->ddomain);
- margs->ddomain = NULL;
- }
+ safe_free(margs->glist);
+ safe_free(margs->ulist);
+ safe_free(margs->tlist);
+ safe_free(margs->nlist);
+ safe_free(margs->llist);
+ safe_free(margs->luser);
+ safe_free(margs->lpass);
+ safe_free(margs->lbind);
+ safe_free(margs->lurl);
+ safe_free(margs->ssl);
+ safe_free(margs->ddomain);
if (margs->groups) {
clean_gd(margs->groups);
margs->groups = NULL;
char *user, *domain, *group;
char *up=NULL, *dp=NULL, *np=NULL;
char *nuser, *nuser8 = NULL, *netbios;
- char *c;
int opt;
struct main_args margs;
exit(1);
}
while (1) {
+ char *c;
if (fgets(buf, sizeof(buf) - 1, stdin) == NULL) {
if (ferror(stdin)) {
debug((char *) "%s| %s: FATAL: fgets() failed! dying..... errno=%d (%s)\n", LogTime(), PROGRAM, ferror(stdin),
log((char *) "%s| %s: INFO: Got User: %s Netbios Name: %s\n", LogTime(), PROGRAM, up, np);
domain = get_netbios_name(&margs, netbios);
user = nuser;
- xfree(up);
- xfree(np);
+ safe_free(up);
+ safe_free(np);
} else if (domain) {
strup(domain);
*domain = '\0';
dp = xstrdup(rfc1738_escape(domain));
if (!domain && margs.ddomain) {
domain = xstrdup(margs.ddomain);
+ dp = xstrdup(rfc1738_escape(domain));
if (debug_enabled)
debug((char *) "%s| %s: INFO: Got User: %s set default domain: %s\n", LogTime(), PROGRAM, up, dp);
else
else
log((char *) "%s| %s: INFO: Got User: %s Domain: %s\n", LogTime(), PROGRAM, up, domain ? dp : "NULL");
- xfree(up);
- xfree(dp);
+ safe_free(up);
+ safe_free(dp);
if (!strcmp(user, "QQ") && domain && !strcmp(domain, "QQ")) {
clean_args(&margs);
exit(-1);
strup(char *s)
{
while (*s) {
- *s = toupper((unsigned char) *s);
+ *s = (char)toupper((unsigned char) *s);
++s;
}
}
#else
-#include <stdio.h>
-#include <stdlib.h>
+#include <cstdlib>
int
main(int argc, char *const argv[])
{