+/*
+ * Copyright (C) 1996-2015 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.
+ */
+
/*
* basic_smb_auth - SMB proxy authentication module
* Copyright (C) 1998 Richard Huveneers <richard@hekkihek.hacom.nl>
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * SQUID Web Proxy Cache http://www.squid-cache.org/
- * ----------------------------------------------------------
- *
- * Squid is the result of efforts by numerous individuals from
- * the Internet community; see the CONTRIBUTORS file for full
- * details. Many organizations have provided support for Squid's
- * development; see the SPONSORS file for full details. Squid is
- * Copyrighted (C) 2001 by the Regents of the University of
- * California; see the COPYRIGHT file for full details. Squid
- * incorporates software developed and/or copyrighted by other
- * sources; see the CREDITS file for full details.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
*/
-#define SQUID_NO_ALLOC_PROTECT 1
-#include "config.h"
+
+#include "squid.h"
#include "helpers/defines.h"
#include "rfc1738.h"
#include "util.h"
-#if HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#if HAVE_STRING_H
-#include <string.h>
-#endif
-
+#include <cstring>
-#define NMB_UNICAST 1
-#define NMB_BROADCAST 2
+#define NMB_UNICAST 1
+#define NMB_BROADCAST 2
struct SMBDOMAIN {
- const char *name; /* domain name */
- const char *sname; /* match this with user input */
- const char *passthrough; /* pass-through authentication */
- const char *nmbaddr; /* name service address */
- int nmbcast; /* broadcast or unicast */
- char *authshare; /* share name of auth file */
- const char *authfile; /* pathname of auth file */
- struct SMBDOMAIN *next; /* linked list */
+ const char *name; /* domain name */
+ const char *sname; /* match this with user input */
+ const char *passthrough; /* pass-through authentication */
+ const char *nmbaddr; /* name service address */
+ int nmbcast; /* broadcast or unicast */
+ char *authshare; /* share name of auth file */
+ const char *authfile; /* pathname of auth file */
+ struct SMBDOMAIN *next; /* linked list */
};
struct SMBDOMAIN *firstdom = NULL;
char *t;
int i = 0;
- for (t = s; *t != '\0'; t++) {
- if (i > HELPER_INPUT_BUFFER-2) {
+ for (t = s; *t != '\0'; ++t) {
+ /*
+ * NP: The shell escaping permits 'i' to jump up to 2 octets per loop,
+ * so ensure we have at least 3 free.
+ */
+ if (i > HELPER_INPUT_BUFFER-3) {
buf[i] = '\0';
(void) fputs(buf, p);
i = 0;
if (*t == '\\')
buf[i++] = '\\';
- buf[i++] = *t;
+ buf[i] = *t;
+ ++i;
}
if (i > 0) {
return 1;
/* parse command line arguments */
- for (i = 1; i < argc; i++) {
+ for (i = 1; i < argc; ++i) {
if (strcmp(argv[i], "-d") == 0) {
debug_enabled = 1;
continue;
return 1;
/* convert backslashes to forward slashes */
- for (s = lastdom->authshare; *s != '\0'; s++)
+ for (s = lastdom->authshare; *s != '\0'; ++s)
if (*s == '\\')
*s = '/';
/* strip leading forward slash from share name */
if (*lastdom->authshare == '/')
- lastdom->authshare++;
+ ++lastdom->authshare;
if ((s = strchr(lastdom->authshare, '/')) != NULL) {
*s = '\0';
shcmd = debug_enabled ? HELPERSCRIPT : HELPERSCRIPT " > /dev/null 2>&1";
- /* pass to helper script */
- if (putenv((char *)"SAMBAPREFIX=" SAMBAPREFIX) != 0)
- return 1;
-
while (fgets(buf, HELPER_INPUT_BUFFER, stdin) != NULL) {
if ((s = strchr(buf, '\n')) == NULL)
SEND_OK("");
else
SEND_ERR("");
- } /* while (1) */
+ } /* while (1) */
return 0;
}
+