diff options
Diffstat (limited to 'testing/scripts')
-rwxr-xr-x | testing/scripts/build-umlrootfs | 1 | ||||
-rw-r--r-- | testing/scripts/recipes/freeradius.mk | 18 | ||||
-rw-r--r-- | testing/scripts/recipes/patches/freeradius-eap-sim-identity | 30 |
3 files changed, 45 insertions, 4 deletions
diff --git a/testing/scripts/build-umlrootfs b/testing/scripts/build-umlrootfs index 2633f1b28..d3395c872 100755 --- a/testing/scripts/build-umlrootfs +++ b/testing/scripts/build-umlrootfs @@ -80,6 +80,7 @@ mount -o bind $ROOTFSCOMPILEDIR $LOOPDIR/root/compile >> $LOGFILE 2>&1 cecho " * Installing software from source.." RECPDIR=$UMLTESTDIR/testing/scripts/recipes RECIPES=`ls $RECPDIR/*.mk | xargs -n1 basename` +cp -r $RECPDIR/patches $LOOPDIR/root/compile for r in $RECIPES do cecho-n " - $r.." diff --git a/testing/scripts/recipes/freeradius.mk b/testing/scripts/recipes/freeradius.mk index 89e25c090..7797f1ad7 100644 --- a/testing/scripts/recipes/freeradius.mk +++ b/testing/scripts/recipes/freeradius.mk @@ -14,19 +14,29 @@ CONFIG_OPTS = \ --enable-developer \ --with-experimental-modules +PATCHES = \ + freeradius-eap-sim-identity + all: install $(TAR): wget $(SRC) -$(PKG): $(TAR) +.$(PKG)-unpacked: $(TAR) tar xfj $(TAR) + @touch $@ + +.$(PKG)-patches-applied: .$(PKG)-unpacked + cd $(PKG) && cat $(addprefix ../patches/, $(PATCHES)) | patch -p1 + @touch $@ -configure: $(PKG) +.$(PKG)-configured: .$(PKG)-patches-applied cd $(PKG) && ./configure $(CONFIG_OPTS) + @touch $@ -build: configure +.$(PKG)-built: .$(PKG)-configured cd $(PKG) && make -j $(NUM_CPUS) + @touch $@ -install: build +install: .$(PKG)-built cd $(PKG) && make install diff --git a/testing/scripts/recipes/patches/freeradius-eap-sim-identity b/testing/scripts/recipes/patches/freeradius-eap-sim-identity new file mode 100644 index 000000000..1ab95ecc6 --- /dev/null +++ b/testing/scripts/recipes/patches/freeradius-eap-sim-identity @@ -0,0 +1,30 @@ +--- a/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c 2012-11-28 11:03:05.081225276 +0100 ++++ b/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c 2012-11-28 11:46:59.746289881 +0100 +@@ -246,14 +246,21 @@ + newvp->vp_integer = ess->sim_id++; + pairreplace(outvps, newvp); + ++ ess->keys.identitylen = strlen(handler->identity); ++ memcpy(ess->keys.identity, handler->identity, ess->keys.identitylen); ++ + /* make a copy of the identity */ + newvp = pairfind(*invps, ATTRIBUTE_EAP_SIM_BASE + PW_EAP_SIM_IDENTITY); +- if (newvp) { +- ess->keys.identitylen = newvp->length; +- memcpy(ess->keys.identity, newvp->vp_octets, newvp->length); +- } else { +- ess->keys.identitylen = strlen(handler->identity); +- memcpy(ess->keys.identity, handler->identity, ess->keys.identitylen); ++ if (newvp && newvp->length > 2) { ++ uint16_t len; ++ ++ memcpy(&len, newvp->vp_octets, sizeof(uint16_t)); ++ len = ntohs(len); ++ if (len <= newvp->length - 2 && len <= MAX_STRING_LEN) { ++ ess->keys.identitylen = len; ++ memcpy(ess->keys.identity, newvp->vp_octets + 2, ++ ess->keys.identitylen); ++ } + } + + /* all set, calculate keys! */ |