fix a potential bug with readlink(2)

According to linux manual READLINK(2)
```
   readlink() places the contents of the symbolic link pathname in the buffer
   buf,  which has size bufsiz. readlink() does not append a null byte to buf.
   It will truncate the contents (to a length of bufsiz characters), in case
   the buffer is too small to hold all of the contents.
```
there is a situation that readlink returns bufsize when the path is long enough
, and in that situation we would write \0 to the invalid address buf[bufsize].
obviously it is not allowed.
Yes, you are correct. Call readlink like `readlink(path, buf, kBUFFSIZE-1)` and it should work properly.

PS: buf[BUFSIZE] = {0}, still having a runtime cost.(effectively equals to do an extra`memset`)