tags 692129 + help patch upstream
thanks

Hi,

The bug seems to be recognized by upstream but there seems to be no work going
on towards a fix. I've prepared a preliminar patch, but I can't test it right
now, if you can reproduce it, please test the patch and let me now of the
results.

I'll try to contact upstream and ask for their input.

If you want to test this packages you can use the packages published in:
http://maxy.com.ar/debian

Or you can use the attached patch and apply it to the pptpd package.

Thanks,
-- 
"If a pickpocket meets a saint, he sees only his pockets."
-- Kegley's Law
Saludos /\/\ /\ >< `/
diff -ru pptpd-1.3.4/pptpgre.c pptpd-1.3.4.changed/pptpgre.c
--- pptpd-1.3.4/pptpgre.c	2012-11-24 18:07:08.000000000 +0100
+++ pptpd-1.3.4.changed/pptpgre.c	2012-11-24 18:02:34.498283284 +0100
@@ -443,6 +443,7 @@
 		unsigned char buffer[PACKET_MAX + sizeof(struct pptp_gre_header)];
 	} u;
 	unsigned header_len;
+	ssize_t status;
 #ifdef HAVE_WRITEV
 	struct iovec iovec[2];
 #endif
@@ -493,12 +494,18 @@
 	iovec[0].iov_len = header_len;
 	iovec[1].iov_base = pack;
 	iovec[1].iov_len = len;
-	return writev(fd, iovec, 2);
+	status = writev(fd, iovec, 2); 
 #else
 	/* copy payload into buffer */
 	memcpy(u.buffer + header_len, pack, len);
 	/* record and increment sequence numbers */
 	/* write this baby out to the net */
-	return write(fd, u.buffer, header_len + len);
+	status = write(fd, u.buffer, header_len + len);
 #endif
+	if ((status >= 0) || (errno != ENOBUFS)) {
+		return status;
+	}
+	// if ENOBUFS, do not close the connection
+	gre.seq_sent--;
+	return 0;
 }

Attachment: signature.asc
Description: Digital signature

Reply via email to