Fix bad logic in iovlist_truncate().
To conform to RFC 5426, this function is intended to truncate messages if they exceed the message size limits. Unfortunately, the amount of space was computed the wrong way around, causing messages to be truncated entirely. Reported by: Michael Grimm on stable@ MFC after: 3 days
This commit is contained in:
parent
8a3255c288
commit
8803b8597a
@ -1613,8 +1613,8 @@ iovlist_truncate(struct iovlist *il, size_t size)
|
||||
struct iovec *last;
|
||||
size_t diff;
|
||||
|
||||
while (size > il->totalsize) {
|
||||
diff = size - il->totalsize;
|
||||
while (il->totalsize > size) {
|
||||
diff = il->totalsize - size;
|
||||
last = &il->iov[il->iovcnt - 1];
|
||||
if (diff >= last->iov_len) {
|
||||
/* Remove the last iovec entirely. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user