]> git.ipfire.org Git - thirdparty/sarg.git/blob - auth.c
Protection against buffer overflows in getword and friends and report the origin...
[thirdparty/sarg.git] / auth.c
1 /*
2 * AUTHOR: Pedro Lineu Orso pedro.orso@gmail.com
3 * 1998, 2008
4 * SARG Squid Analysis Report Generator http://sarg.sourceforge.net
5 *
6 * SARG donations:
7 * please look at http://sarg.sourceforge.net/donations.php
8 * ---------------------------------------------------------------------
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
23 *
24 */
25
26 #include "include/conf.h"
27
28 void htaccess(const char *name)
29 {
30 char htname[MAXLEN];
31 FILE *fp_auth;
32
33 if(strncmp(UserAuthentication,"yes",3) !=0 )
34 return;
35
36 sprintf(htname,"%s/%s/.htaccess",dirname,name);
37 if((fp_auth=fopen(htname,"w"))==NULL) {
38 fprintf(stderr, "SARG: (auth) %s: %s\n",text[45],htname);
39 exit(1);
40 }
41
42 strcpy(warea,Require);
43 if (getword(buf,sizeof(buf),warea,'%')<0) {
44 printf("SARG: The \"Require\" entry of your sarg.conf file is too long for your %s file.\n",htname);
45 exit(1);
46 }
47 fputs("AuthUserFile ",fp_auth);
48 fputs(AuthUserFile,fp_auth);
49 fputs("\n",fp_auth);
50 fputs("AuthName ",fp_auth);
51 if(strstr(AuthName,"\"") == 0)
52 fputs("\"",fp_auth);
53 fputs(AuthName,fp_auth);
54 if(strstr(AuthName,"\"") == 0)
55 fputs("\"",fp_auth);
56 fputs("\n",fp_auth);
57 fputs("AuthType ",fp_auth);
58 fputs(AuthType,fp_auth);
59 fputs("\n<Limit GET POST>\n",fp_auth);
60 fputs(buf,fp_auth);
61 fputs(name,fp_auth);
62 fputs("\n</LIMIT>\n",fp_auth);
63
64 fclose(fp_auth);
65
66 return;
67 }