[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r4933 - GNUnet/src/server
From: |
gnunet |
Subject: |
[GNUnet-SVN] r4933 - GNUnet/src/server |
Date: |
Tue, 5 Jun 2007 22:27:24 -0600 (MDT) |
Author: grothoff
Date: 2007-06-05 22:27:23 -0600 (Tue, 05 Jun 2007)
New Revision: 4933
Modified:
GNUnet/src/server/connection.c
Log:
even more checks
Modified: GNUnet/src/server/connection.c
===================================================================
--- GNUnet/src/server/connection.c 2007-06-06 03:59:27 UTC (rev 4932)
+++ GNUnet/src/server/connection.c 2007-06-06 04:27:23 UTC (rev 4933)
@@ -1632,17 +1632,39 @@
/* still room left? try callbacks! */
pos = scl_nextHead;
- while (pos != NULL) {
- if (pos->minimumPadding + p <= totalMessageSize) {
- p += pos->callback(&be->session.sender,
- &plaintextMsg[p],
- be->session.mtu - p);
+ while ( (pos != NULL) &&
+ (p < totalMessageSize) ) {
+ if ( (pos->minimumPadding + p >= p) &&
+ (pos->minimumPadding + p <= totalMessageSize) ) {
+ rsi = pos->callback(&be->session.sender,
+ &plaintextMsg[p],
+ totalMessageSize - p);
+ GE_BREAK(ectx,
+ rsi + p <= totalMessageSize);
+ if ( (rsi + p < p) ||
+ (rsi + p > totalMessageSize) ) {
+ GE_BREAK(ectx, 0);
+ FREE(plaintextMsg);
+ be->inSendBuffer = NO;
+ return NO;
+ }
+ p += rsi;
}
pos = pos->next;
}
+ if ( ( (be->session.mtu != 0) &&
+ (p > be->session.mtu) )
+ || (p > totalMessageSize) ) {
+ GE_BREAK(ectx, 0);
+ FREE(plaintextMsg);
+ be->inSendBuffer = NO;
+ return NO;
+ }
/* finally padd with noise */
if ( (p + sizeof(MESSAGE_HEADER) <= totalMessageSize) &&
+ (p < totalMessageSize) &&
+ (p + sizeof(MESSAGE_HEADER) > p) &&
(disable_random_padding == NO) ) {
MESSAGE_HEADER part;
unsigned short noiseLen = totalMessageSize - p;
@@ -1658,13 +1680,15 @@
if (stats != NULL)
stats->change(stat_noise_sent, noiseLen);
}
- if ( (be->session.mtu != 0) &&
- (p > be->session.mtu) ) {
+ if ( ( (be->session.mtu != 0) &&
+ (p > be->session.mtu) )
+ || (p > totalMessageSize) ) {
GE_BREAK(ectx, 0);
FREE(plaintextMsg);
be->inSendBuffer = NO;
return NO;
}
+
encryptedMsg = MALLOC(p);
hash(&p2pHdr->sequenceNumber,
p - sizeof(HashCode512),
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r4933 - GNUnet/src/server,
gnunet <=