Bug#931977: startpar: uninitialized variable

Dmitry Bogatov KAction at debian.org
Sat Jul 13 09:29:00 BST 2019


Package: startpar
Version: 0.61-1
Severity: normal
X-Debbugs-Cc: Jesse Smith <jessefrgsmith at yahoo.ca>

Dear Maintainer,

GCC complains about uninialized variable

	proc.c: In function ‘detect_consoles’:
	proc.c:180:16: warning: ‘tail’ may be used uninitialized in this function [-Wmaybe-uninitialized]
	      tail->tty = name;

and it seems it is right:

	struct console *restrict tail;
	[...]
	if (posix_memalign((void*)&tail, sizeof(void*), alignof(typeof(struct console))) != 0)
		perror("memory allocation");
	tail->next = (struct console*)0;
	tail->tty = name;

According to posix_memalign(3), if posix_memalign functions fails, it
does not alter first argument "tail", which is not initialized otherwise, and
dereference "tail" anyway: perror() just prints error, it does not
affect control flow.

Also, second argument is "sizeof(void*)" which is no bigger then 8,
while malloc(3) guarantees alignment of 8.

So, this quite complicated-looking call to posix_memalign(3) can be
simplified to:

	tail = malloc(sizeof(*tail));
	if (!tail) {
		panic_and_run_in_circles();
	}
-- 
Note, that I send and fetch email in batch, once in a few days.
Please, mention in body of your reply when you add or remove recepients.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://www.chiark.greenend.org.uk/pipermail/debian-init-diversity/attachments/20190713/6dbc8b75/attachment.sig>


More information about the Debian-init-diversity mailing list