From yaguilar@example.com Fri Jan 02 13:58:47 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 28925 invoked by uid 6000); 2 Jan 1998 13:58:47 -0000 Received: (qmail 28919 invoked by alias); 2 Jan 1998 13:58:46 -0000 Delivered-To: yaguilar@example.com Received: (qmail 28917 invoked by uid 151); 2 Jan 1998 13:58:45 -0000 Date: 2 Jan 1998 13:58:45 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen STATUS Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com pcs 98/01/02 05:58:45 Modified: . STATUS Log: This has already been committed Revision Changes Path 1.43 +1 -4 apachen/STATUS Index: STATUS =================================================================== RCS file: /export/home/cvs/apachen/STATUS,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- STATUS 1997/12/30 19:03:14 1.42 +++ STATUS 1998/01/02 13:58:44 1.43 @@ -62,6 +62,7 @@ * Ken's [PATCH] for PR#1195 (" in realm names) * Jim's [PATCH] ap_cpystrn() function (replace strncpy) Take II * Dean's [PATCH] 1.3: "DoS" attack + * Paul/Ben's [PATCH] 1.3: spaces in NT spawn* arguments Available Patches: @@ -97,10 +98,6 @@ * M.D.Parker's [PATCH] mod_status/1448: Status Information have version <yaguilar@example.com> Status: Dean +1, Martin +1, Alexei -1 (shared lib concerns) - - * Paul's [PATCH] NT: spaces in argv[] - <yaguilar@example.com> - Status: Paul +1, Ben +1 * Roy's [PATCH] protocol/1399: failing to read body <yaguilar@example.com> From yaguilar@example.com Fri Jan 02 17:03:19 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 14375 invoked by uid 6000); 2 Jan 1998 17:03:19 -0000 Received: (qmail 14369 invoked by alias); 2 Jan 1998 17:03:17 -0000 Delivered-To: yaguilar@example.com Received: (qmail 14367 invoked by uid 161); 2 Jan 1998 17:03:17 -0000 Date: 2 Jan 1998 17:03:16 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen STATUS Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com coar 98/01/02 09:03:16 Modified: . STATUS Log: Add notice of the patch to update the copyright years. Revision Changes Path 1.44 +5 -0 apachen/STATUS Index: STATUS =================================================================== RCS file: /export/home/cvs/apachen/STATUS,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- STATUS 1998/01/02 13:58:44 1.43 +++ STATUS 1998/01/02 17:03:16 1.44 @@ -66,6 +66,11 @@ Available Patches: + * Ken's [PATCH] for copyright year update + <yaguilar@example.com> + Status: Ken +1, Jim +1 + Gregory Lundberg says it's legally invalid + * [PATCH] mod_digest/1599: proxy authentication using the digest auth scheme never succeeds (fwd) <yaguilar@example.com> From yaguilar@example.com Fri Jan 02 23:44:49 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 1804 invoked by uid 6000); 2 Jan 1998 23:44:49 -0000 Received: (qmail 1798 invoked by alias); 2 Jan 1998 23:44:47 -0000 Delivered-To: yaguilar@example.com Received: (qmail 1796 invoked by uid 143); 2 Jan 1998 23:44:46 -0000 Date: 2 Jan 1998 23:44:46 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen/src/modules/standard mod_info.c Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com dgaudet 98/01/02 15:44:46 Modified: . STATUS src CHANGES src/modules/standard mod_info.c Log: - make mod_info_html_cmd_string() thread safe - fix minor buffer overrun in mod_info_html_cmd_string() (it would only hammer a \0 up to 5 bytes past the end of the buffer... nothing big) - mod_info_load_config() switched to use getword_conf() just like the real config parsing routines - replace a bunch of ap_snprintf()/rputs() pairs with rprintf() for more efficiency Reviewed by: Brian Behlendorf Revision Changes Path 1.45 +1 -4 apachen/STATUS Index: STATUS =================================================================== RCS file: /export/home/cvs/apachen/STATUS,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- STATUS 1998/01/02 17:03:16 1.44 +++ STATUS 1998/01/02 23:44:42 1.45 @@ -63,6 +63,7 @@ * Jim's [PATCH] ap_cpystrn() function (replace strncpy) Take II * Dean's [PATCH] 1.3: "DoS" attack * Paul/Ben's [PATCH] 1.3: spaces in NT spawn* arguments + * Dean's [PATCH] mod_info minor cleanups (take 2) Available Patches: @@ -79,10 +80,6 @@ * Dean's [PATCH] mod_status cleanups <yaguilar@example.com> Status: Dean +1, Jim +1 - - * Dean's [PATCH] mod_info minor cleanups (take 2) - <yaguilar@example.com> - Status: Dean +1, Brian +1 * Martin's [PATCH] 36kB: Make apache compile & run on an EBCDIC mainframe <yaguilar@example.com> 1.554 +3 -0 apachen/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apachen/src/CHANGES,v retrieving revision 1.553 retrieving revision 1.554 diff -u -r1.553 -r1.554 --- CHANGES 1997/12/30 19:03:16 1.553 +++ CHANGES 1998/01/02 23:44:43 1.554 @@ -1,5 +1,8 @@ Changes with Apache 1.3b4 + *) A few cleanups in mod_info to make it thread-safe, and remove an + off-by-5 bug that could hammer \0 on the stack. [Dean Gaudet] + *) no2slash() was O(n^2) in the length of the input. Make it O(n). [Dean Gaudet] 1.32 +66 -105 apachen/src/modules/standard/mod_info.c Index: mod_info.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_info.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- mod_info.c 1997/10/26 20:20:05 1.31 +++ mod_info.c 1998/01/02 23:44:45 1.32 @@ -119,27 +119,27 @@ return new; } -static char *mod_info_html_cmd_string(char *string) +static char *mod_info_html_cmd_string(const char *string, char *buf, size_t buf_len) { - char *s, *t; - static char ret[256]; /* What is the max size of a command? */ - char *end_ret; + const char *s; + char *t; + char *end_buf; - ret[0] = '\0'; s = string; - t = ret; - end_ret = t + sizeof(ret); - while ((*s) && ((t - ret) < sizeof(ret))) { + t = buf; + /* keep space for \0 byte */ + end_buf = buf + buf_len - 1; + while ((*s) && (t < end_buf)) { if (*s == '<') { - strncpy(t, "&lt;", end_ret - t); + strncpy(t, "&lt;", end_buf - t); t += 4; } else if (*s == '>') { - strncpy(t, "&gt;", end_ret - t); + strncpy(t, "&gt;", end_buf - t); t += 4; } else if (*s == '&') { - strncpy(t, "&amp;", end_ret - t); + strncpy(t, "&amp;", end_buf - t); t += 5; } else { @@ -147,25 +147,33 @@ } s++; } - *t = '\0'; - return (ret); + /* oops, overflowed... don't overwrite */ + if (t > end_buf) { + *end_buf = '\0'; + } + else { + *t = '\0'; + } + return (buf); } -static info_cfg_lines *mod_info_load_config(pool *p, char *filename, +static info_cfg_lines *mod_info_load_config(pool *p, const char *filename, request_rec *r) { char s[MAX_STRING_LEN]; configfile_t *fp; - info_cfg_lines *new, *ret = NULL, *prev = NULL; - char *t, *tt, o, *msg; + info_cfg_lines *new, *ret, *prev; + const char *t; fp = pcfg_openfile(p, filename); if (!fp) { - msg = pstrcat(r->pool, "mod_info: couldn't open config file ", - filename, NULL); - aplog_error(APLOG_MARK, APLOG_WARNING, r->server, msg); + aplog_error(APLOG_MARK, APLOG_WARNING, r->server, + "mod_info: couldn't open config file %s", + filename); return NULL; } + ret = NULL; + prev = NULL; while (!cfg_getline(s, MAX_STRING_LEN, fp)) { if (*s == '#') { continue; /* skip comments */ @@ -178,25 +186,14 @@ if (prev) { prev->next = new; } - t = strchr(s, ' '); - tt = strchr(s, '\t'); - if (t && tt) { - t = (t < tt) ? t : tt; - } - else if (tt) { - t = tt; - } - if (t) { - o = *t; - *t = '\0'; - new->cmd = pstrdup(p, s); - new->line = pstrdup(p, t + 1); - *t = o; - } - else { - new->cmd = pstrdup(p, s); - new->line = NULL; - } + t = s; + new->cmd = getword_conf(p, &t); + if (*t) { + new->line = pstrdup(p, t); + } + else { + new->line = NULL; + } prev = new; } cfg_closefile(fp); @@ -210,6 +207,7 @@ info_cfg_lines *li = cfg, *li_st = NULL, *li_se = NULL; info_cfg_lines *block_start = NULL; int lab = 0, nest = 0; + char buf[MAX_STRING_LEN]; while (li) { if (!strncasecmp(li->cmd, "<directory", 10) || @@ -237,10 +235,10 @@ if (nest == 2) { rputs("&nbsp;&nbsp;", r); } - rputs(mod_info_html_cmd_string(li->cmd), r); + rputs(mod_info_html_cmd_string(li->cmd, buf, sizeof(buf)), r); rputs(" ", r); if (li->line) { - rputs(mod_info_html_cmd_string(li->line), r); + rputs(mod_info_html_cmd_string(li->line, buf, sizeof(buf)), r); } rputs("</tt>\n", r); nest--; @@ -291,19 +289,19 @@ strncasecmp(li->cmd, "</directory", 11) && strncasecmp(li->cmd, "</files", 7))) { rputs("<dd><tt>", r); - rputs(mod_info_html_cmd_string(li_st->cmd), r); + rputs(mod_info_html_cmd_string(li_st->cmd, buf, sizeof(buf)), r); rputs(" ", r); if (li_st->line) { - rputs(mod_info_html_cmd_string(li_st->line), r); + rputs(mod_info_html_cmd_string(li_st->line, buf, sizeof(buf)), r); } rputs("</tt>\n", r); block_start = li_st; if (li_se) { rputs("<dd><tt>&nbsp;&nbsp;", r); - rputs(mod_info_html_cmd_string(li_se->cmd), r); + rputs(mod_info_html_cmd_string(li_se->cmd, buf, sizeof(buf)), r); rputs(" ", r); if (li_se->line) { - rputs(mod_info_html_cmd_string(li_se->line), r); + rputs(mod_info_html_cmd_string(li_se->line, buf, sizeof(buf)), r); } rputs("</tt>\n", r); block_start = li_se; @@ -316,10 +314,10 @@ if (nest == 2) { rputs("&nbsp;&nbsp;", r); } - rputs(mod_info_html_cmd_string(li->cmd), r); + rputs(mod_info_html_cmd_string(li->cmd, buf, sizeof(buf)), r); if (li->line) { rputs(" <i>", r); - rputs(mod_info_html_cmd_string(li->line), r); + rputs(mod_info_html_cmd_string(li->line, buf, sizeof(buf)), r); rputs("</i></tt>", r); } } @@ -354,7 +352,7 @@ static int display_info(request_rec *r) { module *modp = NULL; - char buf[512], *cfname; + char buf[MAX_STRING_LEN], *cfname; char *more_info; command_rec *cmd = NULL; handler_rec *hand = NULL; @@ -383,9 +381,7 @@ if (!r->args) { rputs("<tt><a href=\"#server\">Server Settings</a>, ", r); for (modp = top_module; modp; modp = modp->next) { - ap_snprintf(buf, sizeof(buf), - "<a href=\"#%s\">%s</a>", modp->name, modp->name); - rputs(buf, r); + rprintf(r, "<a href=\"#%s\">%s</a>", modp->name, modp->name); if (modp->next) { rputs(", ", r); } @@ -394,102 +390,68 @@ } if (!r->args || !strcasecmp(r->args, "server")) { - ap_snprintf(buf, sizeof(buf), - "<a name=\"server\"><strong>Server Version:</strong> " + rprintf(r, "<a name=\"server\"><strong>Server Version:</strong> " "<font size=+1><tt>%s</tt></a></font><br>\n", SERVER_VERSION); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Server Built:</strong> " + rprintf(r, "<strong>Server Built:</strong> " "<font size=+1><tt>%s</tt></a></font><br>\n", SERVER_BUILT); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>API Version:</strong> " + rprintf(r, "<strong>API Version:</strong> " "<tt>%d</tt><br>\n", MODULE_MAGIC_NUMBER); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Run Mode:</strong> <tt>%s</tt><br>\n", + rprintf(r, "<strong>Run Mode:</strong> <tt>%s</tt><br>\n", (standalone ? "standalone" : "inetd")); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>User/Group:</strong> " + rprintf(r, "<strong>User/Group:</strong> " "<tt>%s(%d)/%d</tt><br>\n", user_name, (int) user_id, (int) group_id); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Hostname/port:</strong> " + rprintf(r, "<strong>Hostname/port:</strong> " "<tt>%s:%u</tt><br>\n", serv->server_hostname, serv->port); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Daemons:</strong> " + rprintf(r, "<strong>Daemons:</strong> " "<tt>start: %d &nbsp;&nbsp; " "min idle: %d &nbsp;&nbsp; " "max idle: %d &nbsp;&nbsp; " "max: %d</tt><br>\n", daemons_to_start, daemons_min_free, daemons_max_free, daemons_limit); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Max Requests:</strong> " + rprintf(r, "<strong>Max Requests:</strong> " "<tt>per child: %d &nbsp;&nbsp; " "keep alive: %s &nbsp;&nbsp; " "max per connection: %d</tt><br>\n", max_requests_per_child, (serv->keep_alive ? "on" : "off"), serv->keep_alive_max); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Threads:</strong> " + rprintf(r, "<strong>Threads:</strong> " "<tt>per child: %d &nbsp;&nbsp; </tt><br>\n", threads_per_child); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Excess requests:</strong> " + rprintf(r, "<strong>Excess requests:</strong> " "<tt>per child: %d &nbsp;&nbsp; </tt><br>\n", excess_requests_per_child); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Timeouts:</strong> " + rprintf(r, "<strong>Timeouts:</strong> " "<tt>connection: %d &nbsp;&nbsp; " "keep-alive: %d</tt><br>", serv->timeout, serv->keep_alive_timeout); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Server Root:</strong> " + rprintf(r, "<strong>Server Root:</strong> " "<tt>%s</tt><br>\n", server_root); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Config File:</strong> " + rprintf(r, "<strong>Config File:</strong> " "<tt>%s</tt><br>\n", server_confname); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>PID File:</strong> " + rprintf(r, "<strong>PID File:</strong> " "<tt>%s</tt><br>\n", pid_fname); - rputs(buf, r); - ap_snprintf(buf, sizeof(buf), - "<strong>Scoreboard File:</strong> " + rprintf(r, "<strong>Scoreboard File:</strong> " "<tt>%s</tt><br>\n", scoreboard_fname); - rputs(buf, r); } rputs("<hr><dl>", r); for (modp = top_module; modp; modp = modp->next) { if (!r->args || !strcasecmp(modp->name, r->args)) { - ap_snprintf(buf, sizeof(buf), - "<dt><a name=\"%s\"><strong>Module Name:</strong> " + rprintf(r, "<dt><a name=\"%s\"><strong>Module Name:</strong> " "<font size=+1><tt>%s</tt></a></font>\n", modp->name, modp->name); - rputs(buf, r); rputs("<dt><strong>Content handlers:</strong>", r); hand = modp->handlers; if (hand) { while (hand) { if (hand->content_type) { - ap_snprintf(buf, sizeof(buf), - " <tt>%s</tt>\n", hand->content_type); - rputs(buf, r); + rprintf(r, " <tt>%s</tt>\n", hand->content_type); } else { break; @@ -617,10 +579,9 @@ if (cmd) { while (cmd) { if (cmd->name) { - ap_snprintf(buf, sizeof(buf), - "<dd><tt>%s - <i>", - mod_info_html_cmd_string(cmd->name)); - rputs(buf, r); + rprintf(r, "<dd><tt>%s - <i>", + mod_info_html_cmd_string(cmd->name, + buf, sizeof(buf))); if (cmd->errmsg) { rputs(cmd->errmsg, r); } From yaguilar@example.com Fri Jan 02 23:46:15 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 2501 invoked by uid 6000); 2 Jan 1998 23:46:14 -0000 Received: (qmail 2477 invoked by alias); 2 Jan 1998 23:46:12 -0000 Delivered-To: yaguilar@example.com Received: (qmail 2473 invoked by uid 143); 2 Jan 1998 23:46:11 -0000 Date: 2 Jan 1998 23:46:11 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen/src/modules/standard mod_status.c Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com dgaudet 98/01/02 15:46:10 Modified: . STATUS src CHANGES src/modules/standard mod_status.c Log: - remove an unused buffer - mark a constant structure as const, and make it static, it's a waste to initialize it on every call - initialize the status flags once rather than on every call Reviewed by: Jim Jagielski Revision Changes Path 1.46 +1 -4 apachen/STATUS Index: STATUS =================================================================== RCS file: /export/home/cvs/apachen/STATUS,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- STATUS 1998/01/02 23:44:42 1.45 +++ STATUS 1998/01/02 23:46:06 1.46 @@ -64,6 +64,7 @@ * Dean's [PATCH] 1.3: "DoS" attack * Paul/Ben's [PATCH] 1.3: spaces in NT spawn* arguments * Dean's [PATCH] mod_info minor cleanups (take 2) + * Dean's [PATCH] mod_status cleanups Available Patches: @@ -75,10 +76,6 @@ * [PATCH] mod_digest/1599: proxy authentication using the digest auth scheme never succeeds (fwd) <yaguilar@example.com> - Status: Dean +1, Jim +1 - - * Dean's [PATCH] mod_status cleanups - <yaguilar@example.com> Status: Dean +1, Jim +1 * Martin's [PATCH] 36kB: Make apache compile & run on an EBCDIC mainframe 1.555 +2 -0 apachen/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apachen/src/CHANGES,v retrieving revision 1.554 retrieving revision 1.555 diff -u -r1.554 -r1.555 --- CHANGES 1998/01/02 23:44:43 1.554 +++ CHANGES 1998/01/02 23:46:07 1.555 @@ -1,5 +1,7 @@ Changes with Apache 1.3b4 + *) A few cleanups in mod_status for efficiency. [Dean Gaudet] + *) A few cleanups in mod_info to make it thread-safe, and remove an off-by-5 bug that could hammer \0 on the stack. [Dean Gaudet] 1.69 +35 -33 apachen/src/modules/standard/mod_status.c Index: mod_status.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_status.c,v retrieving revision 1.68 retrieving revision 1.69 diff -u -r1.68 -r1.69 --- mod_status.c 1997/12/20 10:21:59 1.68 +++ mod_status.c 1998/01/02 23:46:10 1.69 @@ -158,8 +158,6 @@ static void show_time(request_rec *r, time_t tsecs) { long days, hrs, mins, secs; - char buf[100]; - char *s; secs = tsecs % 60; tsecs /= 60; @@ -167,8 +165,6 @@ tsecs /= 60; hrs = tsecs % 24; days = tsecs / 24; - s = buf; - *s = '\0'; if (days) rprintf(r, " %ld day%s", days, days == 1 ? "" : "s"); if (hrs) @@ -190,19 +186,22 @@ struct stat_opt { int id; - char *form_data_str; - char *hdr_out_str; + const char *form_data_str; + const char *hdr_out_str; }; +static const struct stat_opt status_options[] = /* see #defines above */ +{ + {STAT_OPT_REFRESH, "refresh", "Refresh"}, + {STAT_OPT_NOTABLE, "notable", NULL}, + {STAT_OPT_AUTO, "auto", NULL}, + {STAT_OPT_END, NULL, NULL} +}; + +static char status_flags[SERVER_NUM_STATUS]; + static int status_handler(request_rec *r) { - struct stat_opt options[] = /* see #defines above */ - { - {STAT_OPT_REFRESH, "refresh", "Refresh"}, - {STAT_OPT_NOTABLE, "notable", NULL}, - {STAT_OPT_AUTO, "auto", NULL}, - {STAT_OPT_END, NULL, NULL} - }; char *loc; time_t nowtime = time(NULL); time_t up_time; @@ -228,22 +227,11 @@ server_rec *server = r->server; short_score score_record; parent_score ps_record; - char status[SERVER_NUM_STATUS]; char stat_buffer[HARD_SERVER_LIMIT]; clock_t tu, ts, tcu, tcs; tu = ts = tcu = tcs = 0; - status[SERVER_DEAD] = '.'; /* We don't want to assume these are in */ - status[SERVER_READY] = '_'; /* any particular order in scoreboard.h */ - status[SERVER_STARTING] = 'S'; - status[SERVER_BUSY_READ] = 'R'; - status[SERVER_BUSY_WRITE] = 'W'; - status[SERVER_BUSY_KEEPALIVE] = 'K'; - status[SERVER_BUSY_LOG] = 'L'; - status[SERVER_BUSY_DNS] = 'D'; - status[SERVER_GRACEFUL] = 'G'; - if (!exists_scoreboard_image()) { aplog_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r->server, "Server status unavailable in inetd mode"); @@ -261,15 +249,15 @@ if (r->args) { i = 0; - while (options[i].id != STAT_OPT_END) { - if ((loc = strstr(r->args, options[i].form_data_str)) != NULL) { - switch (options[i].id) { + while (status_options[i].id != STAT_OPT_END) { + if ((loc = strstr(r->args, status_options[i].form_data_str)) != NULL) { + switch (status_options[i].id) { case STAT_OPT_REFRESH: - if (*(loc + strlen(options[i].form_data_str)) == '=') - table_set(r->headers_out, options[i].hdr_out_str, - loc + strlen(options[i].hdr_out_str) + 1); + if (*(loc + strlen(status_options[i].form_data_str)) == '=') + table_set(r->headers_out, status_options[i].hdr_out_str, + loc + strlen(status_options[i].hdr_out_str) + 1); else - table_set(r->headers_out, options[i].hdr_out_str, "1"); + table_set(r->headers_out, status_options[i].hdr_out_str, "1"); break; case STAT_OPT_NOTABLE: no_table_report = 1; @@ -294,7 +282,7 @@ score_record = scoreboard_image->servers[i]; ps_record = scoreboard_image->parent[i]; res = score_record.status; - stat_buffer[i] = (res == SERVER_UNKNOWN) ? '?' : status[res]; + stat_buffer[i] = (res == SERVER_UNKNOWN) ? '?' : status_flags[res]; if (res == SERVER_READY) ready++; else if (res != SERVER_DEAD && res != SERVER_UNKNOWN) @@ -656,6 +644,20 @@ return 0; } + +static void status_init(server_rec *s, pool *p) +{ + status_flags[SERVER_DEAD] = '.'; /* We don't want to assume these are in */ + status_flags[SERVER_READY] = '_'; /* any particular order in scoreboard.h */ + status_flags[SERVER_STARTING] = 'S'; + status_flags[SERVER_BUSY_READ] = 'R'; + status_flags[SERVER_BUSY_WRITE] = 'W'; + status_flags[SERVER_BUSY_KEEPALIVE] = 'K'; + status_flags[SERVER_BUSY_LOG] = 'L'; + status_flags[SERVER_BUSY_DNS] = 'D'; + status_flags[SERVER_GRACEFUL] = 'G'; +} + static handler_rec status_handlers[] = { {STATUS_MAGIC_TYPE, status_handler}, @@ -666,7 +668,7 @@ module MODULE_VAR_EXPORT status_module = { STANDARD_MODULE_STUFF, - NULL, /* initializer */ + status_init, /* initializer */ NULL, /* dir config creater */ NULL, /* dir merger --- default is to override */ NULL, /* server config */ From yaguilar@example.com Fri Jan 02 23:58:32 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 1350 invoked by uid 6000); 2 Jan 1998 23:58:31 -0000 Received: (qmail 1344 invoked by alias); 2 Jan 1998 23:58:30 -0000 Delivered-To: yaguilar@example.com Received: (qmail 1342 invoked by uid 143); 2 Jan 1998 23:58:29 -0000 Date: 2 Jan 1998 23:58:29 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen/src/modules/standard mod_digest.c Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com dgaudet 98/01/02 15:58:29 Modified: . STATUS src CHANGES src/modules/standard mod_digest.c Log: Using the digest Authentication scheme for proxy authentication, authorization never succeeds because mod_digest always looks at the Authorization header, never at the Proxy-Authorization header. Also, the scheme in the auth header is compared to "Digest" using a case- sensitive comparison, instead of a case-insensitive comparison. PR: 1599 Submitted by: Ronald Tschalaer <yaguilar@example.com> Reviewed by: Dean Gaudet, Jim Jagielski Revision Changes Path 1.47 +1 -5 apachen/STATUS Index: STATUS =================================================================== RCS file: /export/home/cvs/apachen/STATUS,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 --- STATUS 1998/01/02 23:46:06 1.46 +++ STATUS 1998/01/02 23:58:24 1.47 @@ -65,6 +65,7 @@ * Paul/Ben's [PATCH] 1.3: spaces in NT spawn* arguments * Dean's [PATCH] mod_info minor cleanups (take 2) * Dean's [PATCH] mod_status cleanups + * [PATCH] mod_digest/1599: proxy authentication using the digest auth scheme never succeeds (fwd) Available Patches: @@ -72,11 +73,6 @@ <yaguilar@example.com> Status: Ken +1, Jim +1 Gregory Lundberg says it's legally invalid - - * [PATCH] mod_digest/1599: proxy authentication using the digest auth - scheme never succeeds (fwd) - <yaguilar@example.com> - Status: Dean +1, Jim +1 * Martin's [PATCH] 36kB: Make apache compile & run on an EBCDIC mainframe <yaguilar@example.com> 1.556 +4 -0 apachen/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apachen/src/CHANGES,v retrieving revision 1.555 retrieving revision 1.556 diff -u -r1.555 -r1.556 --- CHANGES 1998/01/02 23:46:07 1.555 +++ CHANGES 1998/01/02 23:58:26 1.556 @@ -1,5 +1,9 @@ Changes with Apache 1.3b4 + *) mod_digest didn't properly deal with proxy authentication. It + also lacked a case-insensitive comparision of the "Digest" + token. [Ronald Tschalaer <yaguilar@example.com>] PR#1599 + *) A few cleanups in mod_status for efficiency. [Dean Gaudet] *) A few cleanups in mod_info to make it thread-safe, and remove an 1.28 +4 -2 apachen/src/modules/standard/mod_digest.c Index: mod_digest.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_digest.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- mod_digest.c 1997/12/18 20:39:18 1.27 +++ mod_digest.c 1998/01/02 23:58:28 1.28 @@ -132,7 +132,9 @@ int get_digest_rec(request_rec *r, digest_header_rec * response) { - const char *auth_line = table_get(r->headers_in, "Authorization"); + const char *auth_line = table_get(r->headers_in, + r->proxyreq ? "Proxy-Authorization" + : "Authorization"); int l; int s = 0, vk = 0, vv = 0; char *t, *key, *value; @@ -151,7 +153,7 @@ return AUTH_REQUIRED; } - if (strcmp(getword(r->pool, &auth_line, ' '), "Digest")) { + if (strcasecmp(getword(r->pool, &auth_line, ' '), "Digest")) { /* Client tried to authenticate using wrong auth scheme */ aplog_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r->server, "client used wrong authentication scheme: %s", r->uri); From yaguilar@example.com Sat Jan 03 00:16:42 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 6123 invoked by uid 6000); 3 Jan 1998 00:16:42 -0000 Received: (qmail 6117 invoked by alias); 3 Jan 1998 00:16:40 -0000 Delivered-To: yaguilar@example.com Received: (qmail 6115 invoked by uid 143); 3 Jan 1998 00:16:40 -0000 Date: 3 Jan 1998 00:16:40 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen/src/modules/standard mod_alias.c mod_auth_anon.c mod_cern_meta.c mod_digest.c mod_log_agent.c mod_log_referer.c mod_usertrack.c Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com dgaudet 98/01/02 16:16:39 Modified: src/modules/standard mod_alias.c mod_auth_anon.c mod_cern_meta.c mod_digest.c mod_log_agent.c mod_log_referer.c mod_usertrack.c Log: Somehow I missed a whole boatload of modules when adding static. I'm not sure how that was. There's a few other changes in here, nothing that affects functionality, they're essentially documentation fixes. Revision Changes Path 1.28 +3 -3 apachen/src/modules/standard/mod_alias.c Index: mod_alias.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_alias.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- mod_alias.c 1997/12/14 20:48:55 1.27 +++ mod_alias.c 1998/01/03 00:16:35 1.28 @@ -246,10 +246,10 @@ {NULL} }; -static int alias_matches(char *uri, char *alias_fakename) +static int alias_matches(const char *uri, const char *alias_fakename) { - char *end_fakename = alias_fakename + strlen(alias_fakename); - char *aliasp = alias_fakename, *urip = uri; + const char *end_fakename = alias_fakename + strlen(alias_fakename); + const char *aliasp = alias_fakename, *urip = uri; while (aliasp < end_fakename) { if (*aliasp == '/') { 1.28 +10 -10 apachen/src/modules/standard/mod_auth_anon.c Index: mod_auth_anon.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_auth_anon.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- mod_auth_anon.c 1997/10/22 20:30:15 1.27 +++ mod_auth_anon.c 1998/01/03 00:16:35 1.28 @@ -112,7 +112,7 @@ } anon_auth_config_rec; -void *create_anon_auth_dir_config(pool *p, char *d) +static void *create_anon_auth_dir_config(pool *p, char *d) { anon_auth_config_rec *sec = (anon_auth_config_rec *) pcalloc(p, sizeof(anon_auth_config_rec)); @@ -131,39 +131,39 @@ return sec; } -const char *anon_set_passwd_flag(cmd_parms *cmd, +static const char *anon_set_passwd_flag(cmd_parms *cmd, anon_auth_config_rec * sec, int arg) { sec->auth_anon_mustemail = arg; return NULL; } -const char *anon_set_userid_flag(cmd_parms *cmd, +static const char *anon_set_userid_flag(cmd_parms *cmd, anon_auth_config_rec * sec, int arg) { sec->auth_anon_nouserid = arg; return NULL; } -const char *anon_set_logemail_flag(cmd_parms *cmd, +static const char *anon_set_logemail_flag(cmd_parms *cmd, anon_auth_config_rec * sec, int arg) { sec->auth_anon_logemail = arg; return NULL; } -const char *anon_set_verifyemail_flag(cmd_parms *cmd, +static const char *anon_set_verifyemail_flag(cmd_parms *cmd, anon_auth_config_rec * sec, int arg) { sec->auth_anon_verifyemail = arg; return NULL; } -const char *anon_set_authoritative_flag(cmd_parms *cmd, +static const char *anon_set_authoritative_flag(cmd_parms *cmd, anon_auth_config_rec * sec, int arg) { sec->auth_anon_authoritative = arg; return NULL; } -const char *anon_set_string_slots(cmd_parms *cmd, +static const char *anon_set_string_slots(cmd_parms *cmd, anon_auth_config_rec * sec, char *arg) { @@ -187,7 +187,7 @@ return NULL; } -command_rec anon_auth_cmds[] = +static command_rec anon_auth_cmds[] = { {"Anonymous", anon_set_string_slots, NULL, OR_AUTHCFG, ITERATE, "a space-separated list of user IDs"}, @@ -207,7 +207,7 @@ module MODULE_VAR_EXPORT anon_auth_module; -int anon_authenticate_basic_user(request_rec *r) +static int anon_authenticate_basic_user(request_rec *r) { anon_auth_config_rec *sec = (anon_auth_config_rec *) get_module_config(r->per_dir_config, @@ -267,7 +267,7 @@ return DECLINED; } -int check_anon_access(request_rec *r) +static int check_anon_access(request_rec *r) { #ifdef NOTYET conn_rec *c = r->connection; 1.23 +8 -8 apachen/src/modules/standard/mod_cern_meta.c Index: mod_cern_meta.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_cern_meta.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- mod_cern_meta.c 1997/10/22 20:30:17 1.22 +++ mod_cern_meta.c 1998/01/03 00:16:36 1.23 @@ -166,7 +166,7 @@ char *metafiles; } cern_meta_dir_config; -void *create_cern_meta_dir_config(pool *p, char *dummy) +static void *create_cern_meta_dir_config(pool *p, char *dummy) { cern_meta_dir_config *new = (cern_meta_dir_config *) palloc(p, sizeof(cern_meta_dir_config)); @@ -178,7 +178,7 @@ return new; } -void *merge_cern_meta_dir_configs(pool *p, void *basev, void *addv) +static void *merge_cern_meta_dir_configs(pool *p, void *basev, void *addv) { cern_meta_dir_config *base = (cern_meta_dir_config *) basev; cern_meta_dir_config *add = (cern_meta_dir_config *) addv; @@ -192,26 +192,26 @@ return new; } -const char *set_metadir(cmd_parms *parms, cern_meta_dir_config * dconf, char *arg) +static const char *set_metadir(cmd_parms *parms, cern_meta_dir_config * dconf, char *arg) { dconf->metadir = arg; return NULL; } -const char *set_metasuffix(cmd_parms *parms, cern_meta_dir_config * dconf, char *arg) +static const char *set_metasuffix(cmd_parms *parms, cern_meta_dir_config * dconf, char *arg) { dconf->metasuffix = arg; return NULL; } -const char *set_metafiles(cmd_parms *parms, cern_meta_dir_config * dconf, char *arg) +static const char *set_metafiles(cmd_parms *parms, cern_meta_dir_config * dconf, char *arg) { dconf->metafiles = arg; return NULL; } -command_rec cern_meta_cmds[] = +static command_rec cern_meta_cmds[] = { {"MetaFiles", set_metafiles, NULL, DIR_CMD_PERMS, FLAG, NULL}, {"MetaDir", set_metadir, NULL, DIR_CMD_PERMS, TAKE1, @@ -221,7 +221,7 @@ {NULL} }; -int scan_meta_file(request_rec *r, FILE *f) +static int scan_meta_file(request_rec *r, FILE *f) { char w[MAX_STRING_LEN]; char *l; @@ -276,7 +276,7 @@ return OK; } -int add_cern_meta_data(request_rec *r) +static int add_cern_meta_data(request_rec *r) { char *metafilename; char *last_slash; 1.29 +14 -9 apachen/src/modules/standard/mod_digest.c Index: mod_digest.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_digest.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- mod_digest.c 1998/01/02 23:58:28 1.28 +++ mod_digest.c 1998/01/03 00:16:36 1.29 @@ -78,12 +78,12 @@ char *digest; } digest_header_rec; -void *create_digest_dir_config(pool *p, char *d) +static void *create_digest_dir_config(pool *p, char *d) { return pcalloc(p, sizeof(digest_config_rec)); } -const char *set_digest_slot(cmd_parms *cmd, void *offset, char *f, char *t) +static const char *set_digest_slot(cmd_parms *cmd, void *offset, char *f, char *t) { if (t && strcmp(t, "standard")) return pstrcat(cmd->pool, "Invalid auth file type: ", t, NULL); @@ -91,7 +91,7 @@ return set_string_slot(cmd, offset, f); } -command_rec digest_cmds[] = +static command_rec digest_cmds[] = { {"AuthDigestFile", set_digest_slot, (void *) XtOffsetOf(digest_config_rec, pwfile), OR_AUTHCFG, TAKE12, NULL}, @@ -100,7 +100,7 @@ module MODULE_VAR_EXPORT digest_module; -char *get_hash(request_rec *r, char *user, char *auth_pwfile) +static char *get_hash(request_rec *r, char *user, char *auth_pwfile) { configfile_t *f; char l[MAX_STRING_LEN]; @@ -130,13 +130,13 @@ /* Parse the Authorization header, if it exists */ -int get_digest_rec(request_rec *r, digest_header_rec * response) +static int get_digest_rec(request_rec *r, digest_header_rec * response) { const char *auth_line = table_get(r->headers_in, r->proxyreq ? "Proxy-Authorization" : "Authorization"); int l; - int s = 0, vk = 0, vv = 0; + int s, vk = 0, vv = 0; char *t, *key, *value; if (!(t = auth_type(r)) || strcasecmp(t, "Digest")) @@ -163,6 +163,10 @@ l = strlen(auth_line); + /* Note we don't allocate l + 1 bytes for these deliberately, because + * there has to be at least one '=' character for either of these two + * new strings to be terminated. That takes care of the need for +1. + */ key = palloc(r->pool, l); value = palloc(r->pool, l); @@ -173,6 +177,7 @@ #define D_STRING 2 #define D_EXIT -1 + s = D_KEY; while (s != D_EXIT) { switch (s) { case D_STRING: @@ -246,7 +251,7 @@ /* The actual MD5 code... whee */ -char *find_digest(request_rec *r, digest_header_rec * h, char *a1) +static char *find_digest(request_rec *r, digest_header_rec * h, char *a1) { return ap_md5(r->pool, (unsigned char *)pstrcat(r->pool, a1, ":", h->nonce, ":", @@ -270,7 +275,7 @@ * basic authentication... */ -int authenticate_digest_user(request_rec *r) +static int authenticate_digest_user(request_rec *r) { digest_config_rec *sec = (digest_config_rec *) get_module_config(r->per_dir_config, @@ -304,7 +309,7 @@ /* Checking ID */ -int digest_check_auth(request_rec *r) +static int digest_check_auth(request_rec *r) { char *user = r->connection->user; int m = r->method_number; 1.19 +6 -7 apachen/src/modules/standard/mod_log_agent.c Index: mod_log_agent.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_log_agent.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- mod_log_agent.c 1997/10/22 20:30:23 1.18 +++ mod_log_agent.c 1998/01/03 00:16:37 1.19 @@ -70,7 +70,7 @@ int agent_fd; } agent_log_state; -void *make_agent_log_state(pool *p, server_rec *s) +static void *make_agent_log_state(pool *p, server_rec *s) { agent_log_state *cls = (agent_log_state *) palloc(p, sizeof(agent_log_state)); @@ -78,11 +78,10 @@ cls->fname = ""; cls->agent_fd = -1; - return (void *) cls; } -const char *set_agent_log(cmd_parms *parms, void *dummy, char *arg) +static const char *set_agent_log(cmd_parms *parms, void *dummy, char *arg) { agent_log_state *cls = get_module_config(parms->server->module_config, &agent_log_module); @@ -91,7 +90,7 @@ return NULL; } -command_rec agent_log_cmds[] = +static command_rec agent_log_cmds[] = { {"AgentLog", set_agent_log, NULL, RSRC_CONF, TAKE1, "the filename of the agent log"}, @@ -122,7 +121,7 @@ return (child_pid); } -void open_agent_log(server_rec *s, pool *p) +static void open_agent_log(server_rec *s, pool *p) { agent_log_state *cls = get_module_config(s->module_config, &agent_log_module); @@ -153,13 +152,13 @@ } } -void init_agent_log(server_rec *s, pool *p) +static void init_agent_log(server_rec *s, pool *p) { for (; s; s = s->next) open_agent_log(s, p); } -int agent_log_transaction(request_rec *orig) +static int agent_log_transaction(request_rec *orig) { agent_log_state *cls = get_module_config(orig->server->module_config, &agent_log_module); 1.19 +7 -7 apachen/src/modules/standard/mod_log_referer.c Index: mod_log_referer.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_log_referer.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- mod_log_referer.c 1997/10/22 20:30:24 1.18 +++ mod_log_referer.c 1998/01/03 00:16:37 1.19 @@ -72,7 +72,7 @@ array_header *referer_ignore_list; } referer_log_state; -void *make_referer_log_state(pool *p, server_rec *s) +static void *make_referer_log_state(pool *p, server_rec *s) { referer_log_state *cls = (referer_log_state *) palloc(p, sizeof(referer_log_state)); @@ -83,7 +83,7 @@ return (void *) cls; } -const char *set_referer_log(cmd_parms *parms, void *dummy, char *arg) +static const char *set_referer_log(cmd_parms *parms, void *dummy, char *arg) { referer_log_state *cls = get_module_config(parms->server->module_config, &referer_log_module); @@ -92,7 +92,7 @@ return NULL; } -const char *add_referer_ignore(cmd_parms *parms, void *dummy, char *arg) +static const char *add_referer_ignore(cmd_parms *parms, void *dummy, char *arg) { char **addme; referer_log_state *cls = get_module_config(parms->server->module_config, @@ -103,7 +103,7 @@ return NULL; } -command_rec referer_log_cmds[] = +static command_rec referer_log_cmds[] = { {"RefererLog", set_referer_log, NULL, RSRC_CONF, TAKE1, "the filename of the referer log"}, @@ -137,7 +137,7 @@ return (child_pid); } -void open_referer_log(server_rec *s, pool *p) +static void open_referer_log(server_rec *s, pool *p) { referer_log_state *cls = get_module_config(s->module_config, &referer_log_module); @@ -168,13 +168,13 @@ } } -void init_referer_log(server_rec *s, pool *p) +static void init_referer_log(server_rec *s, pool *p) { for (; s; s = s->next) open_referer_log(s, p); } -int referer_log_transaction(request_rec *orig) +static int referer_log_transaction(request_rec *orig) { char **ptrptr, **ptrptr2; referer_log_state *cls = get_module_config(orig->server->module_config, 1.23 +7 -7 apachen/src/modules/standard/mod_usertrack.c Index: mod_usertrack.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_usertrack.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- mod_usertrack.c 1997/12/21 01:58:57 1.22 +++ mod_usertrack.c 1998/01/03 00:16:38 1.23 @@ -123,7 +123,7 @@ #define COOKIE_NAME "Apache=" -void make_cookie(request_rec *r) +static void make_cookie(request_rec *r) { cookie_log_state *cls = get_module_config(r->server->module_config, &usertrack_module); @@ -205,7 +205,7 @@ return; } -int spot_cookie(request_rec *r) +static int spot_cookie(request_rec *r) { int *enable = (int *) get_module_config(r->per_dir_config, &usertrack_module); @@ -234,7 +234,7 @@ return OK; /* We set our cookie */ } -void *make_cookie_log_state(pool *p, server_rec *s) +static void *make_cookie_log_state(pool *p, server_rec *s) { cookie_log_state *cls = (cookie_log_state *) palloc(p, sizeof(cookie_log_state)); @@ -244,18 +244,18 @@ return (void *) cls; } -void *make_cookie_dir(pool *p, char *d) +static void *make_cookie_dir(pool *p, char *d) { return (void *) pcalloc(p, sizeof(int)); } -const char *set_cookie_enable(cmd_parms *cmd, int *c, int arg) +static const char *set_cookie_enable(cmd_parms *cmd, int *c, int arg) { *c = arg; return NULL; } -const char *set_cookie_exp(cmd_parms *parms, void *dummy, const char *arg) +static const char *set_cookie_exp(cmd_parms *parms, void *dummy, const char *arg) { cookie_log_state *cls = get_module_config(parms->server->module_config, &usertrack_module); @@ -322,7 +322,7 @@ return NULL; } -command_rec cookie_log_cmds[] = { +static command_rec cookie_log_cmds[] = { {"CookieExpires", set_cookie_exp, NULL, RSRC_CONF, TAKE1, "an expiry date code"}, {"CookieTracking", set_cookie_enable, NULL, OR_FILEINFO, FLAG, From yaguilar@example.com Sat Jan 03 00:18:42 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 6963 invoked by uid 6000); 3 Jan 1998 00:18:42 -0000 Received: (qmail 6910 invoked by alias); 3 Jan 1998 00:18:41 -0000 Delivered-To: yaguilar@example.com Received: (qmail 6888 invoked by uid 143); 3 Jan 1998 00:18:40 -0000 Date: 3 Jan 1998 00:18:40 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen/src/main http_log.c Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com dgaudet 98/01/02 16:18:40 Modified: src CHANGES src/main http_log.c Log: Fix buffer overrun in log_printf(). Reviewed by: Randy Terbush Revision Changes Path 1.557 +4 -0 apachen/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apachen/src/CHANGES,v retrieving revision 1.556 retrieving revision 1.557 diff -u -r1.556 -r1.557 --- CHANGES 1998/01/02 23:58:26 1.556 +++ CHANGES 1998/01/03 00:18:31 1.557 @@ -1,5 +1,9 @@ Changes with Apache 1.3b4 + *) The aplog_error changes specific to 1.3 introduced a buffer + overrun in the (now legacy) log_printf function. Fixed. + [Dean Gaudet] + *) mod_digest didn't properly deal with proxy authentication. It also lacked a case-insensitive comparision of the "Digest" token. [Ronald Tschalaer <yaguilar@example.com>] PR#1599 1.45 +1 -1 apachen/src/main/http_log.c Index: http_log.c =================================================================== RCS file: /export/home/cvs/apachen/src/main/http_log.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- http_log.c 1997/12/07 15:47:59 1.44 +++ http_log.c 1998/01/03 00:18:38 1.45 @@ -413,7 +413,7 @@ va_list args; va_start(args, fmt); - vsprintf(buf, fmt, args); + ap_vsnprintf(buf, sizeof(buf), fmt, args); aplog_error(APLOG_MARK, APLOG_ERR, s, buf); va_end(args); } From yaguilar@example.com Sat Jan 03 00:24:02 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 9508 invoked by uid 6000); 3 Jan 1998 00:24:01 -0000 Received: (qmail 9502 invoked by alias); 3 Jan 1998 00:24:00 -0000 Delivered-To: yaguilar@example.com Received: (qmail 9479 invoked by uid 143); 3 Jan 1998 00:24:00 -0000 Date: 3 Jan 1998 00:24:00 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen/src/main alloc.c Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com dgaudet 98/01/02 16:23:59 Modified: src/main alloc.c Log: style guide changes. Revision Changes Path 1.66 +10 -4 apachen/src/main/alloc.c Index: alloc.c =================================================================== RCS file: /export/home/cvs/apachen/src/main/alloc.c,v retrieving revision 1.65 retrieving revision 1.66 diff -u -r1.65 -r1.66 --- alloc.c 1997/12/30 19:56:11 1.65 +++ alloc.c 1998/01/03 00:23:59 1.66 @@ -731,7 +731,7 @@ table_entry *elts = (table_entry *) t->elts; int done = 0; - for (i = 0; i < t->nelts; ) + for (i = 0; i < t->nelts; ) { if (!strcasecmp(elts[i].key, key)) { if (!done) { elts[i].val = pstrdup(t->pool, val); @@ -746,7 +746,10 @@ --t->nelts; } } - else ++i; + else { + ++i; + } + } if (!done) { elts = (table_entry *) push_array(t); @@ -760,7 +763,7 @@ register int i, j, k; table_entry *elts = (table_entry *) t->elts; - for (i = 0; i < t->nelts; ) + for (i = 0; i < t->nelts; ) { if (!strcasecmp(elts[i].key, key)) { /* found an element to skip over @@ -774,7 +777,10 @@ } --t->nelts; } - else ++i; + else { + ++i; + } + } } API_EXPORT(void) table_merge(table *t, const char *key, const char *val) From yaguilar@example.com Sat Jan 03 18:17:44 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 21538 invoked by uid 6000); 3 Jan 1998 18:17:44 -0000 Received: (qmail 21532 invoked by alias); 3 Jan 1998 18:17:43 -0000 Delivered-To: yaguilar@example.com Received: (qmail 21530 invoked by uid 161); 3 Jan 1998 18:17:42 -0000 Date: 3 Jan 1998 18:17:42 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apache-site bugdb.cgi Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com coar 98/01/03 10:17:42 Modified: . bugdb.cgi Log: Add a checkbox to the edit form to turn off mail notification. (Useful when making cosmetic changes or altering closed PRs.) Revision Changes Path 1.23 +27 -13 apache-site/bugdb.cgi Index: bugdb.cgi =================================================================== RCS file: /export/home/cvs/apache-site/bugdb.cgi,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- bugdb.cgi 1997/12/30 05:34:21 1.22 +++ bugdb.cgi 1998/01/03 18:17:41 1.23 @@ -102,6 +102,9 @@ # 12/30/1997 Ken Coar - Correct a pointer to the bugdb page, and add the # actual closure text to the editing display so editors know what will # be sent. +# 01/03/1998 Ken Coar - Add a checkbox to the edit form to prevent +# email from being sent. This allows cosmetic changes to be made, +# even to closed PRs, without spamming people. # ### End Modification log @@ -239,7 +242,7 @@ ### Main menu } elsif ($PATH_INFO eq "") { &main_menu(); - print "<HR><SMALL>Version: 30 December 1997<BR>Authors: ", + print "<HR><SMALL>Version: 3 January 1998<BR>Authors: ", "<A HREF=\"http://alumni.caltech.edu/~dank/gnats.html\">Dan Kegel ", "and Huy Le</A>, <BR> ", "with revamp work by ", @@ -428,7 +431,7 @@ # Send the PR $prtext = &unparse_pr("send"); - open(MAIL, "|$MAILER") || die "Error while invoking sendmail"; + open(MAIL, "|$MAILER") || die "Error while invoking $MAILER"; print MAIL <<EOM; To: $GNATS_ADDR Subject: @@ -875,9 +878,9 @@ # Email-notify all concerned parties #print "---------------------------------</pre>\n"; - local($mail_to); + local($mail_to, $mailed) = ("", 0); $mail_to = join(", ", sort(keys(%mail_to))); - if ($mail_to ne "") { + if (($mail_to ne "") && (!$input{"NoNotify"})) { if (open(MAILER, "|$MAILER")) { $msg = "To: $mail_to @@ -892,19 +895,21 @@ "; print MAILER $msg; close(MAILER); - - # Display message - $msg =~ s/\</\&lt\;/g; - $msg =~ s/\>/\&gt\;/g; - print -"<H3>Your changes to PR $pr were filed to the database.</H3> -The parties concerned were notified via e-mail as follows: -<br><pre>$msg</pre> -"; + $mailed = 1; } else { print "Error: can't run $MAILER\n"; } } + # Display message + $msg =~ s/\</\&lt\;/g; + $msg =~ s/\>/\&gt\;/g; + print "<H3>Your changes to PR $pr were filed to the database.</H3>"; + if ($mailed) { + print <<EOHT; +The parties concerned were notified via e-mail as follows: +<br><pre>$msg</pre> +EOHT + } } # Gives the interface to change the PR @@ -951,6 +956,15 @@ # Maximize box dimensions local($width)= 60; local($height)= 4; + + print <<EOHT; +<DL COMPACT> + <DT><INPUT TYPE="checkbox" NAME="NoNotify"> + </DT> + <DD>DO NOT send mail about this change + </DD> +</DL> +EOHT print "<dl> <dt>Editor (you): From yaguilar@example.com Sun Jan 04 13:03:54 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 6316 invoked by uid 6000); 4 Jan 1998 13:03:53 -0000 Received: (qmail 6310 invoked by alias); 4 Jan 1998 13:03:52 -0000 Delivered-To: yaguilar@example.com Received: (qmail 6308 invoked by uid 151); 4 Jan 1998 13:03:51 -0000 Date: 4 Jan 1998 13:03:51 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen/src/ap ap.dsp ap.mak Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com pcs 98/01/04 05:03:51 Added: src/ap ap.dsp ap.mak Log: Makefile and project to build libap on Win32 Revision Changes Path 1.1 apachen/src/ap/ap.dsp Index: ap.dsp =================================================================== # Microsoft Developer Studio Project File - Name="ap" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 5.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=ap - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "ap.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ap.mak" CFG="ap - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ap - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "ap - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe !IF "$(CFG)" == "ap - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "../main" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo !ELSEIF "$(CFG)" == "ap - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../main" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo !ENDIF # Begin Target # Name "ap - Win32 Release" # Name "ap - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "" # Begin Source File SOURCE=.\ap_cpystrn.c # End Source File # Begin Source File SOURCE=.\ap_signal.c # End Source File # Begin Source File SOURCE=.\ap_slack.c # End Source File # Begin Source File SOURCE=.\ap_snprintf.c # End Source File # Begin Source File SOURCE=.\ap_strings.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "" # End Group # End Target # End Project 1.1 apachen/src/ap/ap.mak Index: ap.mak =================================================================== # Microsoft Developer Studio Generated NMAKE File, Based on ap.dsp !IF "$(CFG)" == "" CFG=ap - Win32 Debug !MESSAGE No configuration specified. Defaulting to ap - Win32 Debug. !ENDIF !IF "$(CFG)" != "ap - Win32 Release" && "$(CFG)" != "ap - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ap.mak" CFG="ap - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ap - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "ap - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe !IF "$(CFG)" == "ap - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros !IF "$(RECURSE)" == "0" ALL : "$(OUTDIR)\ap.lib" !ELSE ALL : "$(OUTDIR)\ap.lib" !ENDIF CLEAN : -@erase "$(INTDIR)\ap_cpystrn.obj" -@erase "$(INTDIR)\ap_snprintf.obj" -@erase "$(INTDIR)\ap_strings.obj" -@erase "$(INTDIR)\vc50.idb" -@erase "$(OUTDIR)\ap.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "../main" /D "WIN32" /D "NDEBUG" /D\ "_WINDOWS" /Fp"$(INTDIR)\ap.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c CPP_OBJS=.\Release/ CPP_SBRS=. BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\ap.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"$(OUTDIR)\ap.lib" LIB32_OBJS= \ "$(INTDIR)\ap_cpystrn.obj" \ "$(INTDIR)\ap_snprintf.obj" \ "$(INTDIR)\ap_strings.obj" "$(OUTDIR)\ap.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ELSEIF "$(CFG)" == "ap - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros !IF "$(RECURSE)" == "0" ALL : "$(OUTDIR)\ap.lib" !ELSE ALL : "$(OUTDIR)\ap.lib" !ENDIF CLEAN : -@erase "$(INTDIR)\ap_cpystrn.obj" -@erase "$(INTDIR)\ap_snprintf.obj" -@erase "$(INTDIR)\ap_strings.obj" -@erase "$(INTDIR)\vc50.idb" -@erase "$(OUTDIR)\ap.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W3 /GX /Z7 /Od /I "../main" /D "WIN32" /D "_DEBUG" /D\ "_WINDOWS" /Fp"$(INTDIR)\ap.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c CPP_OBJS=.\Debug/ CPP_SBRS=. BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\ap.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"$(OUTDIR)\ap.lib" LIB32_OBJS= \ "$(INTDIR)\ap_cpystrn.obj" \ "$(INTDIR)\ap_snprintf.obj" \ "$(INTDIR)\ap_strings.obj" "$(OUTDIR)\ap.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ENDIF .c{$(CPP_OBJS)}.obj888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4 $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(CPP_OBJS)}.obj888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4 $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(CPP_OBJS)}.obj888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4 $(CPP) @<< $(CPP_PROJ) $< << .c{$(CPP_SBRS)}.sbr888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4 $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(CPP_SBRS)}.sbr888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4 $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(CPP_SBRS)}.sbr888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4 $(CPP) @<< $(CPP_PROJ) $< << !IF "$(CFG)" == "ap - Win32 Release" || "$(CFG)" == "ap - Win32 Debug" SOURCE=.\ap_cpystrn.c DEP_CPP_AP_CP=\ "..\main\alloc.h"\ "..\main\buff.h"\ "..\main\conf.h"\ "..\main\httpd.h"\ "..\os\win32\os.h"\ "..\os\win32\readdir.h"\ "..\regex\regex.h"\ "$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)" SOURCE=.\ap_snprintf.c DEP_CPP_AP_SN=\ "..\main\conf.h"\ "..\os\win32\os.h"\ "..\regex\regex.h"\ "$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)" SOURCE=.\ap_strings.c DEP_CPP_AP_ST=\ "..\main\alloc.h"\ "..\main\buff.h"\ "..\main\conf.h"\ "..\main\httpd.h"\ "..\os\win32\os.h"\ "..\os\win32\readdir.h"\ "..\regex\regex.h"\ "$(INTDIR)\ap_strings.obj" : $(SOURCE) $(DEP_CPP_AP_ST) "$(INTDIR)" !ENDIF From yaguilar@example.com Sun Jan 04 13:06:14 1998 Return-Path: <yaguilar@example.com> Delivered-To: yaguilar@example.com Received: (qmail 6493 invoked by uid 6000); 4 Jan 1998 13:06:13 -0000 Received: (qmail 6486 invoked by alias); 4 Jan 1998 13:06:12 -0000 Delivered-To: yaguilar@example.com Received: (qmail 6483 invoked by uid 151); 4 Jan 1998 13:06:11 -0000 Date: 4 Jan 1998 13:06:11 -0000 Message-ID: <yaguilar@example.com> From: yaguilar@example.com To: yaguilar@example.com Subject: cvs commit: apachen/src ApacheCore.dsp ApacheCore.mak Sender: yaguilar@example.com Precedence: bulk Reply-To: yaguilar@example.com pcs 98/01/04 05:06:11 Modified: src ApacheCore.dsp ApacheCore.mak Log: Build apache using the ap library on Win32. Revision Changes Path 1.16 +2 -6 apachen/src/ApacheCore.dsp Index: ApacheCore.dsp =================================================================== RCS file: /export/home/cvs/apachen/src/ApacheCore.dsp,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- ApacheCore.dsp 1997/12/24 12:37:07 1.15 +++ ApacheCore.dsp 1998/01/04 13:06:09 1.16 @@ -54,7 +54,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 os\win32\ApacheOSR\ApacheOS.lib regex\release\regex.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 os\win32\ApacheOSR\ApacheOS.lib regex\release\regex.lib ap\Release\ap.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll /machine:I386 !ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" @@ -80,7 +80,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 -# ADD LINK32 os\win32\ApacheOSD\ApacheOS.lib regex\debug\regex.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 os\win32\ApacheOSD\ApacheOS.lib regex\debug\regex.lib ap\Debug\ap.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll /debug /machine:I386 !ENDIF @@ -94,10 +94,6 @@ # Begin Source File SOURCE=.\main\alloc.c -# End Source File -# Begin Source File - -SOURCE=.\ap\ap_snprintf.c # End Source File # Begin Source File 1.26 +338 -920 apachen/src/ApacheCore.mak Index: ApacheCore.mak =================================================================== RCS file: /export/home/cvs/apachen/src/ApacheCore.mak,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- ApacheCore.mak 1997/12/30 16:42:31 1.25 +++ ApacheCore.mak 1998/01/04 13:06:09 1.26 @@ -52,9 +52,6 @@ CLEAN : -@erase "$(INTDIR)\alloc.obj" - -@erase "$(INTDIR)\ap_cpystrn.obj" - -@erase "$(INTDIR)\ap_snprintf.obj" - -@erase "$(INTDIR)\ap_strings.obj" -@erase "$(INTDIR)\buff.obj" -@erase "$(INTDIR)\buildmark.obj" -@erase "$(INTDIR)\explain.obj" @@ -98,16 +95,14 @@ -@erase "$(INTDIR)\util_script.obj" -@erase "$(INTDIR)\util_win32.obj" -@erase "$(INTDIR)\vc50.idb" - -@erase "$(INTDIR)\vc50.pdb" -@erase "$(OUTDIR)\ApacheCore.dll" -@erase "$(OUTDIR)\ApacheCore.exp" -@erase "$(OUTDIR)\ApacheCore.lib" - -@erase "$(OUTDIR)\ApacheCore.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" -CPP_PROJ=/nologo /MD /W3 /GX /Zi /O2 /I ".\regex" /I ".\main" /D "WIN32" /D\ +CPP_PROJ=/nologo /MD /W3 /GX /O2 /I ".\regex" /I ".\main" /D "WIN32" /D\ "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\ApacheCore.pch" /YX /Fo"$(INTDIR)\\"\ /Fd"$(INTDIR)\\" /FD /c CPP_OBJS=.\CoreR/ @@ -119,17 +114,15 @@ LINK32=link.exe LINK32_FLAGS=os\win32\ApacheOSR\ApacheOS.lib regex\release\regex.lib\ - kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib\ - shell32.lib wsock32.lib /nologo /subsystem:windows /dll /incremental:no\ - /pdb:"$(OUTDIR)\ApacheCore.pdb" /debug /machine:I386 /def:".\ApacheCore.def"\ - /out:"$(OUTDIR)\ApacheCore.dll" /implib:"$(OUTDIR)\ApacheCore.lib" + ap\Release\ap.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll\ + /incremental:no /pdb:"$(OUTDIR)\ApacheCore.pdb" /machine:I386\ + /def:".\ApacheCore.def" /out:"$(OUTDIR)\ApacheCore.dll"\ + /implib:"$(OUTDIR)\ApacheCore.lib" DEF_FILE= \ ".\ApacheCore.def" LINK32_OBJS= \ "$(INTDIR)\alloc.obj" \ - "$(INTDIR)\ap_cpystrn.obj" \ - "$(INTDIR)\ap_snprintf.obj" \ - "$(INTDIR)\ap_strings.obj" \ "$(INTDIR)\buff.obj" \ "$(INTDIR)\buildmark.obj" \ "$(INTDIR)\explain.obj" \ @@ -199,12 +192,6 @@ CLEAN : -@erase "$(INTDIR)\alloc.obj" -@erase "$(INTDIR)\alloc.sbr" - -@erase "$(INTDIR)\ap_cpystrn.obj" - -@erase "$(INTDIR)\ap_cpystrn.sbr" - -@erase "$(INTDIR)\ap_snprintf.obj" - -@erase "$(INTDIR)\ap_snprintf.sbr" - -@erase "$(INTDIR)\ap_strings.obj" - -@erase "$(INTDIR)\ap_strings.sbr" -@erase "$(INTDIR)\buff.obj" -@erase "$(INTDIR)\buff.sbr" -@erase "$(INTDIR)\buildmark.obj" @@ -311,9 +298,6 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheCore.bsc" BSC32_SBRS= \ "$(INTDIR)\alloc.sbr" \ - "$(INTDIR)\ap_cpystrn.sbr" \ - "$(INTDIR)\ap_snprintf.sbr" \ - "$(INTDIR)\ap_strings.sbr" \ "$(INTDIR)\buff.sbr" \ "$(INTDIR)\buildmark.sbr" \ "$(INTDIR)\explain.sbr" \ @@ -363,18 +347,16 @@ << LINK32=link.exe -LINK32_FLAGS=os\win32\ApacheOSD\ApacheOS.lib regex\debug\regex.lib kernel32.lib\ - user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib\ - wsock32.lib /nologo /subsystem:windows /dll /incremental:yes\ - /pdb:"$(OUTDIR)\ApacheCore.pdb" /debug /machine:I386 /def:".\ApacheCore.def"\ - /out:"$(OUTDIR)\ApacheCore.dll" /implib:"$(OUTDIR)\ApacheCore.lib" +LINK32_FLAGS=os\win32\ApacheOSD\ApacheOS.lib regex\debug\regex.lib\ + ap\Debug\ap.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll\ + /incremental:yes /pdb:"$(OUTDIR)\ApacheCore.pdb" /debug /machine:I386\ + /def:".\ApacheCore.def" /out:"$(OUTDIR)\ApacheCore.dll"\ + /implib:"$(OUTDIR)\ApacheCore.lib" DEF_FILE= \ ".\ApacheCore.def" LINK32_OBJS= \ "$(INTDIR)\alloc.obj" \ - "$(INTDIR)\ap_cpystrn.obj" \ - "$(INTDIR)\ap_snprintf.obj" \ - "$(INTDIR)\ap_strings.obj" \ "$(INTDIR)\buff.obj" \ "$(INTDIR)\buildmark.obj" \ "$(INTDIR)\explain.obj" \ @@ -459,27 +441,6 @@ !IF "$(CFG)" == "ApacheCore - Win32 Release" || "$(CFG)" ==\ "ApacheCore - Win32 Debug" SOURCE=.\main\alloc.c - -!IF "$(CFG)" == "ApacheCore - Win32 Release" - -DEP_CPP_ALLOC=\ - ".\main\alloc.h"\ - ".\main\buff.h"\ - ".\main\conf.h"\ - ".\main\http_log.h"\ - ".\main\httpd.h"\ - ".\main\multithread.h"\ - ".\os\win32\os.h"\ - ".\os\win32\readdir.h"\ - ".\regex\regex.h"\ - - -"$(INTDIR)\alloc.obj" : $(SOURCE) $(DEP_CPP_ALLOC) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" - DEP_CPP_ALLOC=\ ".\main\alloc.h"\ ".\main\buff.h"\ @@ -490,28 +451,10 @@ ".\os\win32\os.h"\ ".\os\win32\readdir.h"\ ".\regex\regex.h"\ - - -"$(INTDIR)\alloc.obj" "$(INTDIR)\alloc.sbr" : $(SOURCE) $(DEP_CPP_ALLOC)\ - "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -!ENDIF - -SOURCE=.\ap\ap_cpystrn.c -DEP_CPP_AP_CP=\ - ".\main\alloc.h"\ - ".\main\buff.h"\ - ".\main\conf.h"\ - ".\main\httpd.h"\ - ".\os\win32\os.h"\ - ".\os\win32\readdir.h"\ - ".\regex\regex.h"\ {$(INCLUDE)}"sys\stat.h"\ {$(INCLUDE)}"sys\types.h"\ -NODEP_CPP_AP_CP=\ +NODEP_CPP_ALLOC=\ ".\main\os.h"\ ".\main\sfio.h"\ @@ -519,80 +462,21 @@ !IF "$(CFG)" == "ApacheCore - Win32 Release" -"$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" - - -"$(INTDIR)\ap_cpystrn.obj" "$(INTDIR)\ap_cpystrn.sbr" : $(SOURCE)\ - $(DEP_CPP_AP_CP) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -!ENDIF - -SOURCE=.\ap\ap_snprintf.c - -!IF "$(CFG)" == "ApacheCore - Win32 Release" - -DEP_CPP_AP_SN=\ - ".\main\conf.h"\ - ".\os\win32\os.h"\ - ".\regex\regex.h"\ - - -"$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" - -DEP_CPP_AP_SN=\ - ".\main\conf.h"\ - ".\os\win32\os.h"\ - ".\regex\regex.h"\ - - -"$(INTDIR)\ap_snprintf.obj" "$(INTDIR)\ap_snprintf.sbr" : $(SOURCE)\ - $(DEP_CPP_AP_SN) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -!ENDIF - -SOURCE=.\ap\ap_strings.c - -!IF "$(CFG)" == "ApacheCore - Win32 Release" - -DEP_CPP_AP_ST=\ - ".\main\alloc.h"\ - ".\main\buff.h"\ - ".\main\conf.h"\ - ".\main\httpd.h"\ - ".\os\win32\os.h"\ - ".\os\win32\readdir.h"\ - ".\regex\regex.h"\ - - -"$(INTDIR)\ap_strings.obj" : $(SOURCE) $(DEP_CPP_AP_ST) "$(INTDIR)" +"$(INTDIR)\alloc.obj" : $(SOURCE) $(DEP_CPP_ALLOC) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" -"$(INTDIR)\ap_strings.obj" "$(INTDIR)\ap_strings.sbr" : $(SOURCE) "$(INTDIR)" +"$(INTDIR)\alloc.obj" "$(INTDIR)\alloc.sbr" : $(SOURCE) $(DEP_CPP_ALLOC)\ + "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\main\buff.c - -!IF "$(CFG)" == "ApacheCore - Win32 Release" - DEP_CPP_BUFF_=\ ".\main\alloc.h"\ ".\main\buff.h"\ @@ -603,25 +487,23 @@ ".\os\win32\os.h"\ ".\os\win32\readdir.h"\ ".\regex\regex.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_BUFF_=\ + ".\main\os.h"\ + ".\main\sfio.h"\ +!IF "$(CFG)" == "ApacheCore - Win32 Release" + + "$(INTDIR)\buff.obj" : $(SOURCE) $(DEP_CPP_BUFF_) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" -DEP_CPP_BUFF_=\ - ".\main\alloc.h"\ - ".\main\buff.h"\ - ".\main\conf.h"\ - ".\main\http_log.h"\ - ".\main\http_main.h"\ - ".\main\httpd.h"\ - ".\os\win32\os.h"\ - ".\os\win32\readdir.h"\ - ".\regex\regex.h"\ - "$(INTDIR)\buff.obj" "$(INTDIR)\buff.sbr" : $(SOURCE) $(DEP_CPP_BUFF_)\ "$(INTDIR)" @@ -647,9 +529,6 @@ !ENDIF SOURCE=.\main\explain.c - -!IF "$(CFG)" == "ApacheCore - Win32 Release" - DEP_CPP_EXPLA=\ ".\main\alloc.h"\ ".\main\buff.h"\ @@ -659,30 +538,23 @@ ".\os\win32\os.h"\ ".\os\win32\readdir.h"\ ".\regex\regex.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_EXPLA=\ + ".\main\os.h"\ + ".\main\sfio.h"\ +!IF "$(CFG)" == "ApacheCore - Win32 Release" + + "$(INTDIR)\explain.obj" : $(SOURCE) $(DEP_CPP_EXPLA) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" -DEP_CPP_EXPLA=\ - ".\main\alloc.h"\ - ".\main\buff.h"\ - ".\main\conf.h"\ - ".\main\explain.h"\ - ".\main\httpd.h"\ - ".\os\win32\os.h"\ - ".\os\win32\readdir.h"\ - ".\regex\regex.h"\ - {$(INCLUDE)}"sys\stat.h"\ - {$(INCLUDE)}"sys\types.h"\ - -NODEP_CPP_EXPLA=\ - ".\main\os.h"\ - ".\main\sfio.h"\ - "$(INTDIR)\explain.obj" "$(INTDIR)\explain.sbr" : $(SOURCE) $(DEP_CPP_EXPLA)\ "$(INTDIR)" @@ -732,25 +604,6 @@ !ENDIF SOURCE=.\main\http_bprintf.c - -!IF "$(CFG)" == "ApacheCore - Win32 Release" - -DEP_CPP_HTTP_=\ - ".\main\alloc.h"\ - ".\main\buff.h"\ - ".\main\conf.h"\ - ".\main\httpd.h"\ - ".\os\win32\os.h"\ - ".\os\win32\readdir.h"\ - ".\regex\regex.h"\ - - -"$(INTDIR)\http_bprintf.obj" : $(SOURCE) $(DEP_CPP_HTTP_) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) - - -!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" - DEP_CPP_HTTP_=\ ".\main\alloc.h"\ ".\main\buff.h"\ @@ -767,40 +620,24 @@ ".\main\sfio.h"\ -"$(INTDIR)\http_bprintf.obj" "$(INTDIR)\http_bprintf.sbr" : $(SOURCE)\ - $(DEP_CPP_HTTP_) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) +!IF "$(CFG)" == "ApacheCore - Win32 Release" -!ENDIF +"$(INTDIR)\http_bprintf.obj" : $(SOURCE) $(DEP_CPP_HTTP_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -SOURCE=.\main\http_config.c -!IF "$(CFG)" == "ApacheCore - Win32 Release" +!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" -DEP_CPP_HTTP_C=\ - ".\main\alloc.h"\ - ".\main\buff.h"\ - ".\main\conf.h"\ - ".\main\explain.h"\ - ".\main\http_conf_globals.h"\ - ".\main\http_config.h"\ - ".\main\http_core.h"\ - ".\main\http_log.h"\ - ".\main\http_request.h"\ - ".\main\http_vhost.h"\ - ".\main\httpd.h"\ - ".\os\win32\os.h"\ - ".\os\win32\readdir.h"\ - ".\regex\regex.h"\ - -"$(INTDIR)\http_config.obj" : $(SOURCE) $(DEP_CPP_HTTP_C) "$(INTDIR)" +"$(INTDIR)\http_bprintf.obj" "$(INTDIR)\http_bprintf.sbr" : $(SOURCE)\ + $(DEP_CPP_HTTP_) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) -!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" +!ENDIF +SOURCE=.\main\http_config.c DEP_CPP_HTTP_C=\ ".\main\alloc.h"\ ".\main\buff.h"\ @@ -824,46 +661,24 @@ ".\main\sfio.h"\ -"$(INTDIR)\http_config.obj" "$(INTDIR)\http_config.sbr" : $(SOURCE)\ - $(DEP_CPP_HTTP_C) "$(INTDIR)" - $(CPP) $(CPP_PROJ) $(SOURCE) +!IF "$(CFG)" == "ApacheCore - Win32 Release" -!ENDIF +"$(INTDIR)\http_config.obj" : $(SOURCE) $(DEP_CPP_HTTP_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -SOURCE=.\main\http_core.c -!IF "$(CFG)" == "ApacheCore - Win32 Release" +!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" -DEP_CPP_HTTP_CO=\ - ".\main\alloc.h"\ - ".\main\buff.h"\ - ".\main\conf.h"\ - ".\main\fnmatch.h"\ - ".\main\http_conf_globals.h"\ - ".\main\http_config.h"\ - ".\main\http_core.h"\ - ".\main\http_log.h"\ - ".\main\http_main.h"\ - ".\main\http_protocol.h"\ - ".\main\http_request.h"\ - ".\main\http_vhost.h"\ - ".\main\httpd.h"\ - ".\main\md5.h"\ - ".\main\rfc1413.h"\ - ".\main\scoreboard.h"\ - ".\main\util_md5.h"\ - ".\os\win32\os.h"\ -
{'source': 'Apache Software Foundation Public Mail Archives'}