You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Randy Terbush <ra...@hyperreal.org> on 1997/09/15 00:48:15 UTC
cvs commit: apachen/src/support cls.c htdigest.c htpasswd.c logresolve.c rotatelogs.c suexec.c suexec.h
randy 97/09/14 15:48:14
Modified: src/support cls.c htdigest.c htpasswd.c logresolve.c
rotatelogs.c suexec.c suexec.h
Log:
indent
Revision Changes Path
1.4 +66 -65 apachen/src/support/cls.c
Index: cls.c
===================================================================
RCS file: /export/home/cvs/apachen/src/support/cls.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- cls.c 1996/11/03 21:02:30 1.3
+++ cls.c 1997/09/14 22:48:08 1.4
@@ -14,150 +14,151 @@
* * - swallow remaining characters
* <x> - exact match for any other character
*/
-static int
-checkmask(const char *data, const char *mask)
+static int checkmask(const char *data, const char *mask)
{
int i, ch, d;
- for (i=0; mask[i] != '\0' && mask[i] != '*'; i++)
- {
+ for (i = 0; mask[i] != '\0' && mask[i] != '*'; i++) {
ch = mask[i];
d = data[i];
- if (ch == '@')
- {
- if (!isupper(d)) return 0;
- } else if (ch == '$')
- {
- if (!islower(d)) return 0;
- } else if (ch == '#')
- {
- if (!isdigit(d)) return 0;
- } else if (ch == '&')
- {
- if (!isxdigit(d)) return 0;
- } else if (ch != d) return 0;
+ if (ch == '@') {
+ if (!isupper(d))
+ return 0;
+ }
+ else if (ch == '$') {
+ if (!islower(d))
+ return 0;
+ }
+ else if (ch == '#') {
+ if (!isdigit(d))
+ return 0;
+ }
+ else if (ch == '&') {
+ if (!isxdigit(d))
+ return 0;
+ }
+ else if (ch != d)
+ return 0;
}
- if (mask[i] == '*') return 1;
- else return (data[i] == '\0');
+ if (mask[i] == '*')
+ return 1;
+ else
+ return (data[i] == '\0');
}
/*
* Converts 8 hex digits to a time integer
*/
-static int
-hex2sec(const char *x)
+static int hex2sec(const char *x)
{
int i, ch;
unsigned int j;
- for (i=0, j=0; i < 8; i++)
- {
+ for (i = 0, j = 0; i < 8; i++) {
ch = x[i];
j <<= 4;
- if (isdigit(ch)) j |= ch - '0';
- else if (isupper(ch)) j |= ch - ('A' - 10);
- else j |= ch - ('a' - 10);
+ if (isdigit(ch))
+ j |= ch - '0';
+ else if (isupper(ch))
+ j |= ch - ('A' - 10);
+ else
+ j |= ch - ('a' - 10);
}
- if (j == 0xffffffff) return -1; /* so that it works with 8-byte ints */
- else return j;
+ if (j == 0xffffffff)
+ return -1; /* so that it works with 8-byte ints */
+ else
+ return j;
}
-int
-main(int argc, char **argv)
+int main(int argc, char **argv)
{
int i, ver;
DIR *d;
struct dirent *e;
const char *s;
FILE *fp;
- char path[FILENAME_MAX+1];
+ char path[FILENAME_MAX + 1];
char line[1035];
time_t date, lmod, expire;
unsigned int len;
struct tm ts;
char sdate[30], slmod[30], sexpire[30];
- const char time_format[]="%e %b %Y %R";
+ const char time_format[] = "%e %b %Y %R";
- if (argc != 2)
- {
+ if (argc != 2) {
printf("Usage: cls directory\n");
exit(0);
}
d = opendir(argv[1]);
- if (d == NULL)
- {
+ if (d == NULL) {
perror("opendir");
exit(1);
}
- for (;;)
- {
+ for (;;) {
e = readdir(d);
- if (e == NULL) break;
+ if (e == NULL)
+ break;
s = e->d_name;
- if (s[0] == '.' || s[0] == '#') continue;
+ if (s[0] == '.' || s[0] == '#')
+ continue;
sprintf(path, "%s/%s", argv[1], s);
fp = fopen(path, "r");
- if (fp == NULL)
- {
+ if (fp == NULL) {
perror("fopen");
continue;
}
- if (fgets(line, 1034, fp) == NULL)
- {
+ if (fgets(line, 1034, fp) == NULL) {
perror("fgets");
fclose(fp);
continue;
}
- if (!checkmask(line, "&&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&&\n"))
- {
+ if (!checkmask(line, "&&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&&\n")) {
fprintf(stderr, "Bad cache file\n");
fclose(fp);
continue;
}
date = hex2sec(line);
- lmod = hex2sec(line+9);
- expire = hex2sec(line+18);
- ver = hex2sec(line+27);
- len = hex2sec(line+35);
- if (fgets(line, 1034, fp) == NULL)
- {
+ lmod = hex2sec(line + 9);
+ expire = hex2sec(line + 18);
+ ver = hex2sec(line + 27);
+ len = hex2sec(line + 35);
+ if (fgets(line, 1034, fp) == NULL) {
perror("fgets");
fclose(fp);
continue;
}
fclose(fp);
i = strlen(line);
- if (strncmp(line, "X-URL: ", 7) != 0 || line[i-1] != '\n')
- {
+ if (strncmp(line, "X-URL: ", 7) != 0 || line[i - 1] != '\n') {
fprintf(stderr, "Bad cache file\n");
continue;
}
- line[i-1] = '\0';
- if (date != -1)
- {
+ line[i - 1] = '\0';
+ if (date != -1) {
ts = *gmtime(&date);
strftime(sdate, 30, time_format, &ts);
- } else
+ }
+ else
strcpy(sdate, "-");
- if (lmod != -1)
- {
+ if (lmod != -1) {
ts = *gmtime(&lmod);
strftime(slmod, 30, time_format, &ts);
- } else
+ }
+ else
strcpy(slmod, "-");
- if (expire != -1)
- {
+ if (expire != -1) {
ts = *gmtime(&expire);
strftime(sexpire, 30, time_format, &ts);
- } else
+ }
+ else
strcpy(sexpire, "-");
- printf("%s: %d; %s %s %s\n", line+7, ver, sdate, slmod, sexpire);
+ printf("%s: %d; %s %s %s\n", line + 7, ver, sdate, slmod, sexpire);
}
closedir(d);
1.11 +104 -91 apachen/src/support/htdigest.c
Index: htdigest.c
===================================================================
RCS file: /export/home/cvs/apachen/src/support/htdigest.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- htdigest.c 1997/09/02 16:12:16 1.10
+++ htdigest.c 1997/09/14 22:48:09 1.11
@@ -26,53 +26,60 @@
char *tn;
-char *strd(char *s) {
+char *strd(char *s)
+{
char *d;
- d=(char *)malloc(strlen(s) + 1);
- strcpy(d,s);
- return(d);
+ d = (char *) malloc(strlen(s) + 1);
+ strcpy(d, s);
+ return (d);
}
-void getword(char *word, char *line, char stop) {
- int x = 0,y;
+void getword(char *word, char *line, char stop)
+{
+ int x = 0, y;
- for(x=0;((line[x]) && (line[x] != stop));x++)
- word[x] = line[x];
+ for (x = 0; ((line[x]) && (line[x] != stop)); x++)
+ word[x] = line[x];
word[x] = '\0';
- if(line[x]) ++x;
- y=0;
+ if (line[x])
+ ++x;
+ y = 0;
- while((line[y++] = line[x++]));
+ while ((line[y++] = line[x++]));
}
-int getline(char *s, int n, FILE *f) {
- register int i=0;
+int getline(char *s, int n, FILE *f)
+{
+ register int i = 0;
- while(1) {
- s[i] = (char)fgetc(f);
+ while (1) {
+ s[i] = (char) fgetc(f);
- if(s[i] == CR)
- s[i] = fgetc(f);
+ if (s[i] == CR)
+ s[i] = fgetc(f);
- if((s[i] == 0x4) || (s[i] == LF) || (i == (n-1))) {
- s[i] = '\0';
- return (feof(f) ? 1 : 0);
- }
- ++i;
+ if ((s[i] == 0x4) || (s[i] == LF) || (i == (n - 1))) {
+ s[i] = '\0';
+ return (feof(f) ? 1 : 0);
+ }
+ ++i;
}
}
-void putline(FILE *f,char *l) {
+void putline(FILE *f, char *l)
+{
int x;
- for(x=0;l[x];x++) fputc(l[x],f);
- fputc('\n',f);
+ for (x = 0; l[x]; x++)
+ fputc(l[x], f);
+ fputc('\n', f);
}
-void add_password(char *user, char *realm, FILE *f) {
+void add_password(char *user, char *realm, FILE *f)
+{
char *pw;
AP_MD5_CTX context;
unsigned char digest[16];
@@ -80,41 +87,45 @@
unsigned int i;
pw = strd((char *) getpass("New password:"));
- if(strcmp(pw,(char *) getpass("Re-type new password:"))) {
- fprintf(stderr,"They don't match, sorry.\n");
- if(tn)
- unlink(tn);
- exit(1);
+ if (strcmp(pw, (char *) getpass("Re-type new password:"))) {
+ fprintf(stderr, "They don't match, sorry.\n");
+ if (tn)
+ unlink(tn);
+ exit(1);
}
- fprintf(f,"%s:%s:",user,realm);
+ fprintf(f, "%s:%s:", user, realm);
/* Do MD5 stuff */
sprintf(string, "%s:%s:%s", user, realm, pw);
- MD5Init (&context);
- MD5Update (&context, (unsigned char *) string, strlen(string));
- MD5Final (digest, &context);
+ MD5Init(&context);
+ MD5Update(&context, (unsigned char *) string, strlen(string));
+ MD5Final(digest, &context);
for (i = 0; i < 16; i++)
- fprintf(f, "%02x", digest[i]);
+ fprintf(f, "%02x", digest[i]);
fprintf(f, "\n");
}
-void usage() {
- fprintf(stderr,"Usage: htdigest [-c] passwordfile realm username\n");
- fprintf(stderr,"The -c flag creates a new file.\n");
+void usage()
+{
+ fprintf(stderr, "Usage: htdigest [-c] passwordfile realm username\n");
+ fprintf(stderr, "The -c flag creates a new file.\n");
exit(1);
}
-void interrupted() {
- fprintf(stderr,"Interrupted.\n");
- if(tn) unlink(tn);
+void interrupted()
+{
+ fprintf(stderr, "Interrupted.\n");
+ if (tn)
+ unlink(tn);
exit(1);
}
-void main(int argc, char *argv[]) {
- FILE *tfp,*f;
+void main(int argc, char *argv[])
+{
+ FILE *tfp, *f;
char user[MAX_STRING_LEN];
char realm[MAX_STRING_LEN];
char line[MAX_STRING_LEN];
@@ -125,63 +136,65 @@
int found;
tn = NULL;
- signal(SIGINT,(void (*)())interrupted);
- if(argc == 5) {
- if(strcmp(argv[1],"-c"))
- usage();
- if(!(tfp = fopen(argv[2],"w"))) {
- fprintf(stderr,"Could not open passwd file %s for writing.\n",
- argv[2]);
- perror("fopen");
- exit(1);
- }
- printf("Adding password for %s in realm %s.\n",argv[4], argv[3]);
- add_password(argv[4],argv[3],tfp);
- fclose(tfp);
- exit(0);
- } else if(argc != 4) usage();
+ signal(SIGINT, (void (*)()) interrupted);
+ if (argc == 5) {
+ if (strcmp(argv[1], "-c"))
+ usage();
+ if (!(tfp = fopen(argv[2], "w"))) {
+ fprintf(stderr, "Could not open passwd file %s for writing.\n",
+ argv[2]);
+ perror("fopen");
+ exit(1);
+ }
+ printf("Adding password for %s in realm %s.\n", argv[4], argv[3]);
+ add_password(argv[4], argv[3], tfp);
+ fclose(tfp);
+ exit(0);
+ }
+ else if (argc != 4)
+ usage();
tn = tmpnam(NULL);
- if(!(tfp = fopen(tn,"w"))) {
- fprintf(stderr,"Could not open temp file.\n");
- exit(1);
+ if (!(tfp = fopen(tn, "w"))) {
+ fprintf(stderr, "Could not open temp file.\n");
+ exit(1);
}
- if(!(f = fopen(argv[1],"r"))) {
- fprintf(stderr,
- "Could not open passwd file %s for reading.\n",argv[1]);
- fprintf(stderr,"Use -c option to create new one.\n");
- exit(1);
+ if (!(f = fopen(argv[1], "r"))) {
+ fprintf(stderr,
+ "Could not open passwd file %s for reading.\n", argv[1]);
+ fprintf(stderr, "Use -c option to create new one.\n");
+ exit(1);
}
- strcpy(user,argv[3]);
- strcpy(realm,argv[2]);
+ strcpy(user, argv[3]);
+ strcpy(realm, argv[2]);
found = 0;
- while(!(getline(line,MAX_STRING_LEN,f))) {
- if(found || (line[0] == '#') || (!line[0])) {
- putline(tfp,line);
- continue;
- }
- strcpy(l,line);
- getword(w,l,':');
- getword(x,l,':');
- if(strcmp(user,w) || strcmp(realm,x)) {
- putline(tfp,line);
- continue;
- }
- else {
- printf("Changing password for user %s in realm %s\n",user,realm);
- add_password(user,realm,tfp);
- found = 1;
- }
- }
- if(!found) {
- printf("Adding user %s in realm %s\n",user,realm);
- add_password(user,realm,tfp);
+ while (!(getline(line, MAX_STRING_LEN, f))) {
+ if (found || (line[0] == '#') || (!line[0])) {
+ putline(tfp, line);
+ continue;
+ }
+ strcpy(l, line);
+ getword(w, l, ':');
+ getword(x, l, ':');
+ if (strcmp(user, w) || strcmp(realm, x)) {
+ putline(tfp, line);
+ continue;
+ }
+ else {
+ printf("Changing password for user %s in realm %s\n", user, realm);
+ add_password(user, realm, tfp);
+ found = 1;
+ }
+ }
+ if (!found) {
+ printf("Adding user %s in realm %s\n", user, realm);
+ add_password(user, realm, tfp);
}
fclose(f);
fclose(tfp);
- sprintf(command,"cp %s %s",tn,argv[1]);
+ sprintf(command, "cp %s %s", tn, argv[1]);
system(command);
unlink(tn);
}
1.7 +120 -103 apachen/src/support/htpasswd.c
Index: htpasswd.c
===================================================================
RCS file: /export/home/cvs/apachen/src/support/htpasswd.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- htpasswd.c 1997/02/04 23:54:27 1.6
+++ htpasswd.c 1997/09/14 22:48:09 1.7
@@ -23,113 +23,128 @@
char *tn;
-char *strd(char *s) {
+char *strd(char *s)
+{
char *d;
- d=(char *)malloc(strlen(s) + 1);
- strcpy(d,s);
- return(d);
+ d = (char *) malloc(strlen(s) + 1);
+ strcpy(d, s);
+ return (d);
}
-void getword(char *word, char *line, char stop) {
- int x = 0,y;
+void getword(char *word, char *line, char stop)
+{
+ int x = 0, y;
- for(x=0;((line[x]) && (line[x] != stop));x++)
- word[x] = line[x];
+ for (x = 0; ((line[x]) && (line[x] != stop)); x++)
+ word[x] = line[x];
word[x] = '\0';
- if(line[x]) ++x;
- y=0;
+ if (line[x])
+ ++x;
+ y = 0;
- while((line[y++] = line[x++]));
+ while ((line[y++] = line[x++]));
}
-int getline(char *s, int n, FILE *f) {
- register int i=0;
+int getline(char *s, int n, FILE *f)
+{
+ register int i = 0;
- while(1) {
- s[i] = (char)fgetc(f);
+ while (1) {
+ s[i] = (char) fgetc(f);
- if(s[i] == CR)
- s[i] = fgetc(f);
+ if (s[i] == CR)
+ s[i] = fgetc(f);
- if((s[i] == 0x4) || (s[i] == LF) || (i == (n-1))) {
- s[i] = '\0';
- return (feof(f) ? 1 : 0);
- }
- ++i;
+ if ((s[i] == 0x4) || (s[i] == LF) || (i == (n - 1))) {
+ s[i] = '\0';
+ return (feof(f) ? 1 : 0);
+ }
+ ++i;
}
}
-void putline(FILE *f,char *l) {
+void putline(FILE *f, char *l)
+{
int x;
- for(x=0;l[x];x++) fputc(l[x],f);
- fputc('\n',f);
+ for (x = 0; l[x]; x++)
+ fputc(l[x], f);
+ fputc('\n', f);
}
/* From local_passwd.c (C) Regents of Univ. of California blah blah */
-static unsigned char itoa64[] = /* 0 ... 63 => ascii - 64 */
- "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+static unsigned char itoa64[] = /* 0 ... 63 => ascii - 64 */
+"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-void to64(register char *s, register long v, register int n) {
+void to64(register char *s, register long v, register int n)
+{
while (--n >= 0) {
- *s++ = itoa64[v&0x3f];
- v >>= 6;
+ *s++ = itoa64[v & 0x3f];
+ v >>= 6;
}
}
#ifdef MPE
/* MPE lacks getpass() and a way to suppress stdin echo. So for now, just
-issue the prompt and read the results with echo. (Ugh). */
+ * issue the prompt and read the results with echo. (Ugh).
+ */
-char *getpass(const char *prompt) {
+char *getpass(const char *prompt)
+{
-static char password[81];
+ static char password[81];
-fputs(prompt,stderr);
-gets((char *)&password);
+ fputs(prompt, stderr);
+ gets((char *) &password);
-if (strlen((char *)&password) > 8) {
- password[8]='\0';
-}
+ if (strlen((char *) &password) > 8) {
+ password[8] = '\0';
+ }
-return (char *)&password;
+ return (char *) &password;
}
+
#endif
-void add_password(char *user, FILE *f) {
+void add_password(char *user, FILE *f)
+{
char *pw, *cpw, salt[3];
pw = strd((char *) getpass("New password:"));
- if(strcmp(pw,(char *) getpass("Re-type new password:"))) {
- fprintf(stderr,"They don't match, sorry.\n");
- if(tn)
- unlink(tn);
- exit(1);
- }
- (void)srand((int)time((time_t *)NULL));
- to64(&salt[0],rand(),2);
- cpw = crypt(pw,salt);
+ if (strcmp(pw, (char *) getpass("Re-type new password:"))) {
+ fprintf(stderr, "They don't match, sorry.\n");
+ if (tn)
+ unlink(tn);
+ exit(1);
+ }
+ (void) srand((int) time((time_t *) NULL));
+ to64(&salt[0], rand(), 2);
+ cpw = crypt(pw, salt);
free(pw);
- fprintf(f,"%s:%s\n",user,cpw);
+ fprintf(f, "%s:%s\n", user, cpw);
}
-void usage() {
- fprintf(stderr,"Usage: htpasswd [-c] passwordfile username\n");
- fprintf(stderr,"The -c flag creates a new file.\n");
+void usage()
+{
+ fprintf(stderr, "Usage: htpasswd [-c] passwordfile username\n");
+ fprintf(stderr, "The -c flag creates a new file.\n");
exit(1);
}
-void interrupted() {
- fprintf(stderr,"Interrupted.\n");
- if(tn) unlink(tn);
+void interrupted()
+{
+ fprintf(stderr, "Interrupted.\n");
+ if (tn)
+ unlink(tn);
exit(1);
}
-void main(int argc, char *argv[]) {
- FILE *tfp,*f;
+void main(int argc, char *argv[])
+{
+ FILE *tfp, *f;
char user[MAX_STRING_LEN];
char line[MAX_STRING_LEN];
char l[MAX_STRING_LEN];
@@ -138,61 +153,63 @@
int found;
tn = NULL;
- signal(SIGINT,(void (*)())interrupted);
- if(argc == 4) {
- if(strcmp(argv[1],"-c"))
- usage();
- if(!(tfp = fopen(argv[2],"w"))) {
- fprintf(stderr,"Could not open passwd file %s for writing.\n",
- argv[2]);
- perror("fopen");
- exit(1);
- }
- printf("Adding password for %s.\n",argv[3]);
- add_password(argv[3],tfp);
- fclose(tfp);
- exit(0);
- } else if(argc != 3) usage();
+ signal(SIGINT, (void (*)()) interrupted);
+ if (argc == 4) {
+ if (strcmp(argv[1], "-c"))
+ usage();
+ if (!(tfp = fopen(argv[2], "w"))) {
+ fprintf(stderr, "Could not open passwd file %s for writing.\n",
+ argv[2]);
+ perror("fopen");
+ exit(1);
+ }
+ printf("Adding password for %s.\n", argv[3]);
+ add_password(argv[3], tfp);
+ fclose(tfp);
+ exit(0);
+ }
+ else if (argc != 3)
+ usage();
tn = tmpnam(NULL);
- if(!(tfp = fopen(tn,"w"))) {
- fprintf(stderr,"Could not open temp file.\n");
- exit(1);
+ if (!(tfp = fopen(tn, "w"))) {
+ fprintf(stderr, "Could not open temp file.\n");
+ exit(1);
}
- if(!(f = fopen(argv[1],"r"))) {
- fprintf(stderr,
- "Could not open passwd file %s for reading.\n",argv[1]);
- fprintf(stderr,"Use -c option to create new one.\n");
- exit(1);
+ if (!(f = fopen(argv[1], "r"))) {
+ fprintf(stderr,
+ "Could not open passwd file %s for reading.\n", argv[1]);
+ fprintf(stderr, "Use -c option to create new one.\n");
+ exit(1);
}
- strcpy(user,argv[2]);
+ strcpy(user, argv[2]);
found = 0;
- while(!(getline(line,MAX_STRING_LEN,f))) {
- if(found || (line[0] == '#') || (!line[0])) {
- putline(tfp,line);
- continue;
- }
- strcpy(l,line);
- getword(w,l,':');
- if(strcmp(user,w)) {
- putline(tfp,line);
- continue;
- }
- else {
- printf("Changing password for user %s\n",user);
- add_password(user,tfp);
- found = 1;
- }
- }
- if(!found) {
- printf("Adding user %s\n",user);
- add_password(user,tfp);
+ while (!(getline(line, MAX_STRING_LEN, f))) {
+ if (found || (line[0] == '#') || (!line[0])) {
+ putline(tfp, line);
+ continue;
+ }
+ strcpy(l, line);
+ getword(w, l, ':');
+ if (strcmp(user, w)) {
+ putline(tfp, line);
+ continue;
+ }
+ else {
+ printf("Changing password for user %s\n", user);
+ add_password(user, tfp);
+ found = 1;
+ }
+ }
+ if (!found) {
+ printf("Adding user %s\n", user);
+ add_password(user, tfp);
}
fclose(f);
fclose(tfp);
- sprintf(command,"cp %s %s",tn,argv[1]);
+ sprintf(command, "cp %s %s", tn, argv[1]);
system(command);
unlink(tn);
}
1.8 +114 -134 apachen/src/support/logresolve.c
Index: logresolve.c
===================================================================
RCS file: /export/home/cvs/apachen/src/support/logresolve.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- logresolve.c 1997/02/04 23:54:28 1.7
+++ logresolve.c 1997/09/14 22:48:09 1.8
@@ -1,44 +1,44 @@
-/*** ***\
- logresolve 1.1
-
- Tom Rathborne - tomr@uunet.ca - http://www.uunet.ca/~tomr/
- UUNET Canada, April 16, 1995
-
- Rewritten by David Robinson. (drtr@ast.cam.ac.uk)
-
- Usage: logresolve [-s filename] [-c] < access_log > new_log
-
- Arguments:
- -s filename name of a file to record statistics
- -c check the DNS for a matching A record for the host.
-
- Notes:
-
- To generate meaningful statistics from an HTTPD log file, it's good
- to have the domain name of each machine that accessed your site, but
- doing this on the fly can slow HTTPD down.
-
- Compiling NCSA HTTPD with the -DMINIMAL_DNS flag turns IP#->hostname
- resolution off. Before running your stats program, just run your log
- file through this program (logresolve) and all of your IP numbers will
- be resolved into hostnames (where possible).
-
- logresolve takes an HTTPD access log (in the COMMON log file format,
- or any other format that has the IP number/domain name as the first
- field for that matter), and outputs the same file with all of the
- domain names looked up. Where no domain name can be found, the IP
- number is left in.
-
- To minimize impact on your nameserver, logresolve has its very own
- internal hash-table cache. This means that each IP number will only
- be looked up the first time it is found in the log file.
-
- The -c option causes logresolve to apply the same check as httpd
- compiled with -DMAXIMUM_DNS; after finding the hostname from the IP
- address, it looks up the IP addresses for the hostname and checks
- that one of these matches the original address.
+/*
+ * logresolve 1.1
+ *
+ * Tom Rathborne - tomr@uunet.ca - http://www.uunet.ca/~tomr/
+ * UUNET Canada, April 16, 1995
+ *
+ * Rewritten by David Robinson. (drtr@ast.cam.ac.uk)
+ *
+ * Usage: logresolve [-s filename] [-c] < access_log > new_log
+ *
+ * Arguments:
+ * -s filename name of a file to record statistics
+ * -c check the DNS for a matching A record for the host.
+ *
+ * Notes:
+ *
+ * To generate meaningful statistics from an HTTPD log file, it's good
+ * to have the domain name of each machine that accessed your site, but
+ * doing this on the fly can slow HTTPD down.
+ *
+ * Compiling NCSA HTTPD with the -DMINIMAL_DNS flag turns IP#->hostname
+ * resolution off. Before running your stats program, just run your log
+ * file through this program (logresolve) and all of your IP numbers will
+ * be resolved into hostnames (where possible).
+ *
+ * logresolve takes an HTTPD access log (in the COMMON log file format,
+ * or any other format that has the IP number/domain name as the first
+ * field for that matter), and outputs the same file with all of the
+ * domain names looked up. Where no domain name can be found, the IP
+ * number is left in.
+ *
+ * To minimize impact on your nameserver, logresolve has its very own
+ * internal hash-table cache. This means that each IP number will only
+ * be looked up the first time it is found in the log file.
+ *
+ * The -c option causes logresolve to apply the same check as httpd
+ * compiled with -DMAXIMUM_DNS; after finding the hostname from the IP
+ * address, it looks up the IP addresses for the hostname and checks
+ * that one of these matches the original address.
+ */
-\*** ***/
#include <sys/types.h>
@@ -74,13 +74,13 @@
#ifdef MPE
char *strdup (const char *str)
{
- char *dup;
-
- if(!(dup = (char *)malloc (strlen (str) + 1)))
- return NULL;
- dup = strcpy (dup, str);
-
- return dup;
+ char *dup;
+
+ if (!(dup = (char *) malloc(strlen(str) + 1)))
+ return NULL;
+ dup = strcpy(dup, str);
+
+ return dup;
}
#endif
@@ -94,9 +94,9 @@
struct nsrec {
struct in_addr ipnum;
char *hostname;
- int noname;
+ int noname;
struct nsrec *next;
-} *nscache[BUCKETS];
+} *nscache[BUCKETS];
/*
* statistics - obvious
@@ -112,36 +112,30 @@
static int entries = 0;
static int resolves = 0;
static int withname = 0;
-static int errors[MAX_ERR+3];
+static int errors[MAX_ERR + 3];
/*
* cgethost - gets hostname by IP address, caching, and adding unresolvable
* IP numbers with their IP number as hostname, setting noname flag
*/
-static void
-cgethost(ipnum, string, check)
-struct in_addr ipnum;
-char *string;
-int check;
+static void cgethost (struct in_addr ipnum, char *string, int check)
{
struct nsrec **current, *new;
struct hostent *hostdata;
char *name;
- extern int h_errno; /* some machines don't have this in their headers */
+ extern int h_errno; /* some machines don't have this in their headers */
current = &nscache[((ipnum.s_addr + (ipnum.s_addr >> 8) +
- (ipnum.s_addr >> 16) + (ipnum.s_addr >> 24)) % BUCKETS)];
+ (ipnum.s_addr >> 16) + (ipnum.s_addr >> 24)) % BUCKETS)];
while (*current != NULL && ipnum.s_addr != (*current)->ipnum.s_addr)
- current = & (*current)->next;
+ current = &(*current)->next;
- if (*current == NULL)
- {
+ if (*current == NULL) {
cachesize++;
new = (struct nsrec *) malloc(sizeof(struct nsrec));
- if (new == NULL)
- {
+ if (new == NULL) {
perror("malloc");
fprintf(stderr, "Insufficient memory\n");
exit(1);
@@ -150,39 +144,37 @@
new->next = NULL;
new->ipnum = ipnum;
-
+
hostdata = gethostbyaddr((const char *) &ipnum, sizeof(struct in_addr),
AF_INET);
- if (hostdata == NULL)
- {
- if (h_errno > MAX_ERR) errors[UNKNOWN_ERR]++;
- else errors[h_errno]++;
+ if (hostdata == NULL) {
+ if (h_errno > MAX_ERR)
+ errors[UNKNOWN_ERR]++;
+ else
+ errors[h_errno]++;
new->noname = h_errno;
name = strdup(inet_ntoa(ipnum));
- } else
- {
+ }
+ else {
new->noname = 0;
name = strdup(hostdata->h_name);
- if (check)
- {
- if (name == NULL)
- {
+ if (check) {
+ if (name == NULL) {
perror("strdup");
fprintf(stderr, "Insufficient memory\n");
exit(1);
}
hostdata = gethostbyname(name);
- if (hostdata != NULL)
- {
+ if (hostdata != NULL) {
char **hptr;
-
- for (hptr=hostdata->h_addr_list; *hptr != NULL; hptr++)
- if(((struct in_addr *)(*hptr))->s_addr == ipnum.s_addr)
+
+ for (hptr = hostdata->h_addr_list; *hptr != NULL; hptr++)
+ if (((struct in_addr *) (*hptr))->s_addr == ipnum.s_addr)
break;
- if (*hptr == NULL) hostdata = NULL;
+ if (*hptr == NULL)
+ hostdata = NULL;
}
- if (hostdata == NULL)
- {
+ if (hostdata == NULL) {
fprintf(stderr, "Bad host: %s != %s\n", name,
inet_ntoa(ipnum));
new->noname = NO_REVERSE;
@@ -193,13 +185,13 @@
}
}
new->hostname = name;
- if (new->hostname == NULL)
- {
+ if (new->hostname == NULL) {
perror("strdup");
fprintf(stderr, "Insufficient memory\n");
exit(1);
}
- } else
+ }
+ else
cachehits++;
strcpy(string, (*current)->hostname);
@@ -209,23 +201,22 @@
* prints various statistics to output
*/
-static void
-stats(output)
-FILE *output;
+static void stats (FILE *output)
{
int i;
char *ipstring;
struct nsrec *current;
- char *errstring[MAX_ERR+3];
+ char *errstring[MAX_ERR + 3];
- for (i=0; i < MAX_ERR+3; i++) errstring[i] = "Unknown error";
+ for (i = 0; i < MAX_ERR + 3; i++)
+ errstring[i] = "Unknown error";
errstring[HOST_NOT_FOUND] = "Host not found";
errstring[TRY_AGAIN] = "Try again";
errstring[NO_RECOVERY] = "Non recoverable error";
errstring[NO_DATA] = "No data record";
errstring[NO_ADDRESS] = "No address";
errstring[NO_REVERSE] = "No reverse entry";
-
+
fprintf(output, "logresolve Statistics:\n");
fprintf(output, "Entries: %d\n", entries);
@@ -246,15 +237,13 @@
fprintf(output, "Cache buckets : IP number * hostname\n");
for (i = 0; i < BUCKETS; i++)
- for (current = nscache[i]; current != NULL; current = current->next)
- {
+ for (current = nscache[i]; current != NULL; current = current->next) {
ipstring = inet_ntoa(current->ipnum);
if (current->noname == 0)
fprintf(output, " %3d %15s - %s\n", i, ipstring,
current->hostname);
- else
- {
- if (current->noname > MAX_ERR+2)
+ else {
+ if (current->noname > MAX_ERR + 2)
fprintf(output, " %3d %15s : Unknown error\n", i,
ipstring);
else
@@ -269,13 +258,10 @@
* gets a line from stdin
*/
-static int
-getline(s, n)
-char *s;
-int n;
+static int getline (char *s, int n)
{
char *cp;
-
+
if (!fgets(s, n, stdin))
return (0);
cp = strchr(s, '\n');
@@ -284,57 +270,53 @@
return (1);
}
-int
-main(argc, argv)
-int argc;
-char *argv[];
+int main (int argc, char *argv[])
{
struct in_addr ipnum;
- char *bar, hoststring[MAXDNAME+1], line[MAXLINE], *statfile;
+ char *bar, hoststring[MAXDNAME + 1], line[MAXLINE], *statfile;
int i, check;
check = 0;
statfile = NULL;
- for (i=1; i < argc; i++)
- {
- if (strcmp(argv[i], "-c") == 0) check = 1;
- else if (strcmp(argv[i], "-s") == 0)
- {
- if (i == argc-1)
- {
+ for (i = 1; i < argc; i++) {
+ if (strcmp(argv[i], "-c") == 0)
+ check = 1;
+ else if (strcmp(argv[i], "-s") == 0) {
+ if (i == argc - 1) {
fprintf(stderr, "logresolve: missing filename to -s\n");
exit(1);
}
i++;
statfile = argv[i];
}
- else
- {
+ else {
fprintf(stderr, "Usage: logresolve [-s statfile] [-c] < input > output");
exit(0);
}
}
-
- for (i = 0; i < BUCKETS; i++) nscache[i] = NULL;
- for (i=0; i < MAX_ERR+2; i++) errors[i] = 0;
- while (getline(line, MAXLINE))
- {
- if (line[0] == '\0') continue;
+ for (i = 0; i < BUCKETS; i++)
+ nscache[i] = NULL;
+ for (i = 0; i < MAX_ERR + 2; i++)
+ errors[i] = 0;
+
+ while (getline(line, MAXLINE)) {
+ if (line[0] == '\0')
+ continue;
entries++;
- if (!isdigit(line[0]))
- { /* short cut */
+ if (!isdigit(line[0])) { /* short cut */
puts(line);
withname++;
continue;
}
bar = strchr(line, ' ');
- if (bar != NULL) *bar = '\0';
+ if (bar != NULL)
+ *bar = '\0';
ipnum.s_addr = inet_addr(line);
- if (ipnum.s_addr == 0xffffffffu)
- {
- if (bar != NULL) *bar = ' ';
+ if (ipnum.s_addr == 0xffffffffu) {
+ if (bar != NULL)
+ *bar = ' ';
puts(line);
withname++;
continue;
@@ -344,24 +326,22 @@
cgethost(ipnum, hoststring, check);
if (bar != NULL)
- printf("%s %s\n", hoststring, bar+1);
+ printf("%s %s\n", hoststring, bar + 1);
else
puts(hoststring);
}
-
- if (statfile != NULL)
- {
+
+ if (statfile != NULL) {
FILE *fp;
fp = fopen(statfile, "w");
- if (fp == NULL)
- {
+ if (fp == NULL) {
fprintf(stderr, "logresolve: could not open statistics file '%s'\n"
- , statfile);
+ ,statfile);
exit(1);
}
stats(fp);
fclose(fp);
}
-
+
return (0);
}
1.7 +49 -49 apachen/src/support/rotatelogs.c
Index: rotatelogs.c
===================================================================
RCS file: /export/home/cvs/apachen/src/support/rotatelogs.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- rotatelogs.c 1997/04/16 06:18:25 1.6
+++ rotatelogs.c 1997/09/14 22:48:09 1.7
@@ -1,12 +1,11 @@
/*
+ * Simple program to rotate Apache logs without having to kill the server.
+ *
+ * Contributed by Ben Laurie <be...@algroup.co.uk>
+ *
+ * 12 Mar 1996
+ */
-Simple program to rotate Apache logs without having to kill the server.
-
-Contributed by Ben Laurie <be...@algroup.co.uk>
-
-12 Mar 1996
-
-*/
#define BUFSIZE 65536
#define MAX_PATH 1024
@@ -18,67 +17,68 @@
#include <fcntl.h>
#include <unistd.h>
-void main(int argc,char **argv)
- {
- char buf[BUFSIZE],buf2[MAX_PATH];
+void main (int argc, char **argv)
+{
+ char buf[BUFSIZE], buf2[MAX_PATH];
time_t tLogEnd;
time_t tRotation;
- int nLogFD=-1;
+ int nLogFD = -1;
int nRead;
char *szLogRoot;
- if(argc != 3)
- {
- fprintf(stderr,"%s <logfile> <rotation time in seconds>\n\n",argv[0]);
+ if (argc != 3) {
+ fprintf(stderr,
+ "%s <logfile> <rotation time in seconds>\n\n",
+ argv[0]);
#ifdef __EMX__
- fprintf(stderr,"Add this:\n\nTransferLog \"|%s.exe /some/where 86400\"\n\n",argv[0]);
+ fprintf(stderr,
+ "Add this:\n\nTransferLog \"|%s.exe /some/where 86400\"\n\n",
+ argv[0]);
#else
- fprintf(stderr,"Add this:\n\nTransferLog \"|%s /some/where 86400\"\n\n",argv[0]);
+ fprintf(stderr,
+ "Add this:\n\nTransferLog \"|%s /some/where 86400\"\n\n",
+ argv[0]);
#endif
- fprintf(stderr,"to httpd.conf. The generated name will be /some/where.nnnn where nnnn is the\n");
- fprintf(stderr,"system time at which the log nominally starts (N.B. this time will always be a\n");
- fprintf(stderr,"multiple of the rotation time, so you can synchronize cron scripts with it).\n");
- fprintf(stderr,"At the end of each rotation time a new log is started.\n");
+ fprintf(stderr,
+ "to httpd.conf. The generated name will be /some/where.nnnn ",
+ "where nnnn is the\nsystem time at which the log nominally ",
+ "starts (N.B. this time will always be a\nmultiple of the "
+ "rotation time, so you can synchronize cron scripts with it).\n",
+ "At the end of each rotation time a new log is started.\n");
exit(1);
- }
+ }
- szLogRoot=argv[1];
- tRotation=atoi(argv[2]);
- if(tRotation <= 0)
- {
- fprintf(stderr,"Rotation time must be > 0\n");
+ szLogRoot = argv[1];
+ tRotation = atoi(argv[2]);
+ if (tRotation <= 0) {
+ fprintf(stderr, "Rotation time must be > 0\n");
exit(6);
- }
+ }
- for( ; ; )
- {
- nRead=read(0,buf,sizeof buf);
- if(nRead == 0)
+ for (;;) {
+ nRead = read(0, buf, sizeof buf);
+ if (nRead == 0)
exit(3);
- if(nRead < 0)
- if(errno != EINTR)
+ if (nRead < 0)
+ if (errno != EINTR)
exit(4);
- if(nLogFD >= 0 && (time(NULL) >= tLogEnd || nRead < 0))
- {
+ if (nLogFD >= 0 && (time(NULL) >= tLogEnd || nRead < 0)) {
close(nLogFD);
- nLogFD=-1;
- }
- if(nLogFD < 0)
- {
- time_t tLogStart=(time(NULL)/tRotation)*tRotation;
- sprintf(buf2,"%s.%010d",szLogRoot,(int)tLogStart);
- tLogEnd=tLogStart+tRotation;
- nLogFD=open(buf2,O_WRONLY|O_CREAT|O_APPEND,0666);
- if(nLogFD < 0)
- {
+ nLogFD = -1;
+ }
+ if (nLogFD < 0) {
+ time_t tLogStart = (time(NULL) / tRotation) * tRotation;
+ sprintf(buf2, "%s.%010d", szLogRoot, (int) tLogStart);
+ tLogEnd = tLogStart + tRotation;
+ nLogFD = open(buf2, O_WRONLY | O_CREAT | O_APPEND, 0666);
+ if (nLogFD < 0) {
perror(buf2);
exit(2);
- }
}
- if(write(nLogFD,buf,nRead) != nRead)
- {
+ }
+ if (write(nLogFD, buf, nRead) != nRead) {
perror(buf2);
exit(5);
- }
}
}
+}
1.25 +64 -71 apachen/src/support/suexec.c
Index: suexec.c
===================================================================
RCS file: /export/home/cvs/apachen/src/support/suexec.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- suexec.c 1997/07/20 23:44:49 1.24
+++ suexec.c 1997/09/14 22:48:10 1.25
@@ -95,7 +95,7 @@
int initgroups(const char *name, gid_t basegid)
{
/* QNX and MPE do not appear to support supplementary groups. */
- return 0;
+ return 0;
}
#endif
@@ -168,20 +168,20 @@
time(&timevar);
lt = localtime(&timevar);
-
+
fprintf(log, "[%.2d:%.2d:%.2d %.2d-%.2d-%.2d]: ", lt->tm_hour, lt->tm_min,
lt->tm_sec, lt->tm_mday, (lt->tm_mon + 1), lt->tm_year);
-
+
vfprintf(log, fmt, ap);
fflush(log);
return;
}
-void log_err(const char *fmt, ...)
+void log_err(const char *fmt,...)
{
#ifdef LOG_EXEC
- va_list ap;
+ va_list ap;
va_start(ap, fmt);
err_output(fmt, ap);
@@ -190,20 +190,20 @@
return;
}
-void clean_env()
+void clean_env()
{
char pathbuf[512];
char **cleanenv;
char **ep;
int cidx = 0;
int idx;
-
- if ((cleanenv = (char **)calloc(AP_ENVBUF, sizeof(char *))) == NULL) {
+
+ if ((cleanenv = (char **) calloc(AP_ENVBUF, sizeof(char *))) == NULL) {
log_err("failed to malloc env mem\n");
exit(120);
}
-
+
for (ep = environ; *ep && cidx < AP_ENVBUF; ep++) {
if (!strncmp(*ep, "HTTP_", 5)) {
cleanenv[cidx] = *ep;
@@ -223,30 +223,30 @@
sprintf(pathbuf, "PATH=%s", SAFE_PATH);
cleanenv[cidx] = strdup(pathbuf);
cleanenv[++cidx] = NULL;
-
+
environ = cleanenv;
}
int main(int argc, char *argv[])
{
- int userdir = 0; /* ~userdir flag */
- uid_t uid; /* user information */
- gid_t gid; /* target group placeholder */
- char *target_uname; /* target user name */
- char *target_gname; /* target group name */
- char *target_homedir; /* target home directory */
- char *actual_uname; /* actual user name */
- char *actual_gname; /* actual group name */
- char *prog; /* name of this program */
- char *cmd; /* command to be executed */
- char cwd[AP_MAXPATH]; /* current working directory */
- char dwd[AP_MAXPATH]; /* docroot working directory */
- struct passwd *pw; /* password entry holder */
- struct group *gr; /* group entry holder */
- struct stat dir_info; /* directory info holder */
- struct stat prg_info; /* program info holder */
+ int userdir = 0; /* ~userdir flag */
+ uid_t uid; /* user information */
+ gid_t gid; /* target group placeholder */
+ char *target_uname; /* target user name */
+ char *target_gname; /* target group name */
+ char *target_homedir; /* target home directory */
+ char *actual_uname; /* actual user name */
+ char *actual_gname; /* actual group name */
+ char *prog; /* name of this program */
+ char *cmd; /* command to be executed */
+ char cwd[AP_MAXPATH]; /* current working directory */
+ char dwd[AP_MAXPATH]; /* docroot working directory */
+ struct passwd *pw; /* password entry holder */
+ struct group *gr; /* group entry holder */
+ struct stat dir_info; /* directory info holder */
+ struct stat prg_info; /* program info holder */
+
-
/*
* If there are a proper number of arguments, set
@@ -270,7 +270,7 @@
log_err("invalid uid: (%ld)\n", uid);
exit(102);
}
-
+
/*
* Check to see if the user running this program
* is the user allowed to do so as defined in
@@ -280,19 +280,16 @@
log_err("user mismatch (%s)\n", pw->pw_name);
exit(103);
}
-
+
/*
* Check for a leading '/' (absolute path) in the command to be executed,
* or attempts to back up out of the current directory,
* to protect against attacks. If any are
* found, error out. Naughty naughty crackers.
*/
- if (
- (cmd[0] == '/') ||
- (! strncmp (cmd, "../", 3)) ||
- (strstr (cmd, "/../") != NULL)
- ) {
- log_err("invalid command (%s)\n", cmd);
+ if ((cmd[0] == '/') || (!strncmp(cmd, "../", 3))
+ || (strstr(cmd, "/../") != NULL)) {
+ log_err("invalid command (%s)\n", cmd);
exit(104);
}
@@ -342,16 +339,15 @@
* before we setuid().
*/
log_err("uid: (%s/%s) gid: (%s/%s) %s\n",
- target_uname, actual_uname,
- target_gname, actual_gname,
- cmd);
+ target_uname, actual_uname,
+ target_gname, actual_gname,
+ cmd);
/*
* Error out if attempt is made to execute as root or as
* a UID less than UID_MIN. Tsk tsk.
*/
- if ((uid == 0) ||
- (uid < UID_MIN)) {
+ if ((uid == 0) || (uid < UID_MIN)) {
log_err("cannot run as forbidden uid (%d/%s)\n", uid, cmd);
exit(107);
}
@@ -360,8 +356,7 @@
* Error out if attempt is made to execute as root group
* or as a GID less than GID_MIN. Tsk tsk.
*/
- if ((gid == 0) ||
- (gid < GID_MIN)) {
+ if ((gid == 0) || (gid < GID_MIN)) {
log_err("cannot run as forbidden gid (%d/%s)\n", gid, cmd);
exit(108);
}
@@ -372,9 +367,9 @@
* Initialize the group access list for the target user,
* and setgid() to the target group. If unsuccessful, error out.
*/
- if (((setgid(gid)) != 0) || (initgroups(actual_uname,gid) != 0)) {
- log_err("failed to setgid (%ld: %s/%s)\n", gid, cwd, cmd);
- exit(109);
+ if (((setgid(gid)) != 0) || (initgroups(actual_uname, gid) != 0)) {
+ log_err("failed to setgid (%ld: %s/%s)\n", gid, cwd, cmd);
+ exit(109);
}
/*
@@ -394,33 +389,31 @@
* directories. Yuck.
*/
if (getcwd(cwd, AP_MAXPATH) == NULL) {
- log_err("cannot get current working directory\n");
- exit(111);
+ log_err("cannot get current working directory\n");
+ exit(111);
}
-
+
if (userdir) {
- if (((chdir(target_homedir)) != 0) ||
- ((chdir(USERDIR_SUFFIX)) != 0) ||
+ if (((chdir(target_homedir)) != 0) ||
+ ((chdir(USERDIR_SUFFIX)) != 0) ||
((getcwd(dwd, AP_MAXPATH)) == NULL) ||
- ((chdir(cwd)) != 0))
- {
- log_err("cannot get docroot information (%s)\n", target_homedir);
- exit(112);
- }
+ ((chdir(cwd)) != 0)) {
+ log_err("cannot get docroot information (%s)\n", target_homedir);
+ exit(112);
+ }
}
else {
- if (((chdir(DOC_ROOT)) != 0) ||
+ if (((chdir(DOC_ROOT)) != 0) ||
((getcwd(dwd, AP_MAXPATH)) == NULL) ||
- ((chdir(cwd)) != 0))
- {
- log_err("cannot get docroot information (%s)\n", DOC_ROOT);
- exit(113);
- }
+ ((chdir(cwd)) != 0)) {
+ log_err("cannot get docroot information (%s)\n", DOC_ROOT);
+ exit(113);
+ }
}
if ((strncmp(cwd, dwd, strlen(dwd))) != 0) {
- log_err("command not in docroot (%s/%s)\n", cwd, cmd);
- exit(114);
+ log_err("command not in docroot (%s/%s)\n", cwd, cmd);
+ exit(114);
}
/*
@@ -459,7 +452,7 @@
* Error out if the file is setuid or setgid.
*/
if ((prg_info.st_mode & S_ISUID) || (prg_info.st_mode & S_ISGID)) {
- log_err("file is either setuid or setgid: (%s/%s)\n",cwd,cmd);
+ log_err("file is either setuid or setgid: (%s/%s)\n", cwd, cmd);
exit(119);
}
@@ -470,12 +463,12 @@
if ((uid != dir_info.st_uid) ||
(gid != dir_info.st_gid) ||
(uid != prg_info.st_uid) ||
- (gid != prg_info.st_gid))
- {
- log_err("target uid/gid (%ld/%ld) mismatch with directory (%ld/%ld) or program (%ld/%ld)\n",
- uid, gid,
- dir_info.st_uid, dir_info.st_gid,
- prg_info.st_uid, prg_info.st_gid);
+ (gid != prg_info.st_gid)) {
+ log_err("target uid/gid (%ld/%ld) mismatch with directory ",
+ "(%ld/%ld) or program (%ld/%ld)\n",
+ uid, gid,
+ dir_info.st_uid, dir_info.st_gid,
+ prg_info.st_uid, prg_info.st_gid);
exit(120);
}
@@ -488,7 +481,7 @@
*/
fclose(log);
log = NULL;
-
+
/*
* Execute the command, replacing our image with its own.
*/
1.10 +2 -2 apachen/src/support/suexec.h
Index: suexec.h
===================================================================
RCS file: /export/home/cvs/apachen/src/support/suexec.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- suexec.h 1997/05/10 05:06:17 1.9
+++ suexec.h 1997/09/14 22:48:10 1.10
@@ -114,7 +114,7 @@
* debugging purposes.
*/
#ifndef LOG_EXEC
-#define LOG_EXEC "/usr/local/etc/httpd/logs/cgi.log" /* Need me? */
+#define LOG_EXEC "/usr/local/etc/httpd/logs/cgi.log" /* Need me? */
#endif
/*
@@ -134,4 +134,4 @@
#define SAFE_PATH "/usr/local/bin:/usr/bin:/bin"
#endif
-#endif /* _SUEXEC_H */
+#endif /* _SUEXEC_H */