summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packet.c (renamed from common-packet.c)4
-rw-r--r--process-packet.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/common-packet.c b/packet.c
index 39387bf..886fe67 100644
--- a/common-packet.c
+++ b/packet.c
@@ -444,6 +444,10 @@ void encrypt_packet() {
}
/* finished with payload */
+ buf_burn(ses.writepayload); /* XXX This is probably a good idea, and isn't
+ _that_ likely to hurt performance too badly.
+ Buffers can have cleartext passwords etc, or
+ other sensitive data */
buf_setpos(ses.writepayload, 0);
buf_setlen(ses.writepayload, 0);
diff --git a/process-packet.c b/process-packet.c
index afa45ef..f9f6dee 100644
--- a/process-packet.c
+++ b/process-packet.c
@@ -116,7 +116,7 @@ void process_packet() {
* less-than-or-equal-to 60 ( == MAX_UNAUTH_PACKET_TYPE ).
* NOTE: if the protocol changes and new types are added, revisit this
* assumption */
- if ( !ses.authdone && type > MAX_UNAUTH_PACKET_TYPE ) {
+ if ( !ses.authstate.authdone && type > MAX_UNAUTH_PACKET_TYPE ) {
dropbear_exit("received message %d before userauth", type);
}
@@ -138,6 +138,7 @@ void process_packet() {
recv_unimplemented();
out:
+ buf_burn(ses.payload); /* Clear the memory to avoid swapping it out */
buf_free(ses.payload);
ses.payload = NULL;