Clean up some more warnings

This commit is contained in:
Jeremy Lakeman 2016-11-07 14:16:51 +10:30
parent d11fef3226
commit 1e70bcaac6
13 changed files with 61 additions and 76 deletions

View File

@ -77,9 +77,8 @@ CFLAGS+=-DSQLITE_THREADSAFE=0 \
-DSQLITE_OMIT_LOAD_EXTENSION \
-DSQLITE_OMIT_VIRTUALTABLE \
-DSQLITE_OMIT_AUTHORIZATION
CFLAGS+=-fPIC
CFLAGS+=-Wall -Werror
CFLAGS+=-DSERVAL_ENABLE_DEBUG=1
CFLAGS+=-fPIC -DSERVAL_ENABLE_DEBUG=1 -Wall -Werror -Wextra -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2
# Solaris magic
CFLAGS+=-DSHA2_USE_INTTYPES_H -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__=1
# OSX magic to compensate for the Solaris magic
@ -94,11 +93,6 @@ INSTALL_DATA= $(INSTALL) -m 644
-include $(SOURCE_PREFIX)Makefile.dbg
# More warnings, discover problems that only happen on some archs
CFLAGS+=-Wextra
# Security enhancements from Debian
CFLAGS+=-Wformat -Werror=format-security -D_FORTIFY_SOURCE=2
DEFS= @DEFS@
CONFIG_H = @CONFIG_H@

View File

@ -28,7 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "conf.h"
#include "debug.h"
struct cli_vtable cli_vtable_jni;
static struct cli_vtable cli_vtable_jni;
struct jni_context {
JNIEnv *jni_env;
@ -44,22 +44,22 @@ struct jni_context {
#define OUTV_BUFFER_ALLOCSIZE (8192)
jclass IJniResults = NULL;
jmethodID putString;
jmethodID putLong;
jmethodID putDouble;
jmethodID putHexValue;
jmethodID putBlob;
jmethodID startTable;
jmethodID setColumnName;
jmethodID endTable;
static jclass IJniResults = NULL;
static jmethodID putString;
static jmethodID putLong;
static jmethodID putDouble;
static jmethodID putHexValue;
static jmethodID putBlob;
static jmethodID startTable;
static jmethodID setColumnName;
static jmethodID endTable;
static int outv_growbuf(struct jni_context *context, size_t needed)
{
assert(context->outv_current <= context->outv_limit);
size_t remaining = (size_t)(context->outv_limit - context->outv_current);
if (remaining < needed) {
size_t cursize = context->outv_current - context->outv_buffer;
size_t cursize = (size_t)(context->outv_current - context->outv_buffer);
size_t newsize = cursize + needed;
// Round up to nearest multiple of OUTV_BUFFER_ALLOCSIZE.
newsize = newsize + OUTV_BUFFER_ALLOCSIZE - ((newsize - 1) % OUTV_BUFFER_ALLOCSIZE + 1);
@ -115,7 +115,7 @@ static int put_string(struct jni_context *context, const char *str)
return 0;
}
static int put_byte_array(struct jni_context *context, jbyte *blob, jsize length, jmethodID method, const char *method_name)
static int put_byte_array(struct jni_context *context, const jbyte *blob, jsize length, jmethodID method, const char *method_name)
{
jbyteArray arr = NULL;
if (context->jni_exception)
@ -204,7 +204,7 @@ JNIEXPORT jint JNICALL Java_org_servalproject_servaldna_ServalDCommand_rawComman
if ((r=initJniTypes(env))!=0)
return r;
unsigned char status = 0; // to match what the shell gets: 0..255
uint8_t status = 0; // to match what the shell gets: 0..255
// Construct argv, argc from this method's arguments.
jsize len = (*env)->GetArrayLength(env, args);
@ -246,7 +246,7 @@ JNIEXPORT jint JNICALL Java_org_servalproject_servaldna_ServalDCommand_rawComman
context.outv_current = context.outv_buffer;
// Execute the command.
context.jni_env = env;
status = commandline_main(&cli_context, NULL, (int)len, argv);
status = (uint8_t)commandline_main(&cli_context, NULL, (int)len, argv);
}
// free any temporary output buffer
@ -299,7 +299,7 @@ static void jni_vprintf(struct cli_context *cli_context, const char *fmt, va_lis
DEBUGF(jni, "%s, ...", alloca_str_toprint(fmt));
struct jni_context *context = jni_context(cli_context);
assert(context->outv_current <= context->outv_limit);
size_t avail = context->outv_limit - context->outv_current;
size_t avail = (size_t)(context->outv_limit - context->outv_current);
va_list aq;
va_copy(aq, ap);
int count = vsnprintf(context->outv_current, avail, fmt, aq);
@ -311,9 +311,9 @@ static void jni_vprintf(struct cli_context *cli_context, const char *fmt, va_lis
context->outv_current += count;
return;
}
if (outv_growbuf(context, count) == -1)
if (outv_growbuf(context, (size_t)count) == -1)
return;
avail = context->outv_limit - context->outv_current;
avail = (size_t)(context->outv_limit - context->outv_current);
va_copy(aq, ap);
count = vsprintf(context->outv_current, fmt, aq);
va_end(aq);
@ -365,19 +365,19 @@ static void jni_put_hexvalue(struct cli_context *cli_context, const unsigned cha
{
DEBUGF(jni, "%s", alloca_tohex(value, length));
struct jni_context *context = jni_context(cli_context);
put_byte_array(context, (jbyte*)value, length, putHexValue, "putHexValue");
put_byte_array(context, (const jbyte*)value, (jsize)length, putHexValue, "putHexValue");
}
static void jni_put_blob(struct cli_context *cli_context, const unsigned char *blob, size_t length, const char *UNUSED(delim_opt))
{
DEBUGF(jni, "%s", alloca_tohex(blob, length));
struct jni_context *context = jni_context(cli_context);
put_byte_array(context, (jbyte*)blob, length, putBlob, "putBlob");
put_byte_array(context, (const jbyte*)blob, (jsize)length, putBlob, "putBlob");
}
static void jni_start_table(struct cli_context *cli_context, size_t column_count, const char *column_names[])
{
DEBUGF(jni, "%s", alloca_argv(column_count, column_names));
DEBUGF(jni, "%s", alloca_argv((int)column_count, column_names));
struct jni_context *context = jni_context(cli_context);
if (context->jni_exception)
return;
@ -445,7 +445,7 @@ static void jni_flush(struct cli_context *UNUSED(cli_context))
// nop
}
struct cli_vtable cli_vtable_jni = {
static struct cli_vtable cli_vtable_jni = {
.delim = jni_delim,
.write = jni_write,
.puts = jni_puts,

View File

@ -26,10 +26,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "conf.h"
#include "instance.h"
JNIEnv *server_env=NULL;
jclass IJniServer= NULL;
jmethodID aboutToWait, wokeUp, started;
jobject JniCallback;
static JNIEnv *server_env=NULL;
static jclass IJniServer= NULL;
static jmethodID aboutToWait, wokeUp, started;
static jobject JniCallback;
static time_ms_t waiting(time_ms_t now, time_ms_t next_run, time_ms_t next_wakeup)
{

24
os.h
View File

@ -74,27 +74,21 @@ time_ms_t sleep_ms(time_ms_t milliseconds);
struct timeval time_ms_to_timeval(time_ms_t);
#ifndef HAVE_BZERO
__SERVAL_DNA__OS_INLINE void bzero(void *buf, size_t len) {
memset(buf, 0, len);
}
#define bzero(B,L) memset((B),0,(L))
#endif
#ifndef HAVE_BCOPY
__SERVAL_DNA__OS_INLINE void bcopy(const void *src, void *dst, size_t len) {
memcpy(dst, src, len);
}
#define bcopy(S,D,L) memcpy((D),(S),(L))
#endif
#ifndef HAVE_BCMP
__SERVAL_DNA__OS_INLINE int bcmp(const void *s1, const void *s2, size_t n) {
// bcmp() is only an equality test, not an order test, so its return value
// is not specified as negative or positive, only non-zero. Hoewver
// memcmp() is an order test. We deliberately discard negative return
// values from memcmp(), to avoid misleading developers into assuming that
// bcmp() is an ordering operator and writing code that depends on that,
// which of course would fail on platforms with a native bcmp() function.
return memcmp(s1, s2, n) != 0;
}
// bcmp() is only an equality test, not an order test, so its return value
// is not specified as negative or positive, only non-zero. Hoewver
// memcmp() is an order test. We deliberately discard negative return
// values from memcmp(), to avoid misleading developers into assuming that
// bcmp() is an ordering operator and writing code that depends on that,
// which of course would fail on platforms with a native bcmp() function.
#define bcmp(S1,S2,N) (memcmp((S1),(S2),(N))!=0)
#endif
/* If there is no lseek64(2) system call but off_t is 64 bits, then we can use

View File

@ -340,7 +340,7 @@ int rhizome_fetch_delay_ms();
#define RHIZOME_HASH_SUBDIR "hash"
extern __thread sqlite3 *rhizome_db;
serval_uuid_t rhizome_db_uuid;
extern serval_uuid_t rhizome_db_uuid;
int rhizome_opendb();
int rhizome_close_db();
@ -518,7 +518,6 @@ int is_debug_rhizome();
int is_debug_rhizome_ads();
enum sqlbind_type {
END = 0xbabecafe,
INT = 1, // int value
INT_TOSTR, // int value
UINT_TOSTR, // unsigned value
@ -539,9 +538,10 @@ enum sqlbind_type {
TEXT_TOUPPER, // const char *text,
TEXT_LEN_TOUPPER, // const char *text, unsigned bytes
SERVAL_UUID_T, // const serval_uuid_t *uuidp
NUL = 1 << 15, // NUL (no arg) ; NUL|INT, ...
INDEX = 0xfade0000, // INDEX|INT, int index, ...
NAMED = 0xdead0000 // NAMED|INT, const char *label, ...
NUL = 1 << 8, // NUL (no arg) ; NUL|INT, ...
INDEX = 1 << 9, // INDEX|INT, int index, ...
NAMED = 1 << 10, // NAMED|INT, const char *label, ...
END = 1 << 11,
};
sqlite3_stmt *_sqlite_prepare(struct __sourceloc, int log_level, sqlite_retry_state *retry, const char *sqltext);

View File

@ -564,8 +564,8 @@ int _sqlite_vbind(struct __sourceloc __whence, int log_level, sqlite_retry_state
int index;
const char *name = NULL;
strbuf ext = NULL;
if ((typ & 0xffff0000) == INDEX) {
typ &= 0xffff;
if (typ & INDEX) {
typ &= ~INDEX;
index = va_arg(ap, int);
++argnum;
if (index < 1 || index > index_limit) {
@ -574,8 +574,8 @@ int _sqlite_vbind(struct __sourceloc __whence, int log_level, sqlite_retry_state
}
if (IF_DEBUG(rhizome))
strbuf_sprintf((ext = strbuf_alloca(35)), "|INDEX(%d)", index);
} else if ((typ & 0xffff0000) == NAMED) {
typ &= 0xffff;
} else if (typ & NAMED) {
typ &= ~NAMED;
name = va_arg(ap, const char *);
++argnum;
index = sqlite3_bind_parameter_index(statement, name);
@ -589,13 +589,10 @@ int _sqlite_vbind(struct __sourceloc __whence, int log_level, sqlite_retry_state
strbuf_toprint_quoted(ext, "\"\"", name);
strbuf_puts(ext, ")");
}
} else if ((typ & 0xffff0000) == 0) {
} else {
index = ++index_counter;
if (IF_DEBUG(rhizome))
ext = strbuf_alloca(10);
} else {
FATALF("at bind arg %u, unsupported bind code typ=0x%08x: %s", argnum, typ, sqlite3_sql(statement));
return -1;
}
#define BIND_DEBUG(TYP,FUNC,ARGFMT,...) \
DEBUGF(rhizome_sql_bind, "%s%s %s(%d," ARGFMT ") %s", #TYP, strbuf_str(ext), #FUNC, index, ##__VA_ARGS__, sqlite3_sql(statement))

View File

@ -39,7 +39,7 @@ int main(int argc,char **argv)
return 1;
}
int (*servald_main)(int, char **) = dlsym(h, entry_point);
int (*servald_main)(int, char **) = (int (*)(int, char **))dlsym(h, entry_point);
if (!servald_main) {
fprintf(stderr, "Could not resolve %s in %s\n", entry_point, libservald_path);
return 1;

View File

@ -302,14 +302,14 @@ ssize_t _send_message(struct __sourceloc __whence, int fd, const struct socket_a
ssize_t _recv_message_frag(struct __sourceloc __whence, int fd, struct socket_address *address, int *ttl, struct fragmented_data *data)
{
struct cmsghdr cmsgs[16];
uint8_t cmsg_buff[1024];
struct msghdr msg = {
.msg_name = (void *)&address->addr,
.msg_namelen = sizeof(address->raw),
.msg_iov = data->iov,
.msg_iovlen = data->fragment_count,
.msg_control = cmsgs,
.msg_controllen = sizeof cmsgs,
.msg_control = cmsg_buff,
.msg_controllen = sizeof cmsg_buff,
.msg_flags = 0
};
bzero(address, sizeof(struct socket_address));
@ -318,7 +318,7 @@ ssize_t _recv_message_frag(struct __sourceloc __whence, int fd, struct socket_ad
WHYF_perror("recvmsg(%d,{name=%p,namelen=%u,iov=%s,control=%p,controllen=%u},0)",
fd, &address->addr, (unsigned) address->addrlen,
alloca_iovec(data->iov, data->fragment_count),
cmsgs, (unsigned) sizeof cmsgs);
cmsg_buff, (unsigned) sizeof cmsg_buff);
address->addrlen = msg.msg_namelen;
if (ttl && ret > 0) {
struct cmsghdr *cmsg;

2
str.c
View File

@ -563,7 +563,7 @@ size_t strn_fromprint(char *dst, size_t dstsiz, const char *src, size_t srclen,
void str_digest_passphrase(unsigned char *dstBinary, size_t dstsiz, const char *passphrase)
{
return strn_digest_passphrase(dstBinary, dstsiz, passphrase, strlen(passphrase));
strn_digest_passphrase(dstBinary, dstsiz, passphrase, strlen(passphrase));
}
void strn_digest_passphrase(unsigned char *dstBinary, size_t dstsiz, const char *passphrase, size_t passlen)

2
str.h
View File

@ -237,7 +237,7 @@ size_t toprint_len(const char *srcBuf, size_t srcBytes, const char quotes[2]);
size_t toprint_str_len(const char *srcStr, const char quotes[2]);
size_t strn_fromprint(char *dst, size_t dstsiz, const char *src, size_t srclen, char endquote, const char **afterp);
#define alloca_toprint_quoted(dstsiz,buf,len,quotes) toprint((char *)alloca((dstsiz) == -1 ? toprint_len((const char *)(buf),(len), (quotes)) + 1 : (size_t)(dstsiz)), (size_t)(dstsiz), (const char *)(buf), (len), (quotes))
#define alloca_toprint_quoted(dstsiz,buf,len,quotes) toprint((char *)alloca((dstsiz) == -1 ? toprint_len((const char *)(buf),(len), (quotes)) + 1 : (size_t)(dstsiz)), (ssize_t)(dstsiz), (const char *)(buf), (len), (quotes))
#define alloca_toprint(dstsiz,buf,len) alloca_toprint_quoted(dstsiz,buf,len,"``")
#define alloca_str_toprint_quoted(str, quotes) toprint_str((char *)alloca(toprint_str_len((str), (quotes)) + 1), -1, (str), (quotes))

View File

@ -343,9 +343,9 @@ typedef const struct strbuf *const_strbuf;
strbuf strbuf_init(strbuf sb, char *buffer, ssize_t size);
#ifdef __GNUC__
__STRBUF_INLINE strbuf __strbuf_init_chk(strbuf sb, char *buffer, ssize_t size, size_t chk) {
if (chk != (size_t)-1 && size != (ssize_t)-1)
assert((size_t)size <= chk); // buffer overflow
__STRBUF_INLINE strbuf __strbuf_init_chk(strbuf sb, char *buffer, ssize_t size, ssize_t chk) {
if (chk != -1 && size != -1)
assert(size <= chk); // buffer overflow
return strbuf_init(sb, buffer, size);
}
#endif
@ -562,7 +562,7 @@ __STRBUF_INLINE ssize_t strbuf_size(const_strbuf sb) {
* @author Andrew Bettison <andrew@servalproject.com>
*/
__STRBUF_INLINE size_t strbuf_len(const_strbuf sb) {
return strbuf_end(sb) - sb->start;
return (size_t)(strbuf_end(sb) - sb->start);
}
/** Return remaining space in the strbuf, not counting the terminating nul.
@ -584,7 +584,7 @@ __STRBUF_INLINE size_t strbuf_remaining(const_strbuf sb) {
* @author Andrew Bettison <andrew@servalproject.com>
*/
__STRBUF_INLINE size_t strbuf_count(const_strbuf sb) {
return sb->current - sb->start;
return (size_t)(sb->current - sb->start);
}
/** Return true iff the strbuf has been overrun, ie, any appended string has

5
uri.c
View File

@ -29,12 +29,13 @@ static size_t _uri_encodev(int www_form, char *const dstUrienc, ssize_t dstsiz,
{
char * dst = dstUrienc;
char * const dstend = dstUrienc + dstsiz;
uint8_t *ptr = (uint8_t *)(*iovp)->iov_base;
while (*iovcntp && (dstsiz == -1 || dst < dstend)) {
if ((*iovp)->iov_len == 0) {
--*iovcntp;
++*iovp;
} else {
unsigned char c = *(unsigned char *)(*iovp)->iov_base;
uint8_t c = *ptr;
if (www_form && c == ' ') {
if (dstUrienc)
*dst = '+';
@ -53,10 +54,10 @@ static size_t _uri_encodev(int www_form, char *const dstUrienc, ssize_t dstsiz,
} else {
break;
}
++(*iovp)->iov_base;
--(*iovp)->iov_len;
}
}
(*iovp)->iov_base = ptr;
return dst - dstUrienc;
}

View File

@ -76,7 +76,6 @@ typedef struct _xprintf {
#define _XPRINTF(F,C) ((XPRINTF){(F),(C)})
void xprintf(XPRINTF xpf, const char *fmt, ...) __attribute__ ((__ATTRIBUTE_format(printf,2,3)));
;
void vxprintf(XPRINTF xpf, const char *fmt, va_list);
void xputs(const char *str, XPRINTF xpf);
void xputc(char c, XPRINTF xpf);