summaryrefslogtreecommitdiff
path: root/meta/recipes-extended/iputils
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-extended/iputils')
-rw-r--r--meta/recipes-extended/iputils/files/debian/CVE-2010-2529.diff22
-rw-r--r--meta/recipes-extended/iputils/files/debian/add-icmp-return-codes.diff41
-rw-r--r--meta/recipes-extended/iputils/files/debian/fix-arping-timeouts.diff24
-rw-r--r--meta/recipes-extended/iputils/files/debian/fix-dead-host-ping-stats.diff14
-rw-r--r--meta/recipes-extended/iputils/files/debian/targets.diff13
-rw-r--r--meta/recipes-extended/iputils/files/debian/use_gethostbyname2.diff29
-rw-r--r--meta/recipes-extended/iputils/iputils_s20100418.bb78
7 files changed, 221 insertions, 0 deletions
diff --git a/meta/recipes-extended/iputils/files/debian/CVE-2010-2529.diff b/meta/recipes-extended/iputils/files/debian/CVE-2010-2529.diff
new file mode 100644
index 000000000..98aae0d45
--- /dev/null
+++ b/meta/recipes-extended/iputils/files/debian/CVE-2010-2529.diff
@@ -0,0 +1,22 @@
+Index: trunk/ping.c
+===================================================================
+--- trunk.orig/ping.c 2010-07-23 21:26:53.000000000 -0700
++++ trunk/ping.c 2010-07-23 21:28:27.000000000 -0700
+@@ -1059,7 +1059,7 @@
+ i = j;
+ i -= IPOPT_MINOFF;
+ if (i <= 0)
+- continue;
++ break;
+ if (i == old_rrlen
+ && !strncmp((char *)cp, old_rr, i)
+ && !(options & F_FLOOD)) {
+@@ -1096,7 +1096,7 @@
+ i = j;
+ i -= 5;
+ if (i <= 0)
+- continue;
++ break;
+ flags = *++cp;
+ printf("\nTS: ");
+ cp++;
diff --git a/meta/recipes-extended/iputils/files/debian/add-icmp-return-codes.diff b/meta/recipes-extended/iputils/files/debian/add-icmp-return-codes.diff
new file mode 100644
index 000000000..86bbf0d39
--- /dev/null
+++ b/meta/recipes-extended/iputils/files/debian/add-icmp-return-codes.diff
@@ -0,0 +1,41 @@
+Index: trunk/ping.c
+===================================================================
+--- trunk.orig/ping.c 2010-05-07 23:13:54.000000000 -0700
++++ trunk/ping.c 2010-05-07 23:23:22.000000000 -0700
+@@ -883,9 +883,36 @@
+ case ICMP_SR_FAILED:
+ printf("Source Route Failed\n");
+ break;
++ case ICMP_NET_UNKNOWN:
++ printf("Destination Net Unknown\n");
++ break;
++ case ICMP_HOST_UNKNOWN:
++ printf("Destination Host Unknown\n");
++ break;
++ case ICMP_HOST_ISOLATED:
++ printf("Source Host Isolated\n");
++ break;
++ case ICMP_NET_ANO:
++ printf("Destination Net Prohibited\n");
++ break;
++ case ICMP_HOST_ANO:
++ printf("Destination Host Prohibited\n");
++ break;
++ case ICMP_NET_UNR_TOS:
++ printf("Destination Net Unreachable for Type of Service\n");
++ break;
++ case ICMP_HOST_UNR_TOS:
++ printf("Destination Host Unreachable for Type of Service\n");
++ break;
+ case ICMP_PKT_FILTERED:
+ printf("Packet filtered\n");
+ break;
++ case ICMP_PREC_VIOLATION:
++ printf("Precedence Violation\n");
++ break;
++ case ICMP_PREC_CUTOFF:
++ printf("Precedence Cutoff\n");
++ break;
+ default:
+ printf("Dest Unreachable, Bad Code: %d\n", code);
+ break;
diff --git a/meta/recipes-extended/iputils/files/debian/fix-arping-timeouts.diff b/meta/recipes-extended/iputils/files/debian/fix-arping-timeouts.diff
new file mode 100644
index 000000000..9f05769f7
--- /dev/null
+++ b/meta/recipes-extended/iputils/files/debian/fix-arping-timeouts.diff
@@ -0,0 +1,24 @@
+Index: trunk/arping.c
+===================================================================
+--- trunk.orig/arping.c 2010-05-07 23:13:52.000000000 -0700
++++ trunk/arping.c 2010-05-07 23:41:16.000000000 -0700
+@@ -182,12 +182,17 @@
+ if (start.tv_sec==0)
+ start = tv;
+
+- if (count-- == 0 || (timeout && MS_TDIFF(tv,start) > timeout*1000 + 500))
++ if (timeout && MS_TDIFF(tv,start) > timeout*1000 + 500)
+ finish();
+
+- if (last.tv_sec==0 || MS_TDIFF(tv,last) > 500) {
++ if ((!timeout) && (count == 0))
++ finish();
++
++ if ( count!=0 && (last.tv_sec==0 || MS_TDIFF(tv,last) > 500 ) ) {
+ send_pack(s, src, dst,
+ (struct sockaddr_ll *)&me, (struct sockaddr_ll *)&he);
++ if (count >= 0)
++ count--;
+ if (count == 0 && unsolicited)
+ finish();
+ }
diff --git a/meta/recipes-extended/iputils/files/debian/fix-dead-host-ping-stats.diff b/meta/recipes-extended/iputils/files/debian/fix-dead-host-ping-stats.diff
new file mode 100644
index 000000000..2a924258d
--- /dev/null
+++ b/meta/recipes-extended/iputils/files/debian/fix-dead-host-ping-stats.diff
@@ -0,0 +1,14 @@
+Index: trunk/ping_common.c
+===================================================================
+--- trunk.orig/ping_common.c 2010-05-07 23:13:51.000000000 -0700
++++ trunk/ping_common.c 2010-05-07 23:22:33.000000000 -0700
+@@ -872,7 +872,8 @@
+ printf("%spipe %d", comma, pipesize);
+ comma = ", ";
+ }
+- if (ntransmitted > 1 && (!interval || (options&(F_FLOOD|F_ADAPTIVE)))) {
++ if (ntransmitted > 1 && nreceived &&
++ (!interval || (options&(F_FLOOD|F_ADAPTIVE)))) {
+ int ipg = (1000000*(long long)tv.tv_sec+tv.tv_usec)/(ntransmitted-1);
+ printf("%sipg/ewma %d.%03d/%d.%03d ms",
+ comma, ipg/1000, ipg%1000, rtt/8000, (rtt/8)%1000);
diff --git a/meta/recipes-extended/iputils/files/debian/targets.diff b/meta/recipes-extended/iputils/files/debian/targets.diff
new file mode 100644
index 000000000..b5e907a8d
--- /dev/null
+++ b/meta/recipes-extended/iputils/files/debian/targets.diff
@@ -0,0 +1,13 @@
+Index: trunk/Makefile
+===================================================================
+--- trunk.orig/Makefile 2010-05-07 23:43:00.000000000 -0700
++++ trunk/Makefile 2010-05-07 23:47:10.000000000 -0700
+@@ -16,7 +16,7 @@
+ CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g
+ CFLAGS=$(CCOPT) $(GLIBCFIX) $(DEFINES)
+
+-IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd
++IPV4_TARGETS=tracepath ping arping clockdiff
+ IPV6_TARGETS=tracepath6 traceroute6 ping6
+ TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS)
+
diff --git a/meta/recipes-extended/iputils/files/debian/use_gethostbyname2.diff b/meta/recipes-extended/iputils/files/debian/use_gethostbyname2.diff
new file mode 100644
index 000000000..7e6c97c14
--- /dev/null
+++ b/meta/recipes-extended/iputils/files/debian/use_gethostbyname2.diff
@@ -0,0 +1,29 @@
+Index: trunk/tracepath.c
+===================================================================
+--- trunk.orig/tracepath.c 2010-05-07 23:13:52.000000000 -0700
++++ trunk/tracepath.c 2010-05-07 23:24:09.000000000 -0700
+@@ -338,9 +338,9 @@
+ base_port = atoi(p+1);
+ } else
+ base_port = 44444;
+- he = gethostbyname(argv[0]);
++ he = gethostbyname2(argv[0], AF_INET);
+ if (he == NULL) {
+- herror("gethostbyname");
++ herror("gethostbyname2");
+ exit(1);
+ }
+ memcpy(&target.sin_addr, he->h_addr, 4);
+Index: trunk/ping.c
+===================================================================
+--- trunk.orig/ping.c 2010-05-07 23:23:22.000000000 -0700
++++ trunk/ping.c 2010-05-07 23:24:09.000000000 -0700
+@@ -250,7 +250,7 @@
+ if (argc == 1)
+ options |= F_NUMERIC;
+ } else {
+- hp = gethostbyname(target);
++ hp = gethostbyname2(target, AF_INET);
+ if (!hp) {
+ fprintf(stderr, "ping: unknown host %s\n", target);
+ exit(2);
diff --git a/meta/recipes-extended/iputils/iputils_s20100418.bb b/meta/recipes-extended/iputils/iputils_s20100418.bb
new file mode 100644
index 000000000..3f793eca5
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils_s20100418.bb
@@ -0,0 +1,78 @@
+DESCRIPTION = "Utilities for the IP protocol, including traceroute6, \
+tracepath, tracepath6, ping, ping6 and arping."
+HOMEPAGE = "http://www.skbuff.net/iputils"
+SECTION = "console/network"
+
+LICENSE = "BSD & GPLv2+"
+
+DEPENDS = "sysfsutils openssl"
+
+PR = "r0"
+
+SRC_URI = "http://www.skbuff.net/iputils/${PN}-${PV}.tar.bz2 \
+ file://debian/fix-dead-host-ping-stats.diff \
+ file://debian/add-icmp-return-codes.diff \
+ file://debian/use_gethostbyname2.diff \
+ file://debian/targets.diff \
+ file://debian/fix-arping-timeouts.diff \
+ file://debian/CVE-2010-2529.diff \
+ "
+
+# man is not compiled here, since it requires docbook-utils-native
+# which is not available in poky
+
+do_compile () {
+ oe_runmake 'CC=${CC} -D_GNU_SOURCE' VPATH="${STAGING_LIBDIR}" all
+}
+
+do_install () {
+ install -m 0755 -d ${D}${base_bindir} ${D}${mandir}/man8
+ # SUID root programs
+ install -m 4555 ping ${D}${base_bindir}/ping.${PN}
+ install -m 4555 ping6 ${D}${base_bindir}/ping6.${PN}
+ install -m 4555 traceroute6 ${D}${base_bindir}/
+ # Other programgs
+ for i in arping tracepath tracepath6; do
+ install -m 0755 $i ${D}${base_bindir}/
+ done
+ # Manual pages for things we build packages for
+# for i in tracepath.8 traceroute6.8 ping.8 arping.8; do
+# install -m 0644 doc/$i ${D}${mandir}/man8/ || true
+# done
+}
+
+# Busybox also provides ping and ping6, so use update-alternatives
+# Also fixup SUID bit for applications that need it
+pkg_postinst_${PN}-ping () {
+ chmod 4555 ${base_bindir}/ping.${PN}
+ update-alternatives --install ${base_bindir}/ping ping ping.${PN} 100
+}
+pkg_prerm_${PN}-ping () {
+ update-alternatives --remove ping ping.${PN}
+}
+
+pkg_postinst_${PN}-ping6 () {
+ chmod 4555 ${base_bindir}/ping6.${PN}
+ update-alternatives --install ${base_bindir}/ping6 ping6 ping6.${PN} 100
+}
+pkg_prerm_${PN}-ping6 () {
+ update-alternatives --remove ping6 ping6.${PN}
+}
+
+pkg_postinst_${PN}-traceroute6 () {
+ chmod 4555 ${base_bindir}/traceroute6
+}
+
+PACKAGES += "${PN}-ping ${PN}-ping6 ${PN}-arping ${PN}-tracepath ${PN}-tracepath6 ${PN}-traceroute6"
+
+ALLOW_EMPTY_${PN} = "1"
+RDEPENDS_${PN} += "${PN}-ping ${PN}-ping6 ${PN}-arping ${PN}-tracepath ${PN}-tracepath6 ${PN}-traceroute6"
+
+FILES_${PN} = ""
+FILES_${PN}-ping = "${base_bindir}/ping.${PN}"
+FILES_${PN}-ping6 = "${base_bindir}/ping6.${PN}"
+FILES_${PN}-arping = "${base_bindir}/arping"
+FILES_${PN}-tracepath = "${base_bindir}/tracepath"
+FILES_${PN}-tracepath6 = "${base_bindir}/tracepath6"
+FILES_${PN}-traceroute6 = "${base_bindir}/traceroute6"
+FILES_${PN}-doc = "${mandir}/man8"