The function snprintf() returns the number of characters that would have been
written in the buffer if the buffer size had been sufficiently large,
not counting the terminating null character.
Hence, the value returned is not guaranteed to be smaller than the buffer size.
Check the return value of snprintf() to prevent leaking stack contents to the
guest by accident.
Also, for debug builds, add an assertion to ensure that the assumption made on
the size of the destination buffer still holds.
Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
unsigned int e_namelen, e_len;
e_namelen = snprintf(name, sizeof(name), template->e.name, id);
+ if ( e_namelen >= sizeof(name) )
+ {
+ ASSERT_UNREACHABLE();
+ return -ENOBUFS;
+ }
e_len = DIRENTRY_SIZE(e_namelen);
direntry.e.pad = 0;
direntry.e.type = template->e.type;