fanf 99/12/19 21:24:28
Modified: src/modules/standard mod_vhost_alias.c
Log:
Fix for the security problem spotted by Lars Eilebrecht <[EMAIL PROTECTED]>
Revision Changes Path
1.3 +9 -4 apache-1.3/src/modules/standard/mod_vhost_alias.c
Index: mod_vhost_alias.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_vhost_alias.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mod_vhost_alias.c 1999/06/22 15:33:17 1.2
+++ mod_vhost_alias.c 1999/12/20 05:24:22 1.3
@@ -278,8 +278,8 @@
}
}
-static void vhost_alias_interpolate(request_rec *r, const char *name,
- const char *map, const char *uri)
+static int vhost_alias_interpolate(request_rec *r, const char *name,
+ const char *map, const char *uri)
{
/* 0..9 9..0 */
enum { MAXDOTS = 19 };
@@ -391,6 +391,8 @@
}
vhost_alias_checkspace(r, buf, &dest, end - start);
for (p = start; p < end; ++p) {
+ if (!isalnum(*p) && *p != '-' && *p != '.')
+ return HTTP_BAD_REQUEST;
*dest++ = ap_tolower(*p);
}
}
@@ -405,6 +407,7 @@
else {
r->filename = ap_pstrcat(r->pool, buf, uri, NULL);
}
+ return OK;
}
static int mva_translate(request_rec *r)
@@ -412,7 +415,7 @@
mva_sconf_t *conf;
const char *name, *map, *uri;
mva_mode_e mode;
- int cgi;
+ int cgi, bad;
conf = (mva_sconf_t *) ap_get_module_config(r->server->module_config,
&vhost_alias_module);
@@ -446,7 +449,9 @@
return DECLINED;
}
- vhost_alias_interpolate(r, name, map, uri);
+ bad = vhost_alias_interpolate(r, name, map, uri);
+ if (bad != OK)
+ return bad;
if (cgi) {
/* see is_scriptaliased() in mod_cgi */