dgaudet 97/11/08 13:33:09
Modified: src CHANGES
src/modules/standard mod_access.c
Log:
Fix a byte ordering problem in mod_access which prevented
the old-style syntax (i.e. "a.b.c." to match a class C)
from working properly. [Dean Gaudet]
PR: 1248, 1328, 1384
Reviewed by: Jim Jagielski, Lars Eilebrecht
Revision Changes Path
1.496 +4 -0 apachen/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apachen/src/CHANGES,v
retrieving revision 1.495
retrieving revision 1.496
diff -u -r1.495 -r1.496
--- CHANGES 1997/11/08 19:19:13 1.495
+++ CHANGES 1997/11/08 21:33:07 1.496
@@ -1,5 +1,9 @@
Changes with Apache 1.3b3
+ *) Fix a byte ordering problem in mod_access which prevented
+ the old-style syntax (i.e. "a.b.c." to match a class C)
+ from working properly. [Dean Gaudet] PR#1248, 1328, 1384
+
*) Fix problem with USE_FLOCK_SERIALIZED_ACCEPT not working
properly. Each child needs to open the lockfile instead
of using the passed file-descriptor from the parent. PR#1056
1.28 +15 -3 apachen/src/modules/standard/mod_access.c
Index: mod_access.c
===================================================================
RCS file: /export/home/cvs/apachen/src/modules/standard/mod_access.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- mod_access.c 1997/10/22 20:30:11 1.27
+++ mod_access.c 1997/11/08 21:33:09 1.28
@@ -204,12 +204,14 @@
/* legacy syntax for ip addrs: a.b.c. ==> a.b.c.0/24 for example */
int shift;
char *t;
+ int octet;
a->type = T_IP;
/* parse components */
s = where;
a->x.ip.net = 0;
- shift = 0;
+ a->x.ip.mask = 0;
+ shift = 24;
while (*s) {
t = s;
if (!isdigit(*t)) {
@@ -226,11 +228,21 @@
a->type = T_FAIL;
return "invalid ip address";
}
- a->x.ip.net |= atoi(s) << shift;
+ if (shift < 0) {
+ return "invalid ip address, only 4 octets allowed";
+ }
+ octet = atoi(s);
+ if (octet < 0 || octet > 255) {
+ a->type = T_FAIL;
+ return "each octet must be between 0 and 255 inclusive";
+ }
+ a->x.ip.net |= octet << shift;
a->x.ip.mask |= 0xFFUL << shift;
- shift += 8;
s = t;
+ shift -= 8;
}
+ a->x.ip.net = ntohl(a->x.ip.net);
+ a->x.ip.mask = ntohl(a->x.ip.mask);
}
else {
a->type = T_HOST;