include $(TOPDIR)/rules.mk
PKG_NAME:=dropbear
-PKG_VERSION:=0.47
+PKG_VERSION:=0.48
PKG_RELEASE:=1
-PKG_MD5SUM:=cf634614d52278d44dfd9c224a438bf2
+PKG_MD5SUM:=89d08829eb7d47e533c552373fb87554
PKG_SOURCE_URL:=http://matt.ucc.asn.au/dropbear/releases/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_CAT:=zcat
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+++ /dev/null
-diff -urN dropbear-0.45.old/scp.c dropbear-0.45/scp.c
---- dropbear-0.45.old/scp.c 2005-03-07 05:27:02.000000000 +0100
-+++ dropbear-0.45/scp.c 2005-03-25 11:28:22.000000000 +0100
-@@ -249,9 +249,9 @@
-
- args.list = NULL;
- addargs(&args, "ssh"); /* overwritten with ssh_program */
-- addargs(&args, "-x");
-- addargs(&args, "-oForwardAgent no");
-- addargs(&args, "-oClearAllForwardings yes");
-+// addargs(&args, "-x");
-+// addargs(&args, "-oForwardAgent no");
-+// addargs(&args, "-oClearAllForwardings yes");
-
- fflag = tflag = 0;
- while ((ch = getopt(argc, argv, "dfl:prtvBCc:i:P:q1246S:o:F:")) != -1)
--- /dev/null
+diff -ruN dropbear-0.48-old/cli-runopts.c dropbear-0.48-new/cli-runopts.c
+--- dropbear-0.48-old/cli-runopts.c 2006-03-09 16:06:03.000000000 +0100
++++ dropbear-0.48-new/cli-runopts.c 2006-03-11 12:28:54.000000000 +0100
+@@ -188,6 +188,10 @@
+ debug_trace = 1;
+ break;
+ #endif
++ case 'o':
++ next = &dummy;
++ case 'x':
++ break;
+ case 'F':
+ case 'e':
+ case 'c':
+@@ -199,7 +203,6 @@
+ #ifndef ENABLE_CLI_LOCALTCPFWD
+ case 'L':
+ #endif
+- case 'o':
+ case 'b':
+ next = &dummy;
+ default:
--- /dev/null
+diff -ruN dropbear-0.48-old/scp.c dropbear-0.48-new/scp.c
+--- dropbear-0.48-old/scp.c 2006-03-09 16:06:03.000000000 +0100
++++ dropbear-0.48-new/scp.c 2006-03-11 01:19:26.000000000 +0100
+@@ -78,6 +78,26 @@
+ #include "scpmisc.h"
+ #include "progressmeter.h"
+
++#ifndef TIMEVAL_TO_TIMESPEC
++#define TIMEVAL_TO_TIMESPEC(tv, ts) { \
++ (ts)->tv_sec = (tv)->tv_sec; \
++ (ts)->tv_nsec = (tv)->tv_usec * 1000; \
++}
++#endif
++
++#ifndef timersub
++#define timersub(tvp, uvp, vvp) \
++ do { \
++ (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
++ (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
++ if ((vvp)->tv_usec < 0) { \
++ (vvp)->tv_sec--; \
++ (vvp)->tv_usec += 1000000; \
++ } \
++ } while (/* CONSTCOND */ 0)
++#endif /* timersub */
++
++
+ void bwlimit(int);
+
+ /* Struct for addargs */
+++ /dev/null
-diff -urN dropbear-0.47.orig/common-channel.c dropbear-0.47/common-channel.c
---- dropbear-0.47.orig/common-channel.c 2005-12-09 06:42:31.000000000 +0100
-+++ dropbear-0.47/common-channel.c 2006-02-05 00:03:37.000000000 +0100
-@@ -377,7 +377,7 @@
- cbuf_incrread(cbuf, len);
- channel->recvdonelen += len;
-
-- if (fd == channel->writefd && len == maxlen && channel->recveof) {
-+ if (fd == channel->writefd && len == maxlen && channel->recveof && cbuf_getused(channel->writebuf) == 0) {
- /* Check if we're closing up */
- closewritefd(channel);
- TRACE(("leave writechannel: recveof set"))