mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
Use inline functions to convert buffer data to scalars.
* include/host2net.h (buf16_to_ulong, buf16_to_uint): New.
(buf16_to_ushort, buf16_to_u16): New.
(buf32_to_size_t, buf32_to_ulong, buf32_to_uint, buf32_to_u32): New.
--
This fixes sign extension on shift problems. Hanno Böck found a case
with an invalid read due to this problem. To fix that almost all uses
of "<< 24" and "<< 8" are changed by this patch to use an inline
function from host2net.h.
(back ported from commit 2183683bd6
)
Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
b62395cf59
commit
3627123dc8
20 changed files with 310 additions and 275 deletions
|
@ -42,6 +42,7 @@
|
|||
|
||||
#include "util.h"
|
||||
#include "sysutils.h"
|
||||
#include "../include/host2net.h"
|
||||
#include "iobuf.h"
|
||||
|
||||
/*-- Begin configurable part. --*/
|
||||
|
@ -872,7 +873,7 @@ block_filter (void *opaque, int control, iobuf_t chain, byte * buffer,
|
|||
}
|
||||
else if (c == 255)
|
||||
{
|
||||
a->size = iobuf_get (chain) << 24;
|
||||
a->size = (size_t)iobuf_get (chain) << 24;
|
||||
a->size |= iobuf_get (chain) << 16;
|
||||
a->size |= iobuf_get (chain) << 8;
|
||||
if ((c = iobuf_get (chain)) == -1)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue