aboutsummaryrefslogtreecommitdiffstats
path: root/testing/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'testing/scripts')
-rwxr-xr-xtesting/scripts/build-umlrootfs1
-rw-r--r--testing/scripts/recipes/freeradius.mk18
-rw-r--r--testing/scripts/recipes/patches/freeradius-eap-sim-identity30
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! */