Browse code

Make ACLs work correctly for streams. Try comparing the addresses in host order rather than network order.

Originally committed as revision 1597 to svn://svn.ffmpeg.org/ffmpeg/trunk

Philip Gladstone authored on 2003/02/24 05:35:47
Showing 1 changed files
... ...
@@ -165,6 +165,7 @@ enum IPAddressAction {
165 165
 typedef struct IPAddressACL {
166 166
     struct IPAddressACL *next;
167 167
     enum IPAddressAction action;
168
+    /* These are in host order */
168 169
     struct in_addr first;
169 170
     struct in_addr last;
170 171
 } IPAddressACL;
... ...
@@ -1076,9 +1077,10 @@ static int validate_acl(FFStream *stream, HTTPContext *c)
1076 1076
     enum IPAddressAction last_action = IP_DENY;
1077 1077
     IPAddressACL *acl;
1078 1078
     struct in_addr *src = &c->from_addr.sin_addr;
1079
+    unsigned long src_addr = ntohl(src->s_addr);
1079 1080
 
1080 1081
     for (acl = stream->acl; acl; acl = acl->next) {
1081
-        if (src->s_addr >= acl->first.s_addr && src->s_addr <= acl->last.s_addr) {
1082
+        if (src_addr >= acl->first.s_addr && src_addr <= acl->last.s_addr) {
1082 1083
             return (acl->action == IP_ALLOW) ? 1 : 0;
1083 1084
         }
1084 1085
         last_action = acl->action;
... ...
@@ -4095,7 +4097,7 @@ static int parse_ffconfig(const char *filename)
4095 4095
                 errors++;
4096 4096
             } else {
4097 4097
                 /* Only take the first */
4098
-                acl.first = *(struct in_addr *) he->h_addr_list[0];
4098
+                acl.first.s_addr = ntohl(((struct in_addr *) he->h_addr_list[0])->s_addr);
4099 4099
                 acl.last = acl.first;
4100 4100
             }
4101 4101
 
... ...
@@ -4109,7 +4111,7 @@ static int parse_ffconfig(const char *filename)
4109 4109
                     errors++;
4110 4110
                 } else {
4111 4111
                     /* Only take the first */
4112
-                    acl.last = *(struct in_addr *) he->h_addr_list[0];
4112
+                    acl.last.s_addr = ntohl(((struct in_addr *) he->h_addr_list[0])->s_addr);
4113 4113
                 }
4114 4114
             }
4115 4115