]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
regulatory: don't write past array when intersecting rules
authorJohannes Berg <johannes.berg@intel.com>
Thu, 6 Dec 2012 16:03:17 +0000 (17:03 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 3 Jan 2013 12:01:18 +0000 (13:01 +0100)
When intersecting rules, we count first to know how many
rules need to be allocated, and then do the intersection
into the allocated array. However, the code doing this
writes past the end of the array because it attempts to
do all intersections. Make it stop when the right number
of rules has been reached.

Acked-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/reg.c

index 6e5308998e30738377894073acd7b0e824db9687..40646e823d5d743005d2ce2f763239512cd322de 100644 (file)
@@ -647,9 +647,9 @@ static struct ieee80211_regdomain *regdom_intersect(
        if (!rd)
                return NULL;
 
-       for (x = 0; x < rd1->n_reg_rules; x++) {
+       for (x = 0; x < rd1->n_reg_rules && rule_idx < num_rules; x++) {
                rule1 = &rd1->reg_rules[x];
-               for (y = 0; y < rd2->n_reg_rules; y++) {
+               for (y = 0; y < rd2->n_reg_rules && rule_idx < num_rules; y++) {
                        rule2 = &rd2->reg_rules[y];
                        /*
                         * This time around instead of using the stack lets