aboutsummaryrefslogtreecommitdiffstats
path: root/kbx
diff options
context:
space:
mode:
Diffstat (limited to 'kbx')
-rw-r--r--kbx/keybox-dump.c63
-rw-r--r--kbx/keybox-openpgp.c7
-rw-r--r--kbx/keybox-search.c85
-rw-r--r--kbx/keybox-update.c97
4 files changed, 118 insertions, 134 deletions
diff --git a/kbx/keybox-dump.c b/kbx/keybox-dump.c
index b671089a0..da716f363 100644
--- a/kbx/keybox-dump.c
+++ b/kbx/keybox-dump.c
@@ -25,6 +25,7 @@
#include "keybox-defs.h"
#include <gcrypt.h>
+#include "../include/host2net.h"
/* Argg, we can't include ../common/util.h */
char *bin2hexcolon (const void *buffer, size_t length, char *stringbuf);
@@ -33,21 +34,13 @@ char *bin2hexcolon (const void *buffer, size_t length, char *stringbuf);
static ulong
get32 (const byte *buffer)
{
- ulong a;
- a = *buffer << 24;
- a |= buffer[1] << 16;
- a |= buffer[2] << 8;
- a |= buffer[3];
- return a;
+ return buf32_to_ulong (buffer);
}
static ulong
get16 (const byte *buffer)
{
- ulong a;
- a = *buffer << 8;
- a |= buffer[1];
- return a;
+ return buf16_to_ulong (buffer);
}
void
@@ -93,9 +86,9 @@ dump_header_blob (const byte *buffer, size_t length, FILE *fp)
if ( memcmp (buffer+8, "KBXf", 4))
fprintf (fp, "[Error: invalid magic number]\n");
- n = get32 (buffer+16);
+ n = get32 (buffer+16);
fprintf( fp, "created-at: %lu\n", n );
- n = get32 (buffer+20);
+ n = get32 (buffer+20);
fprintf( fp, "last-maint: %lu\n", n );
return 0;
@@ -117,7 +110,7 @@ _keybox_dump_blob (KEYBOXBLOB blob, FILE *fp)
const byte *p;
buffer = _keybox_get_blob_image (blob, &length);
-
+
if (length < 32)
{
fprintf (fp, "[blob too short]\n");
@@ -125,7 +118,7 @@ _keybox_dump_blob (KEYBOXBLOB blob, FILE *fp)
}
n = get32( buffer );
- if (n > length)
+ if (n > length)
fprintf (fp, "[blob larger than length - output truncated]\n");
else
length = n; /* ignore the rest */
@@ -159,7 +152,7 @@ _keybox_dump_blob (KEYBOXBLOB blob, FILE *fp)
fprintf (fp, "[blob too short]\n");
return -1;
}
-
+
n = get16 (buffer + 6);
fprintf( fp, "Blob-Flags: %04lX", n);
if (n)
@@ -188,7 +181,7 @@ _keybox_dump_blob (KEYBOXBLOB blob, FILE *fp)
fprintf( fp, "Data-Offset: %lu\n", rawdata_off );
fprintf( fp, "Data-Length: %lu\n", rawdata_len );
- if (rawdata_off > length || rawdata_len > length
+ if (rawdata_off > length || rawdata_len > length
|| rawdata_off+rawdata_off > length)
fprintf (fp, "[Error: raw data larger than blob]\n");
@@ -207,7 +200,7 @@ _keybox_dump_blob (KEYBOXBLOB blob, FILE *fp)
{
int i;
ulong kidoff, kflags;
-
+
fprintf (fp, "Key-Fpr[%lu]: ", n );
for (i=0; i < 20; i++ )
fprintf (fp, "%02X", p[i]);
@@ -220,7 +213,7 @@ _keybox_dump_blob (KEYBOXBLOB blob, FILE *fp)
kflags = get16 (p + 24 );
fprintf( fp, "\nKey-Flags[%lu]: %04lX\n", n, kflags);
}
-
+
/* serial number */
fputs ("Serial-No: ", fp);
nserial = get16 (p);
@@ -244,7 +237,7 @@ _keybox_dump_blob (KEYBOXBLOB blob, FILE *fp)
for (n=0; n < nuids; n++, p += uidinfolen)
{
ulong uidoff, uidlen, uflags;
-
+
uidoff = get32( p );
uidlen = get32( p+4 );
if (type == BLOBTYPE_X509 && !n)
@@ -284,7 +277,7 @@ _keybox_dump_blob (KEYBOXBLOB blob, FILE *fp)
fprintf (fp, "Uid-Validity[%lu]: %d\n", n, p[10] );
}
}
-
+
nsigs = get16 (p);
fprintf (fp, "Sig-Count: %lu\n", nsigs );
siginfolen = get16 (p + 2);
@@ -294,7 +287,7 @@ _keybox_dump_blob (KEYBOXBLOB blob, FILE *fp)
for (n=0; n < nsigs; n++, p += siginfolen)
{
ulong sflags;
-
+
sflags = get32 (p);
fprintf (fp, "Sig-Expire[%lu]: ", n );
if (!sflags)
@@ -341,11 +334,11 @@ hash_blob_rawdata (KEYBOXBLOB blob, unsigned char *digest)
ulong rawdata_off, rawdata_len;
buffer = _keybox_get_blob_image (blob, &length);
-
+
if (length < 32)
return -1;
n = get32 (buffer);
- if (n < length)
+ if (n < length)
length = n; /* Blob larger than length in header - ignore the rest. */
type = buffer[4];
@@ -364,11 +357,11 @@ hash_blob_rawdata (KEYBOXBLOB blob, unsigned char *digest)
if (length < 40)
return -1;
-
+
rawdata_off = get32 (buffer + 8);
rawdata_len = get32 (buffer + 12);
- if (rawdata_off > length || rawdata_len > length
+ if (rawdata_off > length || rawdata_len > length
|| rawdata_off+rawdata_off > length)
return -1; /* Out of bounds. */
@@ -408,7 +401,7 @@ update_stats (KEYBOXBLOB blob, struct file_stats_s *s)
}
n = get32( buffer );
- if (n > length)
+ if (n > length)
s->too_large_blobs++;
else
length = n; /* ignore the rest */
@@ -439,7 +432,7 @@ update_stats (KEYBOXBLOB blob, struct file_stats_s *s)
s->too_short_blobs++;
return -1;
}
-
+
n = get16 (buffer + 6);
if (n)
{
@@ -512,13 +505,13 @@ _keybox_dump_file (const char *filename, int stats_only, FILE *outfp)
rc = 0;
if (rc)
fprintf (outfp, "error reading `%s': %s\n", filename, gpg_strerror (rc));
-
+
if (fp != stdin)
fclose (fp);
if (stats_only)
{
- fprintf (outfp,
+ fprintf (outfp,
"Total number of blobs: %8lu\n"
" header: %8lu\n"
" empty: %8lu\n"
@@ -551,9 +544,9 @@ _keybox_dump_file (const char *filename, int stats_only, FILE *outfp)
-struct dupitem_s
+struct dupitem_s
{
- unsigned long recno;
+ unsigned long recno;
unsigned char digest[20];
};
@@ -563,7 +556,7 @@ cmp_dupitems (const void *arg_a, const void *arg_b)
{
struct dupitem_s *a = (struct dupitem_s *)arg_a;
struct dupitem_s *b = (struct dupitem_s *)arg_b;
-
+
return memcmp (a->digest, b->digest, 20);
}
@@ -581,7 +574,7 @@ _keybox_dump_find_dups (const char *filename, int print_them, FILE *outfp)
char fprbuf[3*20+1];
(void)print_them;
-
+
memset (zerodigest, 0, sizeof zerodigest);
if (!(fp = open_file (&filename, outfp)))
@@ -601,7 +594,7 @@ _keybox_dump_find_dups (const char *filename, int print_them, FILE *outfp)
while ( !(rc = _keybox_read_blob (&blob, fp)) )
{
unsigned char digest[20];
-
+
if (hash_blob_rawdata (blob, digest))
fprintf (outfp, "error in blob %ld of `%s'\n", recno, filename);
else if (memcmp (digest, zerodigest, 20))
@@ -668,7 +661,7 @@ _keybox_dump_cut_records (const char *filename, unsigned long from,
KEYBOXBLOB blob;
int rc;
unsigned long recno = 0;
-
+
if (!(fp = open_file (&filename, stderr)))
return gpg_error_from_syserror ();
diff --git a/kbx/keybox-openpgp.c b/kbx/keybox-openpgp.c
index e5f9f3352..ebeef517a 100644
--- a/kbx/keybox-openpgp.c
+++ b/kbx/keybox-openpgp.c
@@ -34,6 +34,7 @@
#include "keybox-defs.h"
#include <gcrypt.h>
+#include "../include/host2net.h"
enum packet_types
@@ -119,10 +120,8 @@ next_packet (unsigned char const **bufptr, size_t *buflen,
{
if (len <4 )
return gpg_error (GPG_ERR_INV_PACKET); /* No length bytes. */
- pktlen = (*buf++) << 24;
- pktlen |= (*buf++) << 16;
- pktlen |= (*buf++) << 8;
- pktlen |= (*buf++);
+ pktlen = buf32_to_ulong (buf);
+ buf += 4;
len -= 4;
}
else /* Partial length encoding is not allowed for key packets. */
diff --git a/kbx/keybox-search.c b/kbx/keybox-search.c
index 1680dd732..4b013ce7b 100644
--- a/kbx/keybox-search.c
+++ b/kbx/keybox-search.c
@@ -25,6 +25,7 @@
#include <errno.h>
#include "../jnlib/stringhelp.h" /* ascii_xxxx() */
+#include "../include/host2net.h"
#include "keybox-defs.h"
#include <gcrypt.h>
@@ -45,21 +46,13 @@ struct sn_array_s {
static inline ulong
get32 (const byte *buffer)
{
- ulong a;
- a = *buffer << 24;
- a |= buffer[1] << 16;
- a |= buffer[2] << 8;
- a |= buffer[3];
- return a;
+ return buf32_to_ulong (buffer);
}
static inline ulong
get16 (const byte *buffer)
{
- ulong a;
- a = *buffer << 8;
- a |= buffer[1];
- return a;
+ return buf16_to_ulong (buffer);
}
@@ -112,7 +105,7 @@ _keybox_get_flag_location (const unsigned char *buffer, size_t length,
*flag_off = 6;
*flag_size = 2;
break;
-
+
case KEYBOX_FLAG_OWNERTRUST:
case KEYBOX_FLAG_VALIDITY:
case KEYBOX_FLAG_CREATED_AT:
@@ -127,7 +120,7 @@ _keybox_get_flag_location (const unsigned char *buffer, size_t length,
if (pos+2 > length)
return GPG_ERR_INV_OBJ; /* Out of bounds. */
/* Serial number. */
- nserial = get16 (buffer+pos);
+ nserial = get16 (buffer+pos);
pos += 2 + nserial;
if (pos+4 > length)
return GPG_ERR_INV_OBJ; /* Out of bounds. */
@@ -135,7 +128,7 @@ _keybox_get_flag_location (const unsigned char *buffer, size_t length,
nuids = get16 (buffer + pos); pos += 2;
uidinfolen = get16 (buffer + pos); pos += 2;
if (uidinfolen < 12 )
- return GPG_ERR_INV_OBJ;
+ return GPG_ERR_INV_OBJ;
pos += uidinfolen*nuids;
if (pos+4 > length)
return GPG_ERR_INV_OBJ ; /* Out of bounds. */
@@ -143,7 +136,7 @@ _keybox_get_flag_location (const unsigned char *buffer, size_t length,
nsigs = get16 (buffer + pos); pos += 2;
siginfolen = get16 (buffer + pos); pos += 2;
if (siginfolen < 4 )
- return GPG_ERR_INV_OBJ;
+ return GPG_ERR_INV_OBJ;
pos += siginfolen*nsigs;
if (pos+1+1+2+4+4+4+4 > length)
return GPG_ERR_INV_OBJ ; /* Out of bounds. */
@@ -190,7 +183,7 @@ get_flag_from_image (const unsigned char *buffer, size_t length,
case 4: *value = get32 (buffer + pos); break;
default: ec = GPG_ERR_BUG; break;
}
-
+
return ec;
}
@@ -218,7 +211,7 @@ blob_cmp_sn (KEYBOXBLOB blob, const unsigned char *sn, int snlen)
return 0; /* out of bounds */
/*serial*/
- nserial = get16 (buffer+pos);
+ nserial = get16 (buffer+pos);
off = pos + 2;
if (off+nserial > length)
return 0; /* out of bounds */
@@ -316,7 +309,7 @@ blob_cmp_name (KEYBOXBLOB blob, int idx,
return 0; /* out of bounds */
/*serial*/
- nserial = get16 (buffer+pos);
+ nserial = get16 (buffer+pos);
pos += 2 + nserial;
if (pos+4 > length)
return 0; /* out of bounds */
@@ -332,7 +325,7 @@ blob_cmp_name (KEYBOXBLOB blob, int idx,
if (idx < 0)
{ /* compare all names starting with that (negated) index */
idx = -idx;
-
+
for ( ;idx < nuids; idx++)
{
size_t mypos = pos;
@@ -409,7 +402,7 @@ blob_cmp_mail (KEYBOXBLOB blob, const char *name, size_t namelen, int substr)
return 0; /* out of bounds */
/*serial*/
- nserial = get16 (buffer+pos);
+ nserial = get16 (buffer+pos);
pos += 2 + nserial;
if (pos+4 > length)
return 0; /* out of bounds */
@@ -428,7 +421,7 @@ blob_cmp_mail (KEYBOXBLOB blob, const char *name, size_t namelen, int substr)
for (idx=1 ;idx < nuids; idx++)
{
size_t mypos = pos;
-
+
mypos += idx*uidinfolen;
off = get32 (buffer+mypos);
len = get32 (buffer+mypos+4);
@@ -439,7 +432,7 @@ blob_cmp_mail (KEYBOXBLOB blob, const char *name, size_t namelen, int substr)
len--; /* one back */
if ( len < 3 || buffer[off+len] != '>')
continue; /* not a proper email address */
- len--;
+ len--;
if (substr)
{
if (ascii_memcasemem (buffer+off+1, len, name, namelen))
@@ -474,7 +467,7 @@ blob_x509_has_grip (KEYBOXBLOB blob, const unsigned char *grip)
unsigned char array[20];
unsigned char *rcp;
size_t n;
-
+
buffer = _keybox_get_blob_image (blob, &length);
if (length < 40)
return 0; /* Too short. */
@@ -527,7 +520,7 @@ blob_x509_has_grip (KEYBOXBLOB blob, const unsigned char *grip)
/*
- The has_foo functions are used as helpers for search
+ The has_foo functions are used as helpers for search
*/
static inline int
has_short_kid (KEYBOXBLOB blob, const unsigned char *kid)
@@ -585,7 +578,7 @@ has_issuer_sn (KEYBOXBLOB blob, const char *name,
return 0;
namelen = strlen (name);
-
+
return (blob_cmp_sn (blob, sn, snlen)
&& blob_cmp_name (blob, 0 /* issuer */, name, namelen, 0));
}
@@ -664,7 +657,7 @@ release_sn_array (struct sn_array_s *array, size_t size)
*/
-int
+int
keybox_search_reset (KEYBOX_HANDLE hd)
{
if (!hd)
@@ -683,13 +676,13 @@ keybox_search_reset (KEYBOX_HANDLE hd)
}
hd->error = 0;
hd->eof = 0;
- return 0;
+ return 0;
}
/* Note: When in ephemeral mode the search function does visit all
blobs but in standard mode, blobs flagged as ephemeral are ignored. */
-int
+int
keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
{
int rc;
@@ -708,18 +701,18 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
hd->found.blob = NULL;
}
- if (hd->error)
+ if (hd->error)
return hd->error; /* still in error state */
- if (hd->eof)
+ if (hd->eof)
return -1; /* still EOF */
/* figure out what information we need */
need_words = any_skip = 0;
- for (n=0; n < ndesc; n++)
+ for (n=0; n < ndesc; n++)
{
- switch (desc[n].mode)
+ switch (desc[n].mode)
{
- case KEYDB_SEARCH_MODE_WORDS:
+ case KEYDB_SEARCH_MODE_WORDS:
need_words = 1;
break;
case KEYDB_SEARCH_MODE_FIRST:
@@ -729,7 +722,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
default:
break;
}
- if (desc[n].skipfnc)
+ if (desc[n].skipfnc)
any_skip = 1;
if (desc[n].snlen == -1 && !sn_array)
{
@@ -762,7 +755,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
int i, odd;
size_t snlen;
- for (n=0; n < ndesc; n++)
+ for (n=0; n < ndesc; n++)
{
if (!desc[n].sn)
;
@@ -830,14 +823,14 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
if (!hd->ephemeral && (blobflags & 2))
continue; /* Not in ephemeral mode but blob is flagged ephemeral. */
- for (n=0; n < ndesc; n++)
+ for (n=0; n < ndesc; n++)
{
switch (desc[n].mode)
{
- case KEYDB_SEARCH_MODE_NONE:
+ case KEYDB_SEARCH_MODE_NONE:
never_reached ();
break;
- case KEYDB_SEARCH_MODE_EXACT:
+ case KEYDB_SEARCH_MODE_EXACT:
if (has_subject_or_alt (blob, desc[n].u.name, 0))
goto found;
break;
@@ -854,7 +847,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
goto found;
break;
case KEYDB_SEARCH_MODE_MAILEND:
- case KEYDB_SEARCH_MODE_WORDS:
+ case KEYDB_SEARCH_MODE_WORDS:
never_reached (); /* not yet implemented */
break;
case KEYDB_SEARCH_MODE_ISSUER:
@@ -876,7 +869,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
if (has_subject (blob, desc[n].u.name))
goto found;
break;
- case KEYDB_SEARCH_MODE_SHORT_KID:
+ case KEYDB_SEARCH_MODE_SHORT_KID:
if (has_short_kid (blob, desc[n].u.kid))
goto found;
break;
@@ -893,20 +886,20 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
if (has_keygrip (blob, desc[n].u.grip))
goto found;
break;
- case KEYDB_SEARCH_MODE_FIRST:
+ case KEYDB_SEARCH_MODE_FIRST:
goto found;
break;
- case KEYDB_SEARCH_MODE_NEXT:
+ case KEYDB_SEARCH_MODE_NEXT:
goto found;
break;
- default:
+ default:
rc = gpg_error (GPG_ERR_INV_VALUE);
goto found;
}
}
continue;
- found:
- for (n=any_skip?0:ndesc; n < ndesc; n++)
+ found:
+ for (n=any_skip?0:ndesc; n < ndesc; n++)
{
/* if (desc[n].skipfnc */
/* && desc[n].skipfnc (desc[n].skipfncvalue, aki)) */
@@ -915,7 +908,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
if (n == ndesc)
break; /* got it */
}
-
+
if (!rc)
{
hd->found.blob = blob;
@@ -925,7 +918,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc)
_keybox_release_blob (blob);
hd->eof = 1;
}
- else
+ else
{
_keybox_release_blob (blob);
hd->error = rc;
diff --git a/kbx/keybox-update.c b/kbx/keybox-update.c
index 410986c70..75464cf49 100644
--- a/kbx/keybox-update.c
+++ b/kbx/keybox-update.c
@@ -26,6 +26,7 @@
#include <unistd.h>
#include "keybox-defs.h"
+#include "../include/host2net.h"
#define EXTSEP_S "."
@@ -65,12 +66,12 @@ fseeko (FILE * stream, off_t newpos, int whence)
static int
create_tmp_file (const char *template,
char **r_bakfname, char **r_tmpfname, FILE **r_fp)
-{
+{
char *bakfname, *tmpfname;
-
+
*r_bakfname = NULL;
*r_tmpfname = NULL;
-
+
# ifdef USE_ONLY_8DOT3
/* Here is another Windoze bug?:
* you cant rename("pubring.kbx.tmp", "pubring.kbx");
@@ -87,7 +88,7 @@ create_tmp_file (const char *template,
return gpg_error_from_syserror ();
strcpy (bakfname, template);
strcpy (bakfname+strlen(template)-4, EXTSEP_S "kb_");
-
+
tmpfname = xtrymalloc (strlen (template) + 1);
if (!tmpfname)
{
@@ -98,14 +99,14 @@ create_tmp_file (const char *template,
strcpy (tmpfname,template);
strcpy (tmpfname + strlen (template)-4, EXTSEP_S "k__");
}
- else
+ else
{ /* File does not end with kbx, thus we hope we are working on a
modern file system and appending a suffix works. */
bakfname = xtrymalloc ( strlen (template) + 5);
if (!bakfname)
return gpg_error_from_syserror ();
strcpy (stpcpy (bakfname, template), EXTSEP_S "kb_");
-
+
tmpfname = xtrymalloc ( strlen (template) + 5);
if (!tmpfname)
{
@@ -120,7 +121,7 @@ create_tmp_file (const char *template,
if (!bakfname)
return gpg_error_from_syserror ();
strcpy (stpcpy (bakfname,template),"~");
-
+
tmpfname = xtrymalloc ( strlen (template) + 5);
if (!tmpfname)
{
@@ -172,7 +173,7 @@ rename_tmp_file (const char *bakfname, const char *tmpfname,
/* First make a backup file except for secret keyboxes. */
if (!secret)
- {
+ {
#if defined(HAVE_DOSISH_SYSTEM) || defined(__riscos__)
remove (bakfname);
#endif
@@ -181,7 +182,7 @@ rename_tmp_file (const char *bakfname, const char *tmpfname,
return gpg_error_from_syserror ();
}
}
-
+
/* Then rename the file. */
#if defined(HAVE_DOSISH_SYSTEM) || defined(__riscos__)
remove (fname);
@@ -199,7 +200,7 @@ rename_tmp_file (const char *bakfname, const char *tmpfname,
}
return rc;
}
-
+
return 0;
}
@@ -211,7 +212,7 @@ rename_tmp_file (const char *bakfname, const char *tmpfname,
3 = update
*/
static int
-blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
+blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
int secret, off_t start_offset)
{
FILE *fp, *newfp;
@@ -221,14 +222,14 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
char buffer[4096];
int nread, nbytes;
- /* Open the source file. Because we do a rename, we have to check the
+ /* Open the source file. Because we do a rename, we have to check the
permissions of the file */
if (access (fname, W_OK))
return gpg_error_from_syserror ();
fp = fopen (fname, "rb");
if (mode == 1 && !fp && errno == ENOENT)
- {
+ {
/* Insert mode but file does not exist:
Create a new keybox file. */
newfp = fopen (fname, "wb");
@@ -274,10 +275,10 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
fclose (newfp);
goto leave;
}
-
+
/* prepare for insert */
if (mode == 1)
- {
+ {
/* Copy everything to the new file. */
while ( (nread = fread (buffer, 1, DIM(buffer), fp)) > 0 )
{
@@ -297,12 +298,12 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
goto leave;
}
}
-
+
/* Prepare for delete or update. */
- if ( mode == 2 || mode == 3 )
- {
+ if ( mode == 2 || mode == 3 )
+ {
off_t current = 0;
-
+
/* Copy first part to the new file. */
while ( current < start_offset )
{
@@ -313,7 +314,7 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
if (!nread)
break;
current += nread;
-
+
if (fwrite (buffer, nread, 1, newfp) != 1)
{
rc = gpg_error_from_syserror ();
@@ -329,7 +330,7 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
fclose (newfp);
goto leave;
}
-
+
/* Skip this blob. */
rc = _keybox_read_blob (NULL, fp);
if (rc)
@@ -339,10 +340,10 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
return rc;
}
}
-
+
/* Do an insert or update. */
if ( mode == 1 || mode == 3 )
- {
+ {
rc = _keybox_write_blob (blob, newfp);
if (rc)
{
@@ -351,10 +352,10 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
return rc;
}
}
-
+
/* Copy the rest of the packet for an delete or update. */
if (mode == 2 || mode == 3)
- {
+ {
while ( (nread = fread (buffer, 1, DIM(buffer), fp)) > 0 )
{
if (fwrite (buffer, nread, 1, newfp) != 1)
@@ -373,7 +374,7 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
goto leave;
}
}
-
+
/* Close both files. */
if (fclose(fp))
{
@@ -397,7 +398,7 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
-#ifdef KEYBOX_WITH_X509
+#ifdef KEYBOX_WITH_X509
int
keybox_insert_cert (KEYBOX_HANDLE hd, ksba_cert_t cert,
unsigned char *sha1_digest)
@@ -407,12 +408,12 @@ keybox_insert_cert (KEYBOX_HANDLE hd, ksba_cert_t cert,
KEYBOXBLOB blob;
if (!hd)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
if (!hd->kb)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
fname = hd->kb->fname;
if (!fname)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
/* Close this one otherwise we will mess up the position for a next
search. Fixme: it would be better to adjust the position after
@@ -466,12 +467,12 @@ keybox_set_flags (KEYBOX_HANDLE hd, int what, int idx, unsigned int value)
if (!hd->found.blob)
return gpg_error (GPG_ERR_NOTHING_FOUND);
if (!hd->kb)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
if (!hd->found.blob)
return gpg_error (GPG_ERR_NOTHING_FOUND);
fname = hd->kb->fname;
if (!fname)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
off = _keybox_get_blob_fileoffset (hd->found.blob);
if (off == (off_t)-1)
@@ -481,7 +482,7 @@ keybox_set_flags (KEYBOX_HANDLE hd, int what, int idx, unsigned int value)
ec = _keybox_get_flag_location (buffer, length, what, &flag_pos, &flag_size);
if (ec)
return gpg_error (ec);
-
+
off += flag_pos;
_keybox_close_file (hd);
@@ -503,7 +504,7 @@ keybox_set_flags (KEYBOX_HANDLE hd, int what, int idx, unsigned int value)
switch (flag_size)
{
- case 1:
+ case 1:
case 2:
case 4:
if (fwrite (tmp+4-flag_size, flag_size, 1, fp) != 1)
@@ -539,10 +540,10 @@ keybox_delete (KEYBOX_HANDLE hd)
if (!hd->found.blob)
return gpg_error (GPG_ERR_NOTHING_FOUND);
if (!hd->kb)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
fname = hd->kb->fname;
if (!fname)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
off = _keybox_get_blob_fileoffset (hd->found.blob);
if (off == (off_t)-1)
@@ -588,18 +589,18 @@ keybox_compress (KEYBOX_HANDLE hd)
int skipped_deleted;
if (!hd)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
if (!hd->kb)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
if (hd->secret)
return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
fname = hd->kb->fname;
if (!fname)
- return gpg_error (GPG_ERR_INV_HANDLE);
+ return gpg_error (GPG_ERR_INV_HANDLE);
_keybox_close_file (hd);
- /* Open the source file. Because we do a rename, we have to check the
+ /* Open the source file. Because we do a rename, we have to check the
permissions of the file */
if (access (fname, W_OK))
return gpg_error_from_syserror ();
@@ -623,9 +624,8 @@ keybox_compress (KEYBOX_HANDLE hd)
buffer = _keybox_get_blob_image (blob, &length);
if (length > 4 && buffer[4] == BLOBTYPE_HEADER)
{
- u32 last_maint = ((buffer[20] << 24) | (buffer[20+1] << 16)
- | (buffer[20+2] << 8) | (buffer[20+3]));
-
+ u32 last_maint = buf32_to_u32 (buffer+20);
+
if ( (last_maint + 3*3600) > time (NULL) )
{
fclose (fp);
@@ -645,7 +645,7 @@ keybox_compress (KEYBOX_HANDLE hd)
return rc;;
}
-
+
/* Processing loop. By reading using _keybox_read_blob we
automagically skip any blobs flagged as deleted. Thus what we
only have to do is to check all ephemeral flagged blocks whether
@@ -690,24 +690,23 @@ keybox_compress (KEYBOX_HANDLE hd)
continue;
}
- if (_keybox_get_flag_location (buffer, length,
+ if (_keybox_get_flag_location (buffer, length,
KEYBOX_FLAG_BLOB, &pos, &size)
|| size != 2)
{
rc = gpg_error (GPG_ERR_BUG);
break;
}
- blobflags = ((buffer[pos] << 8) | (buffer[pos+1]));
+ blobflags = buf16_to_uint (buffer+pos);
if ((blobflags & KEYBOX_FLAG_BLOB_EPHEMERAL))
{
/* This is an ephemeral blob. */
- if (_keybox_get_flag_location (buffer, length,
+ if (_keybox_get_flag_location (buffer, length,
KEYBOX_FLAG_CREATED_AT, &pos, &size)
|| size != 4)
created_at = 0; /* oops. */
else
- created_at = ((buffer[pos] << 24) | (buffer[pos+1] << 16)
- | (buffer[pos+2] << 8) | (buffer[pos+3]));
+ created_at = buf32_to_u32 (buffer+pos);
if (created_at && created_at < cut_time)
{