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.
It is trivial testing. if readlink succeed, it returns the bytes it used (NULL is not counted). So the maximum value is the size of buffer minus 1. However, if the size of the buffer is not enough, it still returns the bytes it used and the maximum value is the size of buffer (no minus 1). Then here comes the invalid memory access with buf[l] (which equals to buf[kBUFFMAX])

To ensure this, you can do this testing yourself:
1. ``ln -sf /usr /tmp``
2. compile and run this program
```
#include <unistd.h>
#include <stdio.h>

#define BUFFMAX 3
int main () {
  char buf[BUFFMAX];
  ssize_t size = readlink("/tmp/usr", buf, BUFFMAX);
  printf("%ld\n", size);
}
```
3. check if the output is BUFF_SIZE 3.