diff options
author | Damien Miller <djm@mindrot.org> | 1999-11-13 13:22:46 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 1999-11-13 13:22:46 +1100 |
commit | a2d6efe013e175f408733970803d535908554297 (patch) | |
tree | 548da62665e66ab5fa62d14299593b36d585a3c8 | |
parent | 38c608862b5143a4cda472d11d70c1f8c44601f3 (diff) |
- Merged OpenBSD CVS changes:
- [bufaux.c] save a view malloc/memcpy/memset/free's, ok niels
- [scp.c] fix overflow reported by damien@ibs.com.au: off_t
totalsize, ok niels,aaron
-rw-r--r-- | bufaux.c | 9 | ||||
-rw-r--r-- | scp.c | 12 |
2 files changed, 11 insertions, 10 deletions
@@ -15,7 +15,7 @@ Buffers. | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include "includes.h" | 17 | #include "includes.h" |
18 | RCSID("$Id: bufaux.c,v 1.4 1999/11/12 23:51:58 damien Exp $"); | 18 | RCSID("$Id: bufaux.c,v 1.5 1999/11/13 02:22:46 damien Exp $"); |
19 | 19 | ||
20 | #include "ssh.h" | 20 | #include "ssh.h" |
21 | 21 | ||
@@ -71,10 +71,11 @@ buffer_get_bignum(Buffer *buffer, BIGNUM *value) | |||
71 | bits = GET_16BIT(buf); | 71 | bits = GET_16BIT(buf); |
72 | /* Compute the number of binary bytes that follow. */ | 72 | /* Compute the number of binary bytes that follow. */ |
73 | bytes = (bits + 7) / 8; | 73 | bytes = (bits + 7) / 8; |
74 | bin = xmalloc(bytes); | 74 | if (buffer_len(buffer) < bytes) |
75 | buffer_get(buffer, bin, bytes); | 75 | fatal("buffer_get_bignum: input buffer too small"); |
76 | bin = buffer_ptr(buffer); | ||
76 | BN_bin2bn(bin, bytes, value); | 77 | BN_bin2bn(bin, bytes, value); |
77 | xfree(bin); | 78 | buffer_consume(buffer, bytes); |
78 | 79 | ||
79 | return 2 + bytes; | 80 | return 2 + bytes; |
80 | } | 81 | } |
@@ -42,11 +42,11 @@ and ssh has the necessary privileges.) | |||
42 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 42 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
43 | * SUCH DAMAGE. | 43 | * SUCH DAMAGE. |
44 | * | 44 | * |
45 | * $Id: scp.c,v 1.5 1999/11/12 05:28:02 damien Exp $ | 45 | * $Id: scp.c,v 1.6 1999/11/13 02:22:46 damien Exp $ |
46 | */ | 46 | */ |
47 | 47 | ||
48 | #include "includes.h" | 48 | #include "includes.h" |
49 | RCSID("$Id: scp.c,v 1.5 1999/11/12 05:28:02 damien Exp $"); | 49 | RCSID("$Id: scp.c,v 1.6 1999/11/13 02:22:46 damien Exp $"); |
50 | 50 | ||
51 | #include "ssh.h" | 51 | #include "ssh.h" |
52 | #include "xmalloc.h" | 52 | #include "xmalloc.h" |
@@ -70,7 +70,7 @@ static struct timeval start; | |||
70 | volatile unsigned long statbytes; | 70 | volatile unsigned long statbytes; |
71 | 71 | ||
72 | /* Total size of current file. */ | 72 | /* Total size of current file. */ |
73 | unsigned long totalbytes = 0; | 73 | off_t totalbytes = 0; |
74 | 74 | ||
75 | /* Name of current file being transferred. */ | 75 | /* Name of current file being transferred. */ |
76 | char *curfile; | 76 | char *curfile; |
@@ -976,7 +976,7 @@ run_err(const char *fmt, ...) | |||
976 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 976 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
977 | * SUCH DAMAGE. | 977 | * SUCH DAMAGE. |
978 | * | 978 | * |
979 | * $Id: scp.c,v 1.5 1999/11/12 05:28:02 damien Exp $ | 979 | * $Id: scp.c,v 1.6 1999/11/13 02:22:46 damien Exp $ |
980 | */ | 980 | */ |
981 | 981 | ||
982 | char * | 982 | char * |
@@ -1131,8 +1131,8 @@ progressmeter(int flag) | |||
1131 | } | 1131 | } |
1132 | (void)gettimeofday(&now, (struct timezone *)0); | 1132 | (void)gettimeofday(&now, (struct timezone *)0); |
1133 | cursize = statbytes; | 1133 | cursize = statbytes; |
1134 | if ((totalbytes >> 10) != 0) { | 1134 | if (totalbytes != 0) { |
1135 | ratio = (cursize >> 10) * 100 / (totalbytes >> 10); | 1135 | ratio = cursize * 100 / totalbytes; |
1136 | ratio = MAX(ratio, 0); | 1136 | ratio = MAX(ratio, 0); |
1137 | ratio = MIN(ratio, 100); | 1137 | ratio = MIN(ratio, 100); |
1138 | } | 1138 | } |