mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
common: Fix iobuf API of filter function for alignment.
* common/iobuf.h (IOBUFCTRL_DESC): Change the call semantics. * common/iobuf.c (iobuf_desc): Add the second argument DESC. (print_chain, iobuf_close, do_open, iobuf_sockopen, iobuf_ioctl) (iobuf_push_filter2, pop_filter, iobuf_write_temp): Change calls of iobuf_desc. (file_filter, file_es_filter, sock_filter, block_filter): Fill the description. * common/t-iobuf.c (every_other_filter, double_filter): Likewise. * g10/armor.c, g10/cipher.c, g10/compress-bz2.c, g10/compress.c, g10/decrypt-data.c, g10/encrypt.c, g10/mdfilter.c, g10/progress.c, g10/textfilter.c: Likewise. -- Newer GCC warns against possible alignment difference of pointers. This change can silence those warnings. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
0617a05eb5
commit
3f52c7da39
@ -578,7 +578,7 @@ file_filter (void *opaque, int control, iobuf_t chain, byte * buf,
|
||||
}
|
||||
else if (control == IOBUFCTRL_DESC)
|
||||
{
|
||||
*(char **) buf = "file_filter(fd)";
|
||||
mem2str (buf, "file_filter(fd)", *ret_len);
|
||||
}
|
||||
else if (control == IOBUFCTRL_FREE)
|
||||
{
|
||||
@ -667,7 +667,7 @@ file_es_filter (void *opaque, int control, iobuf_t chain, byte * buf,
|
||||
}
|
||||
else if (control == IOBUFCTRL_DESC)
|
||||
{
|
||||
*(char **) buf = "estream_filter";
|
||||
mem2str (buf, "estream_filter", *ret_len);
|
||||
}
|
||||
else if (control == IOBUFCTRL_FREE)
|
||||
{
|
||||
@ -765,7 +765,7 @@ sock_filter (void *opaque, int control, iobuf_t chain, byte * buf,
|
||||
}
|
||||
else if (control == IOBUFCTRL_DESC)
|
||||
{
|
||||
*(char **) buf = "sock_filter";
|
||||
mem2str (buf, "sock_filter", *ret_len);
|
||||
}
|
||||
else if (control == IOBUFCTRL_FREE)
|
||||
{
|
||||
@ -993,7 +993,7 @@ block_filter (void *opaque, int control, iobuf_t chain, byte * buffer,
|
||||
}
|
||||
else if (control == IOBUFCTRL_DESC)
|
||||
{
|
||||
*(char **) buf = "block_filter";
|
||||
mem2str (buf, "block_filter", *ret_len);
|
||||
}
|
||||
else if (control == IOBUFCTRL_FREE)
|
||||
{
|
||||
@ -1057,19 +1057,23 @@ block_filter (void *opaque, int control, iobuf_t chain, byte * buffer,
|
||||
return rc;
|
||||
}
|
||||
|
||||
#define MAX_IOBUF_DESC 32
|
||||
/*
|
||||
* Fill the buffer by the description of iobuf A.
|
||||
* The buffer size should be MAX_IOBUF_DESC (or larger).
|
||||
* Returns BUF as (const char *).
|
||||
*/
|
||||
static const char *
|
||||
iobuf_desc (iobuf_t a)
|
||||
iobuf_desc (iobuf_t a, byte *buf)
|
||||
{
|
||||
size_t dummy_len = 0;
|
||||
const char *desc = "?";
|
||||
size_t len = MAX_IOBUF_DESC;
|
||||
|
||||
if (! a || ! a->filter)
|
||||
return desc;
|
||||
memcpy (buf, "?", 2);
|
||||
else
|
||||
a->filter (a->filter_ov, IOBUFCTRL_DESC, NULL, buf, &len);
|
||||
|
||||
a->filter (a->filter_ov, IOBUFCTRL_DESC, NULL,
|
||||
(byte *) & desc, &dummy_len);
|
||||
|
||||
return desc;
|
||||
return buf;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1079,9 +1083,10 @@ print_chain (iobuf_t a)
|
||||
return;
|
||||
for (; a; a = a->chain)
|
||||
{
|
||||
byte desc[MAX_IOBUF_DESC];
|
||||
|
||||
log_debug ("iobuf chain: %d.%d '%s' filter_eof=%d start=%d len=%d\n",
|
||||
a->no, a->subno, iobuf_desc (a), a->filter_eof,
|
||||
a->no, a->subno, iobuf_desc (a, desc), a->filter_eof,
|
||||
(int) a->d.start, (int) a->d.len);
|
||||
}
|
||||
}
|
||||
@ -1126,6 +1131,7 @@ iobuf_close (iobuf_t a)
|
||||
|
||||
for (; a; a = a_chain)
|
||||
{
|
||||
byte desc[MAX_IOBUF_DESC];
|
||||
int rc2 = 0;
|
||||
|
||||
a_chain = a->chain;
|
||||
@ -1135,7 +1141,7 @@ iobuf_close (iobuf_t a)
|
||||
|
||||
if (DBG_IOBUF)
|
||||
log_debug ("iobuf-%d.%d: close '%s'\n",
|
||||
a->no, a->subno, iobuf_desc (a));
|
||||
a->no, a->subno, iobuf_desc (a, desc));
|
||||
|
||||
if (a->filter && (rc2 = a->filter (a->filter_ov, IOBUFCTRL_FREE,
|
||||
a->chain, NULL, &dummy_len)))
|
||||
@ -1275,6 +1281,7 @@ do_open (const char *fname, int special_filenames,
|
||||
size_t len = 0;
|
||||
int print_only = 0;
|
||||
int fd;
|
||||
byte desc[MAX_IOBUF_DESC];
|
||||
|
||||
assert (use == IOBUF_INPUT || use == IOBUF_OUTPUT);
|
||||
|
||||
@ -1321,7 +1328,7 @@ do_open (const char *fname, int special_filenames,
|
||||
file_filter (fcx, IOBUFCTRL_INIT, NULL, NULL, &len);
|
||||
if (DBG_IOBUF)
|
||||
log_debug ("iobuf-%d.%d: open '%s' desc=%s fd=%d\n",
|
||||
a->no, a->subno, fname, iobuf_desc (a), FD2INT (fcx->fp));
|
||||
a->no, a->subno, fname, iobuf_desc (a, desc), FD2INT (fcx->fp));
|
||||
|
||||
return a;
|
||||
}
|
||||
@ -1439,6 +1446,8 @@ iobuf_sockopen (int fd, const char *mode)
|
||||
int
|
||||
iobuf_ioctl (iobuf_t a, iobuf_ioctl_t cmd, int intval, void *ptrval)
|
||||
{
|
||||
byte desc[MAX_IOBUF_DESC];
|
||||
|
||||
if (cmd == IOBUF_IOCTL_KEEP_OPEN)
|
||||
{
|
||||
/* Keep system filepointer/descriptor open. This was used in
|
||||
@ -1446,7 +1455,7 @@ iobuf_ioctl (iobuf_t a, iobuf_ioctl_t cmd, int intval, void *ptrval)
|
||||
anymore. */
|
||||
if (DBG_IOBUF)
|
||||
log_debug ("iobuf-%d.%d: ioctl '%s' keep_open=%d\n",
|
||||
a ? a->no : -1, a ? a->subno : -1, iobuf_desc (a),
|
||||
a ? a->no : -1, a ? a->subno : -1, iobuf_desc (a, desc),
|
||||
intval);
|
||||
for (; a; a = a->chain)
|
||||
if (!a->chain && a->filter == file_filter)
|
||||
@ -1480,7 +1489,7 @@ iobuf_ioctl (iobuf_t a, iobuf_ioctl_t cmd, int intval, void *ptrval)
|
||||
{
|
||||
if (DBG_IOBUF)
|
||||
log_debug ("iobuf-%d.%d: ioctl '%s' no_cache=%d\n",
|
||||
a ? a->no : -1, a ? a->subno : -1, iobuf_desc (a),
|
||||
a ? a->no : -1, a ? a->subno : -1, iobuf_desc (a, desc),
|
||||
intval);
|
||||
for (; a; a = a->chain)
|
||||
if (!a->chain && a->filter == file_filter)
|
||||
@ -1658,8 +1667,9 @@ iobuf_push_filter2 (iobuf_t a,
|
||||
|
||||
if (DBG_IOBUF)
|
||||
{
|
||||
byte desc[MAX_IOBUF_DESC];
|
||||
log_debug ("iobuf-%d.%d: push '%s'\n",
|
||||
a->no, a->subno, iobuf_desc (a));
|
||||
a->no, a->subno, iobuf_desc (a, desc));
|
||||
print_chain (a);
|
||||
}
|
||||
|
||||
@ -1681,10 +1691,11 @@ pop_filter (iobuf_t a, int (*f) (void *opaque, int control,
|
||||
iobuf_t b;
|
||||
size_t dummy_len = 0;
|
||||
int rc = 0;
|
||||
byte desc[MAX_IOBUF_DESC];
|
||||
|
||||
if (DBG_IOBUF)
|
||||
log_debug ("iobuf-%d.%d: pop '%s'\n",
|
||||
a->no, a->subno, iobuf_desc (a));
|
||||
a->no, a->subno, iobuf_desc (a, desc));
|
||||
if (a->use == IOBUF_INPUT_TEMP || a->use == IOBUF_OUTPUT_TEMP)
|
||||
{
|
||||
/* This should be the last filter in the pipeline. */
|
||||
@ -2188,6 +2199,7 @@ iobuf_write_temp (iobuf_t dest, iobuf_t source)
|
||||
size_t
|
||||
iobuf_temp_to_buffer (iobuf_t a, byte * buffer, size_t buflen)
|
||||
{
|
||||
byte desc[MAX_IOBUF_DESC];
|
||||
size_t n;
|
||||
|
||||
while (1)
|
||||
@ -2195,7 +2207,7 @@ iobuf_temp_to_buffer (iobuf_t a, byte * buffer, size_t buflen)
|
||||
int rc = filter_flush (a);
|
||||
if (rc)
|
||||
log_bug ("Flushing iobuf %d.%d (%s) from iobuf_temp_to_buffer failed. Ignoring.\n",
|
||||
a->no, a->subno, iobuf_desc (a));
|
||||
a->no, a->subno, iobuf_desc (a, desc));
|
||||
if (! a->chain)
|
||||
break;
|
||||
a = a->chain;
|
||||
|
@ -404,10 +404,10 @@ int iobuf_cancel (iobuf_t iobuf);
|
||||
called on the pipeline.
|
||||
|
||||
IOBUFCTRL_DESC: Called with this value to get a human-readable
|
||||
description of the filter. * (char **) BUF should set to the
|
||||
NUL-terminated string. Note: you need to keep track of this
|
||||
value and, if necessary, free it when the filter function is
|
||||
called with control set to IOBUFCTRL_FREE.
|
||||
description of the filter. *LEN is the size of the buffer.
|
||||
The description is filled into BUF, NUL-terminated. Always
|
||||
returns 0. When the size of the buffer is shorter than the
|
||||
description, it is truncated and not NUL-terminated.
|
||||
*/
|
||||
int iobuf_push_filter (iobuf_t a, int (*f) (void *opaque, int control,
|
||||
iobuf_t chain, byte * buf,
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "iobuf.h"
|
||||
#include "stringhelp.h"
|
||||
|
||||
/* Return every other byte. In particular, reads two bytes, returns
|
||||
the second one. */
|
||||
@ -16,7 +17,7 @@ every_other_filter (void *opaque, int control,
|
||||
|
||||
if (control == IOBUFCTRL_DESC)
|
||||
{
|
||||
*(char **) buf = "every_other_filter";
|
||||
mem2str (buf, "every_other_filter", *len);
|
||||
}
|
||||
if (control == IOBUFCTRL_UNDERFLOW)
|
||||
{
|
||||
@ -52,7 +53,7 @@ double_filter (void *opaque, int control,
|
||||
|
||||
if (control == IOBUFCTRL_DESC)
|
||||
{
|
||||
* (char **) buf = "double_filter";
|
||||
mem2str (buf, "double_filter", *len);
|
||||
}
|
||||
if (control == IOBUFCTRL_FLUSH)
|
||||
{
|
||||
|
@ -1251,7 +1251,7 @@ armor_filter( void *opaque, int control,
|
||||
release_armor_context (afx);
|
||||
}
|
||||
else if( control == IOBUFCTRL_DESC )
|
||||
*(char**)buf = "armor_filter";
|
||||
mem2str (buf, "armor_filter", *ret_len);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -157,7 +157,7 @@ cipher_filter( void *opaque, int control,
|
||||
gcry_cipher_close (cfx->cipher_hd);
|
||||
}
|
||||
else if( control == IOBUFCTRL_DESC ) {
|
||||
*(char**)buf = "cipher_filter";
|
||||
mem2str (buf, "cipher_filter", *ret_len);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
@ -248,6 +248,6 @@ compress_filter_bz2( void *opaque, int control,
|
||||
zfx->release (zfx);
|
||||
}
|
||||
else if( control == IOBUFCTRL_DESC )
|
||||
*(char**)buf = "compress_filter";
|
||||
mem2str (buf, "compress_filter", *ret_len);
|
||||
return rc;
|
||||
}
|
||||
|
@ -288,7 +288,7 @@ compress_filter( void *opaque, int control,
|
||||
zfx->release (zfx);
|
||||
}
|
||||
else if( control == IOBUFCTRL_DESC )
|
||||
*(char**)buf = "compress_filter";
|
||||
mem2str (buf, "compress_filter", *ret_len);
|
||||
return rc;
|
||||
}
|
||||
#endif /*HAVE_ZIP*/
|
||||
|
@ -425,7 +425,7 @@ mdc_decode_filter (void *opaque, int control, IOBUF a,
|
||||
}
|
||||
else if ( control == IOBUFCTRL_DESC )
|
||||
{
|
||||
*(char**)buf = "mdc_decode_filter";
|
||||
mem2str (buf, "mdc_decode_filter", *ret_len);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
@ -496,7 +496,7 @@ decode_filter( void *opaque, int control, IOBUF a, byte *buf, size_t *ret_len)
|
||||
}
|
||||
else if ( control == IOBUFCTRL_DESC )
|
||||
{
|
||||
*(char**)buf = "decode_filter";
|
||||
mem2str (buf, "decode_filter", *ret_len);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
@ -848,7 +848,7 @@ encrypt_filter (void *opaque, int control,
|
||||
}
|
||||
else if ( control == IOBUFCTRL_DESC )
|
||||
{
|
||||
*(char**)buf = "encrypt_filter";
|
||||
mem2str (buf, "encrypt_filter", *ret_len);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ md_filter( void *opaque, int control,
|
||||
*ret_len = i;
|
||||
}
|
||||
else if( control == IOBUFCTRL_DESC )
|
||||
*(char**)buf = "md_filter";
|
||||
mem2str (buf, "md_filter", *ret_len);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -131,7 +131,7 @@ progress_filter (void *opaque, int control,
|
||||
release_progress_context (pfx);
|
||||
}
|
||||
else if (control == IOBUFCTRL_DESC)
|
||||
*(char**)buf = "progress_filter";
|
||||
mem2str (buf, "progress_filter", *ret_len);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -150,7 +150,7 @@ text_filter( void *opaque, int control,
|
||||
tfx->buffer = NULL;
|
||||
}
|
||||
else if( control == IOBUFCTRL_DESC )
|
||||
*(char**)buf = "text_filter";
|
||||
mem2str (buf, "text_filter", *ret_len);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user