summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2013-01-27 13:48:28 +0000
committerIan Jackson <ijackson@chiark.greenend.org.uk>2013-01-27 13:48:28 +0000
commit693663c6262cbc89bc86374231b519c5d176970a (patch)
tree49f4b6f91d98a8d44f14486d673ea854c865d484
parent447f36af68bf19c081a5dc0ead512babaf5f2ade (diff)
parentd6334b2883619614ed7350bf7faf621033911198 (diff)
downloaduserv-utils-693663c6262cbc89bc86374231b519c5d176970a.tar.gz
Merge branch 'master' of login.chiark.greenend.org.uk:/home/ian/public-git/userv-utils
-rw-r--r--debian/changelog21
-rw-r--r--debian/control2
-rw-r--r--ipif/service.c6
3 files changed, 24 insertions, 5 deletions
diff --git a/debian/changelog b/debian/changelog
index 72b0964..0ca2a92 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,21 @@
-userv-utils (0.4~beta2) unstable; urgency=low
+userv-utils (0.4.2) unstable; urgency=low
+
+ ipif bugfix:
+ * Fix failure which occurs when input data starts to back up:
+ service.c:866: copydata: Assertion `r < sizeof(input_buf)' failed.
+
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sun, 15 Jan 2012 01:00:00 +0000
+
+userv-utils (0.4.1) unstable; urgency=low
+
+ ipif bugfixes:
+ * Ignore empty packets (ie consecutive END bytes), as tun rejects
+ them with EINVAL.
+ * Tolerate ENOMEM from tun.
+
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sat, 14 Jan 2012 15:46:53 +0000
+
+userv-utils (0.4) unstable; urgency=low
ipif:
* Now uses tun, not slip. All modern Linux kernels have tun support,
@@ -6,7 +23,7 @@ userv-utils (0.4~beta2) unstable; urgency=low
been implicated in kernel problems. Interfaces are now called
"userv%d" (ie, userv0, userv1, etc.). Only "slip" is now supported.
- --
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sat, 14 Jan 2012 15:24:57 +0000
userv-utils (0.4~beta1) unstable; urgency=low
diff --git a/debian/control b/debian/control
index 4f11db8..48852b4 100644
--- a/debian/control
+++ b/debian/control
@@ -1,7 +1,7 @@
Source: userv-utils
Section: admin
Priority: extra
-Maintainer: Ian Jackson <ian@chiark.greenend.org.uk>
+Maintainer: Ian Jackson <ijackson@chiark.greenend.org.uk>
Standards-Version: 2.1.1.0
Package: userv-ipif
diff --git a/ipif/service.c b/ipif/service.c
index 4c9b524..b9e40e2 100644
--- a/ipif/service.c
+++ b/ipif/service.c
@@ -719,11 +719,13 @@ static void setnonblock(int fd) {
}
static void rx_packet(const uint8_t *packet, int len) {
+ if (!len)
+ return;
for (;;) {
int r= write(tunfd, packet, len);
if (r<0) {
if (errno==EINTR) continue;
- if (errno==EAGAIN) return; /* oh well */
+ if (errno==EAGAIN || errno==ENOMEM) return; /* oh well */
sysfatal("error writing packet to tun (transmitting)");
}
assert(r==len);
@@ -861,7 +863,7 @@ static void copydata(void) {
r= read(0, input_buf + input_waiting, want);
if (r>0) {
input_waiting += r;
- assert(r < sizeof(input_buf));
+ assert(input_waiting <= sizeof(input_buf));
more_rx_data(input_buf, rx_packet_buf);
} else if (r==0) {
terminate(0);