[Dovecot] array code issue ?

Tim Ruehsen tim.ruehsen at gmx.de
Fri Apr 20 17:27:54 EEST 2012


Hi,

I just took a look into the dovecot 2.1 sources and just saw a possible issue 
in array.h.

This code snippet as an example:
#static inline void *
#array_get_modifiable_i(struct array *array, unsigned int *count_r)
#{
#	*count_r = array->buffer->used / array->element_size;
#	return buffer_get_modifiable_data(array->buffer, NULL);
#}

array->buffer->used and array->element_size are of type 'size_t' which is 
64bit on amd64 and others while 'count_r' is a 32bit value. At least, I see 
ugly warnings with -Wconversion (which I personally like to use).

I know, it is unlikely that 'array->buffer->used / array->element_size' 
exceeds 32bit range. But then, dovecot's source is so well written, that the 
above code seems to disturb dovecot's code aesthetics.

And who knows... in a few years (when we have THz and TBytes on our desktops) 
emails (and array sizes) might exceed everything that we think of today.

Tim



More information about the dovecot mailing list