mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +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>
[dkg: rebased to STABLE-BRANCH-1-4]
Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
This commit is contained in:
parent
7106165fd3
commit
57af33d9e7
12 changed files with 148 additions and 106 deletions
17
g10/getkey.c
17
g10/getkey.c
|
@ -34,6 +34,7 @@
|
|||
#include "trustdb.h"
|
||||
#include "i18n.h"
|
||||
#include "keyserver-internal.h"
|
||||
#include "../include/host2net.h"
|
||||
|
||||
#define MAX_PK_CACHE_ENTRIES PK_UID_CACHE_SIZE
|
||||
#define MAX_UID_CACHE_ENTRIES PK_UID_CACHE_SIZE
|
||||
|
@ -1427,14 +1428,14 @@ merge_keys_and_selfsig( KBNODE keyblock )
|
|||
|
||||
p = parse_sig_subpkt( sig->hashed, SIGSUBPKT_KEY_EXPIRE, NULL );
|
||||
if( pk ) {
|
||||
ed = p? pk->timestamp + buffer_to_u32(p):0;
|
||||
ed = p? pk->timestamp + buf32_to_u32(p):0;
|
||||
if( sig->timestamp > sigdate ) {
|
||||
pk->expiredate = ed;
|
||||
sigdate = sig->timestamp;
|
||||
}
|
||||
}
|
||||
else {
|
||||
ed = p? sk->timestamp + buffer_to_u32(p):0;
|
||||
ed = p? sk->timestamp + buf32_to_u32(p):0;
|
||||
if( sig->timestamp > sigdate ) {
|
||||
sk->expiredate = ed;
|
||||
sigdate = sig->timestamp;
|
||||
|
@ -1559,8 +1560,8 @@ fixup_uidnode ( KBNODE uidnode, KBNODE signode, u32 keycreated )
|
|||
|
||||
/* ditto for the key expiration */
|
||||
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_KEY_EXPIRE, NULL);
|
||||
if( p && buffer_to_u32(p) )
|
||||
uid->help_key_expire = keycreated + buffer_to_u32(p);
|
||||
if( p && buf32_to_u32 (p) )
|
||||
uid->help_key_expire = keycreated + buf32_to_u32(p);
|
||||
else
|
||||
uid->help_key_expire = 0;
|
||||
|
||||
|
@ -1774,9 +1775,9 @@ merge_selfsigs_main(KBNODE keyblock, int *r_revoked, struct revoke_info *rinfo)
|
|||
key_usage=parse_key_usage(sig);
|
||||
|
||||
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_KEY_EXPIRE, NULL);
|
||||
if( p && buffer_to_u32(p) )
|
||||
if( p && buf32_to_u32 (p) )
|
||||
{
|
||||
key_expire = keytimestamp + buffer_to_u32(p);
|
||||
key_expire = keytimestamp + buf32_to_u32 (p);
|
||||
key_expire_seen = 1;
|
||||
}
|
||||
|
||||
|
@ -2198,8 +2199,8 @@ merge_selfsigs_subkey( KBNODE keyblock, KBNODE subnode )
|
|||
subpk->pubkey_usage = key_usage;
|
||||
|
||||
p = parse_sig_subpkt (sig->hashed, SIGSUBPKT_KEY_EXPIRE, NULL);
|
||||
if ( p && buffer_to_u32(p) )
|
||||
key_expire = keytimestamp + buffer_to_u32(p);
|
||||
if ( p && buf32_to_u32 (p) )
|
||||
key_expire = keytimestamp + buf32_to_u32 (p);
|
||||
else
|
||||
key_expire = 0;
|
||||
subpk->has_expired = key_expire >= curtime? 0 : key_expire;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue