Fortify source is default since gcc-4.3 and thus default build is affected. Problem is that glibc explicitly requires that second argument to realpath(), device_file_or_mount_point in this case, must be larger then PATH_MAX (see info libc: On systems which define `PATH_MAX' ... the buffer must be large enough for a pathname of this size.). Since HAL_PATH_MAX=1024 is smaller then PATH_MAX=4096 this causes this abort.
After adding support for relative paths in umount.hal[1] it aborts if built with _FORTIFY_SOURCE=2:
# umount.hal /boot/ so.6(__ fortify_ fail+0x37) [0x7f346e5127b7 ] so.6(+0xe2640) [0x7f346e510640 ] so.6(+0xe2cab) [0x7f346e510cab ] hal(main+ 0xaa)[0x400e6a] so.6(__ libc_start_ main+0xfd) [0x7f346e44cbbd ] hal[0x400cf9]
*** buffer overflow detected ***: umount.hal terminated
======= Backtrace: =========
/lib/libc.
/lib/libc.
/lib/libc.
umount.
/lib/libc.
umount.
======= Memory map: ========
[snip]
Fortify source is default since gcc-4.3 and thus default build is affected. Problem is that glibc explicitly requires that second argument to realpath(), device_ file_or_ mount_point in this case, must be larger then PATH_MAX (see info libc: On systems which define `PATH_MAX' ... the buffer must be large enough for a pathname of this size.). Since HAL_PATH_MAX=1024 is smaller then PATH_MAX=4096 this causes this abort.
[1] http:// cgit.freedeskto p.org/hal/ commit/ ?id=6d8eed9015a 6ca648fe1dad575 621b6ea959a748