[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