The following reply was made to PR bin/184950; it has been noted by GNATS. From: Jilles Tjoelker <jil...@stack.nl> To: bug-follo...@freebsd.org, h...@sendmail.cz Cc: Subject: Re: bin/184950: swapon aborts on gdbe device Date: Sat, 21 Dec 2013 00:11:18 +0100
In PR bin/184950, you wrote: > i have system configured for encrypted swap gdbe_swap_enabled=YES > in fstab > /dev/ada0s1b.bde none swap sw 0 0 > in backtrace: > function swap_on_off() fails at 0x0804a756 which triggers stack > checking routines from libc __stack_chk_fail() printing stack > underflow This bug is probably not that conspicuous because most people use geli instead of gbde for disk encryption. I looked at the code anyway, and I think the compiler and the buffer overflow detector are perfectly right. On platforms where char is signed (i.e. most, with the notable exception of arm), the sprintf() call in swap_on_off_gbde() may write 9 instead of the expected 3 bytes. There is a probability of 12.5% that the last 3 chars are all non-negative and therefore no buffer overflow occurs. The below patch should fix it. I have only tested that it compiles. Index: sbin/swapon/swapon.c =================================================================== --- sbin/swapon/swapon.c (revision 259508) +++ sbin/swapon/swapon.c (working copy) @@ -266,7 +266,8 @@ static const char * swap_on_off_gbde(const char *name, int doingall) { const char *ret; - char pass[64 * 2 + 1], bpass[64]; + char pass[64 * 2 + 1]; + unsigned char bpass[64]; char *dname; int i, error; -- Jilles Tjoelker _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"